Desenvolvedores · Documentação técnica
Arena Upya
API Meetings
Reuniões company-wide. Criação exige owner (user_id ou external_code). Google OAuth não é exposto.
Leitura
meetings.readEscrita
meetings.writeEndpoints
| Método | Rota | Escopo | Descrição |
|---|---|---|---|
GET |
/api/v1/meetings |
meetings.read |
Listar (?period, q, status, user_id) |
GET |
/api/v1/meetings/{id} |
meetings.read |
Obter reunião |
POST |
/api/v1/meetings |
meetings.write |
Criar (owner = user) |
PATCH |
/api/v1/meetings/{id} |
meetings.write |
Atualizar status / dados |
Por endpoint — assinaturas e exemplos
Parâmetros
| Campo | Em | Tipo | Obrig. | Descrição |
|---|---|---|---|---|
period |
query |
string |
não | hoje|semana|mes|todos |
q |
query |
string |
não | Busca título/cliente/e-mail |
status |
query |
string |
não | agendada|realizada|remarcada|cancelada|no_show |
user_id |
query |
integer |
não | Filtrar dono |
external_code |
query |
string |
não | Código CRM do dono |
MeetingList
Resposta de `GET /meetings` (items + kpis).
| Campo | Tipo | Obrig. | Descrição |
|---|---|---|---|
items |
array<Meeting> |
não | Reuniões filtradas. |
kpis |
MeetingKpis |
não | — |
source |
string |
não |
Origem dos dados (ex. `db`). ex.: "db"
|
MeetingKpis
KPIs agregados da listagem de reuniões.
| Campo | Tipo | Obrig. | Descrição |
|---|---|---|---|
total |
integer |
não |
— ex.: 10
|
agendadas |
integer |
não |
— ex.: 4
|
realizadas |
integer |
não |
— ex.: 3
|
canceladas |
integer |
não |
— ex.: 1
|
no_show |
integer |
não |
— ex.: 2
|
chargebacks |
integer |
não |
— ex.: 2
|
no_show_pct |
number |
não |
— ex.: 40
|
chargeback_pct |
number |
não |
— ex.: 40
|
Meeting
Reunião / visita registrada.
| Campo | Tipo | Obrig. | Descrição |
|---|---|---|---|
id |
integer |
não |
ID. ex.: 100
|
user_id |
integer |
não |
Dono da reunião. ex.: 42
|
title |
string |
não | Título. |
client_name |
string |
não |
Cliente. ex.: "Cliente X"
|
starts_at |
string |
não |
Início agendado. ex.: "2026-03-22 14:00:00"
|
status |
string |
não |
Ex.: `agendada`, `realizada`, `cancelada`. ex.: "agendada"
|
meeting_type |
string |
não |
`individual` ou `equipe`. ex.: "individual"
|
Exemplo
Response 2xx
{
"status": "success",
"data": {
"items": [
{
"id": 100,
"user_id": 42,
"title": "Demo",
"client_name": "Cliente X",
"starts_at": "2026-03-22 14:00:00",
"status": "agendada",
"meeting_type": "individual"
}
],
"kpis": {
"total": 1,
"agendadas": 1,
"realizadas": 0,
"canceladas": 0,
"no_show": 0,
"chargebacks": 0,
"no_show_pct": 0,
"chargeback_pct": 0
},
"source": "db"
},
"meta": {
"request_id": "a1b2c3d4e5f6789012345678"
}
}
Parâmetros
| Campo | Em | Tipo | Obrig. | Descrição |
|---|---|---|---|---|
id |
path |
integer |
sim | ID do recurso na empresa |
Meeting
Reunião / visita registrada.
| Campo | Tipo | Obrig. | Descrição |
|---|---|---|---|
id |
integer |
não |
ID. ex.: 100
|
user_id |
integer |
não |
Dono da reunião. ex.: 42
|
title |
string |
não | Título. |
client_name |
string |
não |
Cliente. ex.: "Cliente X"
|
starts_at |
string |
não |
Início agendado. ex.: "2026-03-22 14:00:00"
|
status |
string |
não |
Ex.: `agendada`, `realizada`, `cancelada`. ex.: "agendada"
|
meeting_type |
string |
não |
`individual` ou `equipe`. ex.: "individual"
|
Exemplo
Response 2xx
{
"status": "success",
"data": {
"meeting": {
"id": 100,
"user_id": 42,
"title": "Demo",
"client_name": "Cliente X",
"starts_at": "2026-03-22 14:00:00",
"status": "agendada",
"meeting_type": "individual"
}
},
"meta": {
"request_id": "a1b2c3d4e5f6789012345678"
}
}
MeetingCreate — body
Body para criar reunião. Identifique o usuário com `user_id` ou `external_code`.
| Campo | Tipo | Obrig. | Descrição |
|---|---|---|---|
user_id |
integer |
não |
Usuário dono. ex.: 42
|
external_code |
string |
não | Código CRM do usuário. |
title |
string |
sim |
Título. ex.: "Reunião de alinhamento"
|
client_name |
string |
sim |
Nome do cliente. ex.: "Cliente X"
|
starts_at |
string |
sim |
Data/hora de início. ex.: "2026-03-22 14:00:00"
|
meeting_type |
string · individual | equipe |
não | Tipo da reunião. |
client_email |
string |
não | E-mail do cliente. |
meet_url |
string |
não | URL da call (Meet/Zoom etc.). |
notes |
string |
não | Observações. |
Meeting
Reunião / visita registrada.
| Campo | Tipo | Obrig. | Descrição |
|---|---|---|---|
id |
integer |
não |
ID. ex.: 100
|
user_id |
integer |
não |
Dono da reunião. ex.: 42
|
title |
string |
não | Título. |
client_name |
string |
não |
Cliente. ex.: "Cliente X"
|
starts_at |
string |
não |
Início agendado. ex.: "2026-03-22 14:00:00"
|
status |
string |
não |
Ex.: `agendada`, `realizada`, `cancelada`. ex.: "agendada"
|
meeting_type |
string |
não |
`individual` ou `equipe`. ex.: "individual"
|
Exemplo
Request POST (body)
{
"external_code": "CRM-8841",
"title": "Demo",
"client_name": "Cliente X",
"starts_at": "2026-03-22 14:00:00",
"meeting_type": "individual"
}
Response 2xx
{
"status": "success",
"data": {
"meeting": {
"id": 100,
"user_id": 42,
"title": "Demo",
"client_name": "Cliente X",
"starts_at": "2026-03-22 14:00:00",
"status": "agendada",
"meeting_type": "individual"
}
},
"meta": {
"request_id": "a1b2c3d4e5f6789012345678"
}
}
Alias:
POST /api/v1/meetings/{id}/status com o mesmo body.Parâmetros
| Campo | Em | Tipo | Obrig. | Descrição |
|---|---|---|---|---|
id |
path |
integer |
sim | ID do recurso na empresa |
MeetingStatusPatch — body
Body para atualizar status (e campos correlatos) da reunião.
| Campo | Tipo | Obrig. | Descrição |
|---|---|---|---|
status |
string · agendada | realizada | remarcada | cancelada | no_show |
sim |
Novo status. ex.: "realizada"
|
user_id |
integer |
não | Contexto do usuário (quando exigido). |
external_code |
string |
não | Código CRM do usuário. |
meet_url |
string |
não | Atualizar URL da call. |
starts_at |
string |
não | Remarcar horário. |
Meeting
Reunião / visita registrada.
| Campo | Tipo | Obrig. | Descrição |
|---|---|---|---|
id |
integer |
não |
ID. ex.: 100
|
user_id |
integer |
não |
Dono da reunião. ex.: 42
|
title |
string |
não | Título. |
client_name |
string |
não |
Cliente. ex.: "Cliente X"
|
starts_at |
string |
não |
Início agendado. ex.: "2026-03-22 14:00:00"
|
status |
string |
não |
Ex.: `agendada`, `realizada`, `cancelada`. ex.: "agendada"
|
meeting_type |
string |
não |
`individual` ou `equipe`. ex.: "individual"
|
Exemplo
Request PATCH (body)
{
"status": "realizada"
}
Response 2xx
{
"status": "success",
"data": {
"meeting": {
"id": 100,
"user_id": 42,
"title": "Demo",
"client_name": "Cliente X",
"starts_at": "2026-03-22 14:00:00",
"status": "realizada",
"meeting_type": "individual"
}
},
"meta": {
"request_id": "a1b2c3d4e5f6789012345678"
}
}
curl — criar
curl -X POST "https://arenaupya.com.br/api/v1/meetings" \
-H "Authorization: Bearer arena_live_SEU_TOKEN" \
-H "Content-Type: application/json" \
-d '{"external_code":"CRM-8841","title":"Demo","client_name":"Cliente X","starts_at":"2026-03-20 14:00:00","meeting_type":"individual"}'