Memórias de negócio
Cria, lista, altera, arquiva, exclui e exporta as memórias que orientam as respostas da VI.
Uma memória é uma instrução ou um fato curto que a VI deve respeitar sempre. Há três naturezas: rule (regra, "nunca dar mais de 15% de desconto"), preference (preferência, "respostas curtas") e fact (fato, "expedimos até as 15h"). Memórias de scope tenant valem para a loja; as de scope user são pessoais de quem as criou.
Listar memórias
Devolve as memórias que o administrador do token pode ver: todas as da loja mais as pessoais dele. Regras e preferências vêm primeiro; dentro de cada grupo, as mais novas primeiro.
/api/v1/admin/intelligence/memoriesAdminListar memórias
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso de um administrador (veja Tokens).Parâmetros de consulta
scopestringtenantuserkindstringrulepreferencefactstatusstringactivearchivedExemplo de requisição
curl "$BASE_URL/api/v1/admin/intelligence/memories?status=active" \
-H "Authorization: Bearer $TOKEN"Resposta
{
"memories": [
{
"id": "f747c050-9052-4c58-8b44-e594a04694d9",
"scope": "tenant",
"kind": "fact",
"content": "O horário limite de expedição da loja é 15h em dias úteis.",
"source": "user_explicit",
"status": "active",
"surfaces": ["admin", "seller", "site"],
"created_at": "2026-10-11T21:07:37.478564Z"
}
],
"total": 1
}Campos da resposta
memoriesarrayiduuidscopestringtenantuseruser_iduuidscope é user.kindstringrulepreferencefactcontentstringstructuredobjectrule: regra em formato conferível (veja o corpo da criação).sourcestringuser_explicitvi_suggestedledger_derivedstatusstringactivearchivedsurfacesarraysite, admin, seller.superseded_byuuidcreated_atstringtotalintegerErros
| Status | Quando | Corpo |
|---|---|---|
| 401 | Sem token ou token inválido/expirado. | {"error":"missing authorization header"} ou {"error":"invalid or expired token"} |
| 403 | O administrador não tem nenhum dos privilégios exigidos. | {"error":"insufficient privileges","privilege_required_any":["intelligence_use_chat","manage_settings"]} |
Criar uma memória
Grava uma nova memória ativa. Para rule, você pode enviar structured com a regra em forma conferível; se existir uma regra ativa com a mesma entity, field e target, a antiga é marcada como substituída.
/api/v1/admin/intelligence/memoriesAdminCriar uma memória
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso de um administrador (veja Tokens).Content-Typestringobrigatórioapplication/json.Corpo da requisição
scopestringobrigatóriotenantusertenant vale para a loja inteira; user só para você.kindstringobrigatóriorulepreferencefactcontentstringobrigatóriostructuredobjectrule. Campos: entity (promotion, product ou coupon), field (discount_pct, price_cents ou margin_pct), operator (max, min ou never), value (número) e target (brand e/ou category_id, ambos opcionais). Exemplo: máximo de 15% de desconto em promoções da marca X.sourcestringpadrão: user_explicituser_explicitvi_suggestedledger_deriveduser_explicit.surfacesarraysiteadminsellerExemplo de requisição
curl -X POST "$BASE_URL/api/v1/admin/intelligence/memories" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"scope": "tenant",
"kind": "fact",
"content": "O horário limite de expedição da loja é 15h em dias úteis.",
"surfaces": [
"admin",
"site"
]
}'Resposta
{
"id": "f747c050-9052-4c58-8b44-e594a04694d9",
"scope": "tenant",
"kind": "fact",
"content": "O horário limite de expedição da loja é 15h em dias úteis.",
"source": "user_explicit",
"status": "active",
"surfaces": ["admin", "seller", "site"],
"created_at": "2026-10-11T21:07:37.478564Z"
}Erros
| Status | Quando | Corpo |
|---|---|---|
| 401 | Sem token ou token inválido/expirado. | {"error":"missing authorization header"} ou {"error":"invalid or expired token"} |
| 403 | O administrador não tem nenhum dos privilégios exigidos. | {"error":"insufficient privileges","privilege_required_any":["intelligence_use_chat","manage_settings"]} |
| 400 | Corpo ilegível, scope ou kind inválido, content vazio ou source inválido. | {"error":"intelligence: invalid scope \"x\""}, {"error":"intelligence: invalid kind ..."}, {"error":"intelligence: content required"} |
| 409 | Já existem 200 memórias ativas na loja. | {"error":"intelligence: active memory limit reached (200)..."} |
Exportar
Baixa as memórias da loja (scope tenant, ativas e arquivadas) em um arquivo JSON. Serve para backup e para atender pedidos de dados (LGPD).
/api/v1/admin/intelligence/memories/exportAdminExportar em JSON
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso de um administrador (veja Tokens).Exemplo de requisição
curl "$BASE_URL/api/v1/admin/intelligence/memories/export" \
-H "Authorization: Bearer $TOKEN"Resposta
{
"memories": [
{
"id": "f747c050-9052-4c58-8b44-e594a04694d9",
"scope": "tenant",
"kind": "fact",
"content": "O horário limite de expedição da loja é 15h em dias úteis.",
"source": "user_explicit",
"status": "active",
"surfaces": ["admin", "seller", "site"],
"created_at": "2026-10-11T21:07:37.478564Z"
}
],
"total": 1
}Erros
| Status | Quando | Corpo |
|---|---|---|
| 401 | Sem token ou token inválido/expirado. | {"error":"missing authorization header"} ou {"error":"invalid or expired token"} |
| 403 | O administrador não tem nenhum dos privilégios exigidos. | {"error":"insufficient privileges","privilege_required_any":["intelligence_use_chat","manage_settings"]} |
Alterar ou arquivar
Altera os campos enviados e deixa os outros como estão. É por aqui que se arquiva (status: archived) e se reativa (status: active) uma memória. O escopo não muda.
/api/v1/admin/intelligence/memories/{id}AdminAlterar ou arquivar
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso de um administrador (veja Tokens).Content-Typestringobrigatórioapplication/json.Parâmetros de caminho
iduuidobrigatórioCorpo da requisição
contentstringkindstringrulepreferencefactstatusstringactivearchivedstructuredobjectsurfacesarraysiteadminsellerExemplo de requisição
curl -X PATCH "$BASE_URL/api/v1/admin/intelligence/memories/$MEMORY_ID" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"status": "archived"
}'Resposta
{
"id": "f747c050-9052-4c58-8b44-e594a04694d9",
"scope": "tenant",
"kind": "fact",
"content": "O horário limite de expedição da loja é 15h em dias úteis.",
"source": "user_explicit",
"status": "archived",
"surfaces": ["admin", "seller", "site"],
"created_at": "2026-10-11T21:07:37.478564Z"
}Erros
| Status | Quando | Corpo |
|---|---|---|
| 401 | Sem token ou token inválido/expirado. | {"error":"missing authorization header"} ou {"error":"invalid or expired token"} |
| 403 | O administrador não tem nenhum dos privilégios exigidos. | {"error":"insufficient privileges","privilege_required_any":["intelligence_use_chat","manage_settings"]} |
| 400 | Corpo ilegível. | {"error":"invalid request body"} |
| 500 | id inválido ou memória inexistente (a rota não responde 404). | {"error":"..."} |
Excluir
Por padrão faz a exclusão lógica: a memória some das listagens e fica arquivada. Com hard=true apaga de vez (para pedidos de eliminação de dados). Só alcança memórias da loja ou suas.
/api/v1/admin/intelligence/memories/{id}AdminExcluir uma memória
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso de um administrador (veja Tokens).Parâmetros de caminho
iduuidobrigatórioParâmetros de consulta
hardbooleanpadrão: falsetrue apaga definitivamente.Exemplo de requisição
curl -X DELETE "$BASE_URL/api/v1/admin/intelligence/memories/$MEMORY_ID?hard=true" \
-H "Authorization: Bearer $TOKEN"Resposta
{ "ok": true, "hard": true }Erros
| Status | Quando | Corpo |
|---|---|---|
| 401 | Sem token ou token inválido/expirado. | {"error":"missing authorization header"} ou {"error":"invalid or expired token"} |
| 403 | O administrador não tem nenhum dos privilégios exigidos. | {"error":"insufficient privileges","privilege_required_any":["intelligence_use_chat","manage_settings"]} |
| 500 | id com formato inválido. | {"error":"..."} |