런타임 API 호출 소개

  • 릴리스 버전: Australia
  • 업데이트 날짜 2026년 03월 12일
  • 소요 시간: 11분
  • 런타임 또는 바이사이드 API는 구성을 생성, 업데이트 및 저장하는 데 사용됩니다.

    CPQ API는 런타임 API와 관리 API의 두 가지 범주로 나뉩니다. 이 기사에서는 런타임 API를 소개합니다.

    런타임 API는 구성을 생성, 읽기, 업데이트 및 삭제하는 데 사용되며 최종 사용자 구성기에서 CPQ 사용되는 것과 동일한 API입니다. 일반적으로 "바이사이드" API라고도 합니다.

    주:
    샘플 코드 및 기타 세부 정보에 대한 최신 정보는 API 설명서를 참조하십시오.

    모든 API 호출은 기본 URL 형식( https://<yourTenant>.<sector>.logik.io/api/)을 따릅니다. 이 URL에서 yourTenant는 나열 CPQ 된 고유한 테넌트 이름을 나타내고 섹터는 환경 CPQ 이 위치한 섹터입니다.

    Salesforce 사용자인 경우 Salesforce 계정에서 설정을 클릭하여 테넌트 URL을 찾을 수 있습니다. 빠른 찾기 상자에서 사용자 지정 설정을 검색하거나 클릭한 다음 관리를 클릭합니다. 테넌트 URL이 표시됩니다.

    런타임 API 호출

    모든 런타임 API 호출에는 런타임 클라이언트에서 사용할 수 있는 고유 토큰을 사용하여 전달자 토큰 인증이 필요합니다. 또한 런타임 클라이언트에 구성된 원본 URL이 요청 헤더에 나타나야 합니다.

    인증하려면 Admin → Utilities → Runtime Client에서 CPQ 전달자 토큰과 원본 URL을 수집합니다. Postman의 각 API 호출에 대해 다음 헤더를 추가합니다.

    Key: Origin
    Value: <yourOrigin>

    런타임 API 호출

    Postman 또는 API 도구의 권한 부여 탭에서 전달자 토큰을 선택한 다음 관리자에서 CPQ 복사한 고유 토큰을 입력합니다.

    런타임 API 호출

    주:
    이미지의 토큰은 실제 환경에 해당하지 않는 더미 값입니다. 설명 목적으로만 나타납니다.

    기본 런타임 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 참조 문서를 참조하십시오.

      https://api-docs.logik.io/#introduction

    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개 슬라이드 프레젠테이션을 참조하십시오.

    Logik.io API입니다.