Audiências
Lista, cria, lê, altera e exclui as audiências do seller.
Listar audiências
Devolve todas as audiências do seu seller, da mais nova para a mais antiga. Não há paginação nem filtros.
/api/v1/vendor/crm/audiencesSellerListar as audiências do seller
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso de um usuário do painel do seller (lojista), obtido no login (veja Tokens).Exemplo de requisição
curl "$BASE_URL/api/v1/vendor/crm/audiences" \
-H "Authorization: Bearer $TOKEN"Resposta
{
"audiences": [
{
"id": "509ae709-de06-478a-8bef-5a4d32c6cfb0",
"vendor_id": "7c1f0b52-3a64-4d1e-9a40-5f0c2b6a91d3",
"name": "Clientes fiéis dos últimos 90 dias",
"description": "Compraram mais de R$ 500,00 nos últimos 90 dias",
"rule": {
"op": "AND",
"conditions": [
{
"type": "total_spent",
"operator": "gte",
"value": 50000,
"window_days": 90
}
]
},
"usergroup_id": "c905980d-d6be-49c6-858e-e2dd7daaf151",
"is_active": true,
"member_count": 846,
"last_evaluated_at": "2026-10-11T21:33:19.003894Z",
"last_error": null,
"created_at": "2026-09-10T06:04:48.095503Z",
"updated_at": "2026-10-11T21:33:19.003894Z"
}
]
}Campos da resposta
audiencesarraynull quando não há nenhuma.Erros
| Status | Quando | Corpo |
|---|---|---|
| 401 | Sem token ou token inválido/expirado. | {"error":"missing authorization header"} / {"error":"invalid or expired token"} |
| 403 | O token não é de um usuário seller (por exemplo, é de um administrador da loja). | {"error":"insufficient permissions"} |
| 403 | O cadastro do seller ainda está em análise (só a tela de cadastro funciona até a aprovação). | {"error":"vendor_pending_review","message":"..."} |
| 403 | O usuário tem papel de seller, mas não está ligado a nenhum seller. | {"error":"vendor profile not found"} |
| 403 | O módulo crm está desligado nesta loja. | {"error":"module_disabled","module":"crm"} |
| 500 | Falha ao consultar. | {"error":"failed to list audiences"} |
Veja também
Criar uma audiência
Grava uma audiência nova. O servidor compila a regra e testa a consulta no banco antes de gravar: regra que não roda é recusada com 400. A audiência nasce ativa e vazia; chame a materialização para preencher o grupo.
/api/v1/vendor/crm/audiencesSellerCriar uma audiência
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso de um usuário do painel do seller (lojista), obtido no login (veja Tokens).Content-Typestringobrigatórioapplication/json.Corpo da requisição
namestringobrigatóriodescriptionstringruleobjectAND sem condições, que casa todos os clientes.is_activebooleanpadrão: trueExemplo de requisição
curl -X POST "$BASE_URL/api/v1/vendor/crm/audiences" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Clientes fiéis dos últimos 90 dias",
"description": "Compraram mais de R$ 500,00 nos últimos 90 dias",
"rule": {
"op": "AND",
"conditions": [
{
"type": "total_spent",
"operator": "gte",
"value": 50000,
"window_days": 90
}
]
}
}'Resposta
{
"id": "509ae709-de06-478a-8bef-5a4d32c6cfb0",
"vendor_id": "7c1f0b52-3a64-4d1e-9a40-5f0c2b6a91d3",
"name": "Clientes fiéis dos últimos 90 dias",
"description": "Compraram mais de R$ 500,00 nos últimos 90 dias",
"rule": {
"op": "AND",
"conditions": [
{
"type": "total_spent",
"operator": "gte",
"value": 50000,
"window_days": 90
}
]
},
"is_active": true,
"member_count": 0,
"last_error": null,
"created_at": "2026-09-10T06:04:48.095503Z",
"updated_at": "2026-10-11T21:33:19.003894Z"
}Campos da resposta
iduuidvendor_iduuidnamestringdescriptionstringruleobjectusergroup_iduuidis_activebooleanfalse desliga a audiência (a rotina automática deixa de reavaliá-la).member_countinteger0 antes da primeira.last_evaluated_atstringlast_errorstringnull quando não há falha.created_atstringupdated_atstringErros
| Status | Quando | Corpo |
|---|---|---|
| 401 | Sem token ou token inválido/expirado. | {"error":"missing authorization header"} / {"error":"invalid or expired token"} |
| 403 | O token não é de um usuário seller (por exemplo, é de um administrador da loja). | {"error":"insufficient permissions"} |
| 403 | O cadastro do seller ainda está em análise (só a tela de cadastro funciona até a aprovação). | {"error":"vendor_pending_review","message":"..."} |
| 403 | O usuário tem papel de seller, mas não está ligado a nenhum seller. | {"error":"vendor profile not found"} |
| 403 | O módulo crm está desligado nesta loja. | {"error":"module_disabled","module":"crm"} |
| 400 | Corpo que não é JSON. | {"error":"invalid request body","detail":"..."} |
| 400 | Regra inválida: condição desconhecida, operador fora da lista ou valor do tipo errado. A mensagem (detail) está em inglês e cita a condição e o campo. | {"error":"failed to create audience","detail":"crm segments: regra de audiência inválida: ..."} |
| 500 | name vazio ou ausente (deveria ser 400). | {"error":"failed to create audience","detail":"crm segments: name is required"} |
Veja também
Ler uma audiência
Devolve uma audiência do seu seller pelo id.
/api/v1/vendor/crm/audiences/{id}SellerLer uma audiência
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso de um usuário do painel do seller (lojista), obtido no login (veja Tokens).Parâmetros de caminho
iduuidobrigatórioExemplo de requisição
curl "$BASE_URL/api/v1/vendor/crm/audiences/$AUDIENCE_ID" \
-H "Authorization: Bearer $TOKEN"Resposta
{
"id": "509ae709-de06-478a-8bef-5a4d32c6cfb0",
"vendor_id": "7c1f0b52-3a64-4d1e-9a40-5f0c2b6a91d3",
"name": "Clientes fiéis dos últimos 90 dias",
"description": "Compraram mais de R$ 500,00 nos últimos 90 dias",
"rule": {
"op": "AND",
"conditions": [
{
"type": "total_spent",
"operator": "gte",
"value": 50000,
"window_days": 90
}
]
},
"usergroup_id": "c905980d-d6be-49c6-858e-e2dd7daaf151",
"is_active": true,
"member_count": 846,
"last_evaluated_at": "2026-10-11T21:33:19.003894Z",
"last_error": null,
"created_at": "2026-09-10T06:04:48.095503Z",
"updated_at": "2026-10-11T21:33:19.003894Z"
}Campos da resposta
iduuidvendor_iduuidnamestringdescriptionstringruleobjectusergroup_iduuidis_activebooleanfalse desliga a audiência (a rotina automática deixa de reavaliá-la).member_countinteger0 antes da primeira.last_evaluated_atstringlast_errorstringnull quando não há falha.created_atstringupdated_atstringErros
| Status | Quando | Corpo |
|---|---|---|
| 401 | Sem token ou token inválido/expirado. | {"error":"missing authorization header"} / {"error":"invalid or expired token"} |
| 403 | O token não é de um usuário seller (por exemplo, é de um administrador da loja). | {"error":"insufficient permissions"} |
| 403 | O cadastro do seller ainda está em análise (só a tela de cadastro funciona até a aprovação). | {"error":"vendor_pending_review","message":"..."} |
| 403 | O usuário tem papel de seller, mas não está ligado a nenhum seller. | {"error":"vendor profile not found"} |
| 403 | O módulo crm está desligado nesta loja. | {"error":"module_disabled","module":"crm"} |
| 404 | A audiência não existe ou pertence a outro seller ou à loja. | {"error":"audience not found"} |
| 500 | O id não é um UUID válido (a plataforma responde 500 em vez de 400). A mensagem volta em português. | {"error":"failed to get audience","detail":"o valor \"xyz\" não é um uuid válido. ..."} |
Alterar uma audiência
Atualiza só os campos enviados (alteração parcial, apesar do PUT). Uma rule nova é validada como na criação. A mudança não altera o grupo de clientes: materialize de novo para aplicar.
/api/v1/vendor/crm/audiences/{id}SellerAlterar uma audiência
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso de um usuário do painel do seller (lojista), obtido no login (veja Tokens).Content-Typestringobrigatórioapplication/json.Parâmetros de caminho
iduuidobrigatórioCorpo da requisição
namestringdescriptionstring"" apaga.ruleobjectis_activebooleanExemplo de requisição
curl -X PUT "$BASE_URL/api/v1/vendor/crm/audiences/$AUDIENCE_ID" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"is_active": false
}'Resposta
{
"id": "509ae709-de06-478a-8bef-5a4d32c6cfb0",
"vendor_id": "7c1f0b52-3a64-4d1e-9a40-5f0c2b6a91d3",
"name": "Clientes fiéis dos últimos 90 dias",
"description": "Compraram mais de R$ 500,00 nos últimos 90 dias",
"rule": {
"op": "AND",
"conditions": [
{
"type": "total_spent",
"operator": "gte",
"value": 50000,
"window_days": 90
}
]
},
"usergroup_id": "c905980d-d6be-49c6-858e-e2dd7daaf151",
"is_active": false,
"member_count": 846,
"last_evaluated_at": "2026-10-11T21:33:19.003894Z",
"last_error": null,
"created_at": "2026-09-10T06:04:48.095503Z",
"updated_at": "2026-10-11T21:33:19.003894Z"
}Campos da resposta
iduuidvendor_iduuidnamestringdescriptionstringruleobjectusergroup_iduuidis_activebooleanfalse desliga a audiência (a rotina automática deixa de reavaliá-la).member_countinteger0 antes da primeira.last_evaluated_atstringlast_errorstringnull quando não há falha.created_atstringupdated_atstringErros
| Status | Quando | Corpo |
|---|---|---|
| 401 | Sem token ou token inválido/expirado. | {"error":"missing authorization header"} / {"error":"invalid or expired token"} |
| 403 | O token não é de um usuário seller (por exemplo, é de um administrador da loja). | {"error":"insufficient permissions"} |
| 403 | O cadastro do seller ainda está em análise (só a tela de cadastro funciona até a aprovação). | {"error":"vendor_pending_review","message":"..."} |
| 403 | O usuário tem papel de seller, mas não está ligado a nenhum seller. | {"error":"vendor profile not found"} |
| 403 | O módulo crm está desligado nesta loja. | {"error":"module_disabled","module":"crm"} |
| 400 | Corpo que não é JSON. | {"error":"invalid request body","detail":"..."} |
| 400 | Regra inválida: condição desconhecida, operador fora da lista ou valor do tipo errado. A mensagem (detail) está em inglês e cita a condição e o campo. | {"error":"failed to create audience","detail":"crm segments: regra de audiência inválida: ..."} |
| 404 | A audiência não existe ou pertence a outro seller ou à loja. | {"error":"audience not found"} |
| 409 | A audiência aponta para um grupo de clientes que foi apagado. É preciso reparar antes de voltar a rodar. | {"error":"failed to update audience","detail":"..."} |
| 500 | O id não é um UUID válido (a plataforma responde 500 em vez de 400). A mensagem volta em português. | {"error":"failed to get audience","detail":"o valor \"xyz\" não é um uuid válido. ..."} |
Excluir uma audiência
Apaga a definição da audiência. O grupo de clientes que ela criou permanece, para não quebrar o que já usa esse grupo; só o vínculo se desfaz.
/api/v1/vendor/crm/audiences/{id}SellerExcluir uma audiência
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso de um usuário do painel do seller (lojista), obtido no login (veja Tokens).Parâmetros de caminho
iduuidobrigatórioExemplo de requisição
curl -X DELETE "$BASE_URL/api/v1/vendor/crm/audiences/$AUDIENCE_ID" \
-H "Authorization: Bearer $TOKEN"Resposta
{
"deleted": true
}Erros
| Status | Quando | Corpo |
|---|---|---|
| 401 | Sem token ou token inválido/expirado. | {"error":"missing authorization header"} / {"error":"invalid or expired token"} |
| 403 | O token não é de um usuário seller (por exemplo, é de um administrador da loja). | {"error":"insufficient permissions"} |
| 403 | O cadastro do seller ainda está em análise (só a tela de cadastro funciona até a aprovação). | {"error":"vendor_pending_review","message":"..."} |
| 403 | O usuário tem papel de seller, mas não está ligado a nenhum seller. | {"error":"vendor profile not found"} |
| 403 | O módulo crm está desligado nesta loja. | {"error":"module_disabled","module":"crm"} |
| 404 | Audiência inexistente ou de outro seller. | {"error":"failed to delete audience","detail":"crm segments: audience ... not found"} |
| 500 | O id não é um UUID válido (a plataforma responde 500 em vez de 400). A mensagem volta em português. | {"error":"failed to get audience","detail":"o valor \"xyz\" não é um uuid válido. ..."} |