Alertas e agendamentos
Cria alertas que avisam quando um número cruza um limite e envios periódicos de um dashboard ou card por e-mail.
Uma assinatura liga um card (ou uma aba) a um e-mail. Há dois modos. No alerta (mode: A) a plataforma mede o card de tempos em tempos e avisa quando o valor viola uma regra, por exemplo "receita do mês abaixo de R$ 10.000". No agendamento (mode: S) ela envia o card ou a aba por e-mail na frequência escolhida. A verificação roda de hora em hora. As mensagens de erro desta rota vêm em português, como o servidor as devolve.
Listar assinaturas
/api/v1/vendor/dashboards/subscriptionsSellerListar assinaturas
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso do usuário seller (veja Tokens).Parâmetros de consulta
dashboard_iduuidcard_iduuidExemplo de requisição
curl -X GET "$BASE_URL/api/v1/vendor/dashboards/subscriptions" \
-H "Authorization: Bearer $TOKEN"Resposta
{
"subscriptions": [
{
"id": "a7c1e4d2-52f7-4bd0-9e0a-6c3f1b2a8d90",
"dashboard_id": null,
"card_id": "94c6b3ff-de9c-4552-8a12-e199e8427f57",
"mode": "A",
"schedule": "hourly",
"name": "Receita do mês abaixo da meta",
"alert_rule": {
"op": "lt",
"value": 1000000,
"window": "thisMonth",
"cooldown_minutes": 1440,
"channels": [
"email"
]
},
"recipients": [
"financeiro@example.com"
],
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"is_active": true,
"alert_state": "N",
"created_by": "0fd409fb-9869-4c50-a18c-a810a19abeed",
"created_at": "2026-10-11T22:00:00Z"
}
]
}Campos da resposta
subscriptionsobject[]As assinaturas do seller.
iduuiddashboard_iduuidcard_iduuidmodestringASA alerta ou S agendamento.schedulestringhourlydailyweeklymonthlynamestringalert_ruleobjectA).recipientsstring[]vendor_iduuidis_activebooleanlast_sent_atstringlast_valuenumberalert_statestringNFN normal (limiar não violado) ou F disparado (violado).created_byuuidcreated_atstringErros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 404 | Filtro por aba ou card que o seller não vê. | {"error":"dashboard não encontrado"} |
| 503 | O recurso não está configurado neste ambiente. | {"error":"assinaturas de dashboard não estão configuradas neste ambiente"} |
| 401 | Token ausente, inválido, expirado ou revogado. | invalid or expired token |
| 403 | O token não é de um usuário seller, ou a loja ainda está em análise de cadastro. | {"error":"vendor_pending_review"} |
Criar alerta ou agendamento
/api/v1/vendor/dashboards/subscriptionsSellerCriar alerta ou agendamento
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso do usuário seller (veja Tokens).Content-Typestringobrigatórioapplication/json.Corpo da requisição
modestringobrigatórioASA alerta ou S agendamento.card_iduuiddashboard_iduuidcard_id ou dashboard_id.schedulestringhourlydailyweeklymonthlyhourly no alerta e daily no agendamento.namestringalert_ruleobjectRegra do alerta (só modo A).
alert_rule.opstringobrigatórioltltegtgteeqnevalue.alert_rule.valuenumberobrigatórioalert_rule.metricstringid da métrica a medir. Omitido: a primeira métrica do card.alert_rule.windowstringtoday, last7, thisMonth). Omitido: o período do card ou last30.alert_rule.cooldown_minutesintegeralert_rule.channelsstring[]inapp e/ou email. Omitido: os dois.recipientsstring[]@ e não ter espaços, vírgulas ou ponto e vírgula.Exemplo de requisição
curl -X POST "$BASE_URL/api/v1/vendor/dashboards/subscriptions" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"mode": "A", "card_id": "94c6b3ff-de9c-4552-8a12-e199e8427f57", "name": "Receita do mês abaixo da meta", "schedule": "hourly", "alert_rule": {"op": "lt", "value": 1000000, "window": "thisMonth", "cooldown_minutes": 1440, "channels": ["email"]}, "recipients": ["financeiro@example.com"]}'Resposta
{
"id": "a7c1e4d2-52f7-4bd0-9e0a-6c3f1b2a8d90",
"dashboard_id": null,
"card_id": "94c6b3ff-de9c-4552-8a12-e199e8427f57",
"mode": "A",
"schedule": "hourly",
"name": "Receita do mês abaixo da meta",
"alert_rule": {
"op": "lt",
"value": 1000000,
"window": "thisMonth",
"cooldown_minutes": 1440,
"channels": [
"email"
]
},
"recipients": [
"financeiro@example.com"
],
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"is_active": true,
"alert_state": "N",
"created_by": "0fd409fb-9869-4c50-a18c-a810a19abeed",
"created_at": "2026-10-11T22:00:00Z"
}Campos da resposta
(campos / fields)objectErros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 400 | Corpo que não é JSON. | {"error":"corpo da requisição inválido"} |
| 400 | Nem card_id nem dashboard_id. | {"error":"informe um dashboard ou um card"} |
| 404 | Card ou aba que o seller não vê. | {"error":"card não encontrado"} |
| 422 | Falha de validação. O texto do erro vem em error: mode inválido: use 'A' (alerta) ou 'S' (agendamento), um alerta é sempre de um card, frequência inválida: ..., operador inválido: ..., cooldown não pode ser negativo, máximo de 20 destinatários por assinatura, e-mail inválido: ..., informe ao menos um destinatário. | {"error":"operador inválido: foo"} |
| 503 | O recurso não está configurado neste ambiente. | {"error":"assinaturas de dashboard não estão configuradas neste ambiente"} |
| 401 | Token ausente, inválido, expirado ou revogado. | invalid or expired token |
| 403 | O token não é de um usuário seller, ou a loja ainda está em análise de cadastro. | {"error":"vendor_pending_review"} |
Ligar ou desligar assinatura
Apesar do PUT, a única coisa que esta rota altera é o estado ligado/desligado. Para mudar a regra, apague e crie outra.
/api/v1/vendor/dashboards/subscriptions/{id}SellerLigar ou desligar assinatura
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso do usuário seller (veja Tokens).Content-Typestringobrigatórioapplication/json.Parâmetros de caminho
iduuidobrigatórioCorpo da requisição
is_activebooleanobrigatóriotrue liga, false desliga. Obrigatório.Exemplo de requisição
curl -X PUT "$BASE_URL/api/v1/vendor/dashboards/subscriptions/a7c1e4d2-52f7-4bd0-9e0a-6c3f1b2a8d90" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"is_active": false}'Resposta
{
"id": "a7c1e4d2-52f7-4bd0-9e0a-6c3f1b2a8d90",
"dashboard_id": null,
"card_id": "94c6b3ff-de9c-4552-8a12-e199e8427f57",
"mode": "A",
"schedule": "hourly",
"name": "Receita do mês abaixo da meta",
"alert_rule": {
"op": "lt",
"value": 1000000,
"window": "thisMonth",
"cooldown_minutes": 1440,
"channels": [
"email"
]
},
"recipients": [
"financeiro@example.com"
],
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"is_active": false,
"alert_state": "N",
"created_by": "0fd409fb-9869-4c50-a18c-a810a19abeed",
"created_at": "2026-10-11T22:00:00Z"
}Erros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 400 | Corpo que não é JSON, ou is_active ausente. | {"error":"informe is_active"} |
| 404 | Assinatura inexistente ou de outro seller, ou o card/aba alvo não está visível. | {"error":"assinatura não encontrada"} |
| 503 | O recurso não está configurado neste ambiente. | {"error":"assinaturas de dashboard não estão configuradas neste ambiente"} |
| 401 | Token ausente, inválido, expirado ou revogado. | invalid or expired token |
| 403 | O token não é de um usuário seller, ou a loja ainda está em análise de cadastro. | {"error":"vendor_pending_review"} |
Apagar assinatura
/api/v1/vendor/dashboards/subscriptions/{id}SellerApagar assinatura
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso do usuário seller (veja Tokens).Parâmetros de caminho
iduuidobrigatórioExemplo de requisição
curl -X DELETE "$BASE_URL/api/v1/vendor/dashboards/subscriptions/a7c1e4d2-52f7-4bd0-9e0a-6c3f1b2a8d90" \
-H "Authorization: Bearer $TOKEN"Resposta
{
"message": "assinatura removida"
}Erros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 404 | Assinatura inexistente ou de outro seller, ou o card/aba alvo não está visível. | {"error":"assinatura não encontrada"} |
| 503 | O recurso não está configurado neste ambiente. | {"error":"assinaturas de dashboard não estão configuradas neste ambiente"} |
| 401 | Token ausente, inválido, expirado ou revogado. | invalid or expired token |
| 403 | O token não é de um usuário seller, ou a loja ainda está em análise de cadastro. | {"error":"vendor_pending_review"} |