Escrever um item à mão
const url = 'https://developers.nexo.winningsales.com.br/v1/knowledge/items';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"type":"rule","text":"example","rule":{"subject":"discount","condition":"example","limit":"example","exception":"example","approver":"example"}}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://developers.nexo.winningsales.com.br/v1/knowledge/items \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "type": "rule", "text": "example", "rule": { "subject": "discount", "condition": "example", "limit": "example", "exception": "example", "approver": "example" } }'Cria um item sem material de origem, como na tela; entra em uso na hora. Só administradores, como a Base de conhecimento na tela Calibração; o papel é relido a cada chamada, e para mudar o token precisa do escopo calibration:write.
Authorizations
Seção intitulada “Authorizations”Request Bodyrequired
Seção intitulada “Request Bodyrequired”object
Tipo do item
Texto curto do item
Campos estruturados, obrigatórios quando type é rule
object
Assunto da regra comercial
Condição que ativa a regra, ou null
Valor do limite, ou null
Exceção conhecida, ou null
Quem aprova uma exceção, ou null
Responses
Seção intitulada “Responses”Item criado
object
Id do item
Versão do item
Tipo do item
Texto curto do item
De onde veio o item
Situação do item
Por que está pendente, ou null
O outro lado do conflito, quando pendingReason é conflict
object
object
Id do material de origem
Nome do material
Nome do arquivo
Índice da página de origem
Rótulo da página (“p. 3” ou “aba Preços”)
Trecho literal que sustenta o item
Campos estruturados, só para type rule
object
Assunto da regra comercial
Condição que ativa a regra, ou null
Valor do limite, ou null
Exceção conhecida, ou null
Quem aprova uma exceção, ou null
Materiais e trechos que sustentam o item
object
Id do material de origem
Nome do material
Nome do arquivo
Índice da página de origem
Rótulo da página (“p. 3” ou “aba Preços”)
Trecho literal que sustenta o item
Verdadeiro quando nenhuma fonte ativa sustenta mais o item
Quando o item mudou pela última vez
Reservado para o contador de uso (entrega futura)
Example
{ "type": "rule", "origin": "material", "status": "in_use", "pendingReason": "conflict", "rule": { "subject": "discount" }}Payload inválido (detalhes do zod em meta.errors)
object
Stable machine-readable error code (e.g. identity.email_already_in_use)
Error class name
HTTP status code
Human-readable message, safe to display to end users
Correlation id — send it to support to locate the full trail
Structured details safe for the frontend (field errors, ids)
object
Example generated
{ "type": "example", "title": "example", "status": 1, "detail": "example", "requestId": "example", "meta": { "additionalProperty": "example" }}Token ausente, inválido, expirado ou revogado
object
Stable machine-readable error code (e.g. identity.email_already_in_use)
Error class name
HTTP status code
Human-readable message, safe to display to end users
Correlation id — send it to support to locate the full trail
Structured details safe for the frontend (field errors, ids)
object
Example
{ "type": "public_api.invalid_credential", "title": "InvalidCredentialError", "status": 401, "detail": "Token de acesso inválido, expirado ou revogado. Crie um novo token de acesso no Nexo.", "requestId": "019fcae7-3e54-755a-8458-bdb605b324bb"}Papel, escopo do token ou plano não permitem a operação
object
Stable machine-readable error code (e.g. identity.email_already_in_use)
Error class name
HTTP status code
Human-readable message, safe to display to end users
Correlation id — send it to support to locate the full trail
Structured details safe for the frontend (field errors, ids)
object
Example
{ "type": "public_api.insufficient_scope", "title": "InsufficientScopeError", "status": 403, "detail": "Este token não tem o escopo conversations:read, exigido por esta operação. Gere um token com esse escopo.", "requestId": "019fcae7-3e54-755a-8458-bdb605b324bb", "meta": { "operation": "conversations.reading", "scope": "conversations:read" }}Limite de chamadas da empresa ou do token atingido
object
Stable machine-readable error code (e.g. identity.email_already_in_use)
Error class name
HTTP status code
Human-readable message, safe to display to end users
Correlation id — send it to support to locate the full trail
Structured details safe for the frontend (field errors, ids)
object
Example
{ "type": "public_api.rate_limited", "title": "PublicRateLimitedError", "status": 429, "detail": "Muitas chamadas em pouco tempo. Tente de novo em 12 segundos.", "requestId": "019fcae7-3e54-755a-8458-bdb605b324bb", "meta": { "class": "content", "limitedBy": "company", "limit": 120, "windowSeconds": 60, "retryAfterSeconds": 12 }}