Introdução às chamadas de API de tempo de execução
APIs de tempo de execução, ou buyside, são usadas para criar, atualizar e salvar configurações.
CPQ As APIs são divididas em duas categorias: APIs de tempo de execução e APIs de administrador. Neste artigo, apresentamos as APIs de tempo de execução.
As APIs de tempo de execução são usadas para criar, ler, atualizar e excluir configurações e são as mesmas APIs usadas no CPQ Configurador de usuário final. Elas também são comumente chamadas de APIs "buyside".
Todas as chamadas de API seguem este formato de URL base: https://<yourTenant>.<sector>.logik.io/api/ . Neste URL, seulocatário representa seu exclusivo listado CPQ o nome do locatário e o setor é o setor em que você CPQ o ambiente está localizado.
Se você for um usuário do Salesforce, poderá encontrar o URL do locatário clicando em Configuração Em sua conta do Salesforce. Na caixa Localização rápida, pesquise ou clique em Configurações personalizadas e clique em Gerenciar . O URL do locatário será exibido.
Todas as chamadas de API de tempo de execução exigem autenticação de token do portador usando um token exclusivo que está disponível no cliente de tempo de execução. Eles também exigem que a URL de origem configurada no cliente de tempo de execução apareça no cabeçalho da solicitação.
Para autenticar, colete o token do portador e o URL de origem de CPQ Administrador → Utilitários → Cliente de tempo de execução. Para cada chamada de API em um Postman, adicione o seguinte cabeçalho:
Key: Origin
Value: <yourOrigin>
Na guia Autorização do Postman ou sua ferramenta de API, selecione Token do portador e insira o token exclusivo do qual você copiou CPQ Admin
Chamadas básicas de API de tempo de execução
- A chamada de configuração inicial inicia o processo de configuração passando o ID do produto configurável e retorna um UUID de configuração para uso posterior.
Exemplo (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": [] }'Exemplo (resposta):
{ "configurationId": "{uuid}"Você também usa esta chamada de API para reconfigurar, fornecendo um UUID de configuração salvo anteriormente no corpo DO POST.
Exemplo de reconfiguração (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": [] }' - A chamada de atualização de configuração atualiza uma configuração existente passando o UUID de configuração e os valores de campo desejados e retorna todos os campos possíveis e seus valores.
Exemplo (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" } }'Exemplo (resposta):
{ "fields": { "color": "blue", "size": "large", "price": "$100" } } - A chamada Obter BOM passa o UUID de configuração e recupera a Lista de materiais (BOM) da configuração. Retorna a BOM atual da configuração.
Exemplo (curl):
curl -X GET https://<yourTenant>.<sector>.logik.io/api/{uuid}/bom \ -H "Authorization: Bearer <yourBearerToken>" \ -H "Origin: <yourOrigin>"Exemplo (resposta):
{ "bom": [ { "item": "componentA", "quantity": 2 }, { "item": "componentB", "quantity": 1 } ] } - A chamada de salvamento salva a configuração em CPQ. Isso garante que o UUID de configuração possa ser usado e reconfigurado no futuro.
Este processo preenche de forma assíncrona nossos objetos personalizados, conjuntos de dados de campo de configuração e itens de linha de configuração no Salesforce.
Exemplo (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":{}}}'Para obter mais detalhes sobre o código de amostra, consulte a documentação de referência completa da API:
Amostra 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: []
Para obter mais informações sobre CPQ APIs, veja a seguinte apresentação de oito slides: