런타임 API 호출 소개
런타임 또는 바이사이드 API는 구성을 생성, 업데이트 및 저장하는 데 사용됩니다.
CPQ API는 런타임 API와 관리 API의 두 가지 범주로 나뉩니다. 이 기사에서는 런타임 API를 소개합니다.
런타임 API는 구성을 생성, 읽기, 업데이트 및 삭제하는 데 사용되며 최종 사용자 구성기에서 CPQ 사용되는 것과 동일한 API입니다. 일반적으로 "바이사이드" API라고도 합니다.
모든 API 호출은 기본 URL 형식( https://<yourTenant>.<sector>.logik.io/api/)을 따릅니다. 이 URL에서 yourTenant는 나열 CPQ 된 고유한 테넌트 이름을 나타내고 섹터는 환경 CPQ 이 위치한 섹터입니다.
Salesforce 사용자인 경우 Salesforce 계정에서 설정을 클릭하여 테넌트 URL을 찾을 수 있습니다. 빠른 찾기 상자에서 사용자 지정 설정을 검색하거나 클릭한 다음 관리를 클릭합니다. 테넌트 URL이 표시됩니다.
모든 런타임 API 호출에는 런타임 클라이언트에서 사용할 수 있는 고유 토큰을 사용하여 전달자 토큰 인증이 필요합니다. 또한 런타임 클라이언트에 구성된 원본 URL이 요청 헤더에 나타나야 합니다.
인증하려면 Admin → Utilities → Runtime Client에서 CPQ 전달자 토큰과 원본 URL을 수집합니다. Postman의 각 API 호출에 대해 다음 헤더를 추가합니다.
Key: Origin
Value: <yourOrigin>
Postman 또는 API 도구의 권한 부여 탭에서 전달자 토큰을 선택한 다음 관리자에서 CPQ 복사한 고유 토큰을 입력합니다.
기본 런타임 API 호출
- 초기 구성 호출은 구성 가능한 제품의 ID를 전달하여 구성 프로세스를 시작하고 나중에 사용할 수 있도록 구성 UUID를 반환합니다.
예(cURL):
curl -X POST https://<yourTenant>.<sector>.logik.io/api/ \ -H "Authorization: Bearer <yourBearerToken>" \ -H "Origin: <yourOrigin>" \ -H "Content-Type: application/json" \ -d '{ "sessionContext": { "stateful": true }, "partnerData": { "product": { "configuredProductId": "{{configProductId}}", } }, "fields": [] }'예(응답):
{ "configurationId": "{uuid}"또한 이 API 호출을 사용하여 재구성하여 이전에 저장한 구성 UUID를 POST 본문에 제공합니다.
재구성(cURL) 예:
curl -X POST https://<yourTenant>.<sector>.logik.io/api/ \ -H "Authorization: Bearer <yourBearerToken>" \ -H "Origin: <yourOrigin>" \ -H "Content-Type: application/json" \ -d '{ "sessionContext": { "stateful": true }, "partnerData": { "product": { "configuredProductId": "{{configProductId}}", "configurationAttributes": { "LGK__ConfigurationId__c": "{{uuid}}" } } }, "fields": [] }' - 구성 업데이트 호출은 구성 UUID 및 원하는 필드 값을 전달하여 기존 구성을 업데이트하고 가능한 모든 필드와 해당 값을 반환합니다.
예(cURL):
curl -X PATCH https://<yourTenant>.<sector>.logik.io/api/{uuid} \ -H "Authorization: Bearer <yourBearerToken>" \ -H "Origin: <yourOrigin>" \ -H "Content-Type: application/json" \ -d '{ "fields": { "color": "blue", "size": "large" } }'예(응답):
{ "fields": { "color": "blue", "size": "large", "price": "$100" } } - BOM 가져오기 호출은 구성 UUID를 전달하고 구성에 대한 BOM(자재 명세서)을 검색합니다. 구성에 대한 현재 BOM을 반환합니다.
예(cURL):
curl -X GET https://<yourTenant>.<sector>.logik.io/api/{uuid}/bom \ -H "Authorization: Bearer <yourBearerToken>" \ -H "Origin: <yourOrigin>"예(응답):
{ "bom": [ { "item": "componentA", "quantity": 2 }, { "item": "componentB", "quantity": 1 } ] } - 저장 호출은 구성을 에 저장합니다.CPQ 이렇게 하면 나중에 구성 UUID를 사용하고 다시 구성할 수 있습니다.
이 프로세스는 Salesforce의 사용자 지정 객체, 구성 필드 데이터 세트, 구성 라인 항목을 비동기식으로 채웁니다.
예(cURL):
curl --location --request PATCH 'https://mpanigrahi-demo.demo01.logik.io/api/6d0ef6fd-4c88-44f3-a296-b03421c369c6' \ --header 'Content-Type: application/json' \ --header 'Accept: application/json' \ --header 'Origin: https://mpanigrahi-demo.demo01.logik.io' \ --header 'Authorization: <<RUNTIME TOKEN>>' \ --header 'Cookie: LGKSESSION=NDA5OWJmNmEtNDhhOS00YTc4LTk3ODktZTg0OGYyOGIwMjZk' \ --data '{"fields":[{"variableName":"name_d1","value":"megha","dataType":"text"}],"responseState":{"setPagination":{"collections":{"pageSize":10,"pageNumber":0},"fields":{"pageSize":10,"pageNumber":0},"componentTypes":{"pageSize":10,"pageNumber":0}},"defaultPagination":{"pageSize":10,"pageNumber":0},"searchValues":{}}}'샘플 코드에 대한 자세한 내용은 전체 API 참조 문서를 참조하십시오.
JSON 샘플
info:
_postman_id: e8370e58-ff12-4662-adac-3e35052b59ba name: Sample Runtime Calls
schema: https://schema.getpostman.com/json/collection/v2.1.0/collection.json item:
name: 'Logik: Initial Configure' event:
listen: test script:
exec:
"var jsonData = JSON.parse(responseBody);\r"
pm.collectionVariables.set("configId", jsonData.uuid); type: text/javascript
request: auth:
type: bearer bearer:
- key: token
value: '{{logikAccessToken}}' type: string
method: POST header:
key: content-type value: application/json type: text
key: Origin
value: '{{logikOriginHeader}}' type: text
body:
mode: raw
raw: " {\r\n \"sessionContext\": {\r\n \"stateful\": true\r\n },\r\n \"partnerData\": {\r\n \"product options:
raw:
language: json
url:
raw: '{{logik}}' host:
- '{{logik}}' response: []
name: 'Logik: Update Configuration' request:
auth:
type: bearer bearer:
key: token
value: '{{logikAccessToken}}' type: string
method: PATCH header:
key: content-type value: application/json type: text
key: Origin
value: '{{logikOriginHeader}}' type: text
body:
mode: raw
raw: "{\r\n \"fields\": [\r\n {\"variableName\":\"juBool1\",\"value\":\"True\"},\r\n {\"variableName\":\"juBool2\",\"value options:
raw:
language: json
url:
raw: '{{logik}}{{configId}}' host:
- '{{logik}}{{configId}}' response: []
name: '(Optional): Logik: Retrieve BOM' request:
auth:
type: bearer bearer:
key: token
value: '{{logikAccessToken}}' type: string
method: GET header:
key: content-type value: application/json type: text
key: Origin
value: '{{logikOriginHeader}}' type: text
url:
raw: '{{logik}}{{configId}}/bom' host:
'{{logik}}{{configId}}' path:
bom response: []
name: 'Logik: Save' event:
listen: test script:
exec:
"var jsonData = JSON.parse(responseBody);\r"
"pm.collectionVariables.set(\"logikTotal\", jsonData.total);\r"
pm.collectionVariables.set("logikLineItems", jsonData.products); type: text/javascript
request: auth:
type: bearer bearer:
- key: token
value: '{{logikAccessToken}}' type: string
method: PATCH header:
key: content-type value: application/json type: text
key: Origin
value: '{{logikOriginHeader}}' type: text
body:
mode: raw
raw: "{\r\n \"fields\": []\r\n}" options:
raw:
language: json
url:
raw: '{{logik}}{{configId}}?save=true' host:
'{{logik}}{{configId}}' query:
key: save value: 'true'
response: []
name: '(Optional): Logik: Reconfigure' event:
listen: test script:
exec:
"var jsonData = JSON.parse(responseBody);\r"
pm.collectionVariables.set("configId", jsonData.uuid); type: text/javascript
request: auth:
type: bearer bearer:
- key: token
value: '{{logikAccessToken}}' type: string
method: POST header:
key: Origin
value: '{{logikOriginHeader}}' type: default
key: Authorization
value: Bearer Armqrz8jv-1C05mcWmcrDnXZlV9bbOTmGg type: default
disabled: true body:
mode: raw
raw: "{\r\n \"sessionContext\": {\r\n \"stateful\": true\r\n },\r\n \"partnerData\": {\r\n \"product\": {\r\n \"configuredProductId\" options:
raw:
language: json
url:
raw: '{{logik}}' host:
- '{{logik}}' response: []
API에 대한 CPQ 자세한 내용은 다음 8개 슬라이드 프레젠테이션을 참조하십시오.