Desenvolvedores · Documentação técnica
Arena Upya
API Notices
Broadcast para a empresa e inbox/leitura em nome de um user (user_id ou external_code).
Inbox / lido
notices.readBroadcast
notices.writeInbox e marcar lido sempre exigem identificador de user. Cross-tenant → 404.
Endpoints
| Método | Rota | Escopo | Descrição |
|---|---|---|---|
POST |
/api/v1/notices |
notices.write |
Broadcast (title, body) |
GET |
/api/v1/notices |
notices.read |
Inbox (?user_id|external_code) |
POST |
/api/v1/notices/{id}/read |
notices.read |
Marcar um como lido |
POST |
/api/v1/notices/read-all |
notices.read |
Marcar todos como lidos |
Por endpoint — assinaturas e exemplos
NoticeCreate — body
Body para criar aviso (notice).
| Campo | Tipo | Obrig. | Descrição |
|---|---|---|---|
title |
string |
sim |
Título do aviso. ex.: "Aviso geral"
|
body |
string |
sim |
Conteúdo (texto). ex.: "Reunião amanhã às 10h"
|
SentResult
| Campo | Tipo | Obrig. | Descrição |
|---|---|---|---|
sent |
integer |
não |
Quantidade de destinatários do broadcast. ex.: 18
|
Exemplo
Request POST (body)
{
"title": "Campanha",
"body": "Nova meta liberada esta semana."
}
Response 2xx
{
"status": "success",
"data": {
"sent": 18
},
"meta": {
"request_id": "a1b2c3d4e5f6789012345678"
}
}
Parâmetros
| Campo | Em | Tipo | Obrig. | Descrição |
|---|---|---|---|---|
user_id |
query |
integer |
não | Obrigatório com external_code (um dos dois) |
external_code |
query |
string |
não | Código CRM |
NoticeInbox
Resposta de `GET /notices`.
| Campo | Tipo | Obrig. | Descrição |
|---|---|---|---|
items |
array<Notice> |
não | — |
unread |
integer |
não |
Quantidade não lida. ex.: 3
|
Notice
Item da inbox (`notifications`).
| Campo | Tipo | Obrig. | Descrição |
|---|---|---|---|
id |
integer |
não |
— ex.: 1
|
user_id |
integer |
não |
— ex.: 42
|
title |
string |
não |
— ex.: "Aviso geral"
|
body |
string |
não |
— ex.: "Reunião amanhã às 10h"
|
kind |
string |
não |
— ex.: "info"
|
is_read |
integer |
não |
`0` não lido, `1` lido. ex.: 0
|
created_at |
string |
não |
— ex.: "2026-03-20 09:00:00"
|
Exemplo
Response 2xx
{
"status": "success",
"data": {
"items": [
{
"id": 1,
"user_id": 42,
"title": "Aviso geral",
"body": "Reunião amanhã às 10h",
"kind": "info",
"is_read": 0,
"created_at": "2026-03-20 09:00:00"
}
],
"unread": 3
},
"meta": {
"request_id": "a1b2c3d4e5f6789012345678"
}
}
Parâmetros
| Campo | Em | Tipo | Obrig. | Descrição |
|---|---|---|---|---|
id |
path |
integer |
sim | ID do aviso |
UserRefBody — body
Identifica o usuário com `user_id` ou `external_code` (um dos dois).
| Campo | Tipo | Obrig. | Descrição |
|---|---|---|---|
user_id |
integer |
não |
ID do usuário. ex.: 42
|
external_code |
string · máx. 120 |
não |
Código CRM. ex.: "CRM-8841"
|
OkResult
| Campo | Tipo | Obrig. | Descrição |
|---|---|---|---|
ok |
boolean |
não |
Operação concluída. ex.: true
|
Exemplo
Request POST (body)
{
"external_code": "CRM-8841"
}
Response 2xx
{
"status": "success",
"data": {
"ok": true
},
"meta": {
"request_id": "a1b2c3d4e5f6789012345678"
}
}
UserRefBody — body
Identifica o usuário com `user_id` ou `external_code` (um dos dois).
| Campo | Tipo | Obrig. | Descrição |
|---|---|---|---|
user_id |
integer |
não |
ID do usuário. ex.: 42
|
external_code |
string · máx. 120 |
não |
Código CRM. ex.: "CRM-8841"
|
OkResult
| Campo | Tipo | Obrig. | Descrição |
|---|---|---|---|
ok |
boolean |
não |
Operação concluída. ex.: true
|
Exemplo
Request POST (body)
{
"external_code": "CRM-8841"
}
Response 2xx
{
"status": "success",
"data": {
"ok": true
},
"meta": {
"request_id": "a1b2c3d4e5f6789012345678"
}
}
curl — broadcast
curl -X POST "https://arenaupya.com.br/api/v1/notices" \
-H "Authorization: Bearer arena_live_SEU_TOKEN" \
-H "Content-Type: application/json" \
-d '{"title":"Campanha","body":"Nova meta liberada esta semana."}'