ランタイム API 呼び出しの概要
ランタイム API またはバイサイド API を使用して、構成を作成、更新、および保存します。
CPQ API は、ランタイム API と管理 API の 2 つのカテゴリに分類されます。この記事では、ランタイム API を紹介します。
ランタイム API は構成の作成、読み取り、更新、削除に使用され、 CPQ エンドユーザーコンフィギュレーターで使用されるものと同じです。これらは一般に「バイサイド」API とも呼ばれます。
すべての API 呼び出しは、ベース URL 形式 https://<yourTenant>.<sector>.logik.io/api/ に従います。この URL では、yourTenant は一意のリストされた CPQ テナント名を表し、セクターは CPQ 環境が配置されているセクターを表します。
Salesforce ユーザーの場合は、Salesforce アカウントで [セットアップ ] をクリックしてテナント URL を見つけることができます。[クイック検索] ボックスで、[ カスタム設定] を検索またはクリックし、[ 管理] をクリックします。テナント URL が表示されます。
すべてのランタイム API 呼び出しでは、ランタイムクライアントで使用可能な一意のトークンを使用したベアラートークン認証が必要です。また、ランタイムクライアントで構成された作成元 URL が要求ヘッダーに表示されることも必要になります。
認証するには、Admin → Utilities → Runtime Client からベアラートークンと作成元 URL CPQ 収集します。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: []
CPQ API の詳細については、次の 8 つのスライドからなるプレゼンテーションを参照してください。