GET /me/calendar/upcoming
Próximos eventos do caller em TODOS os teams dele.
- Acesso: Login
- Serviço:
https://api-calendar.axuz.net
Autenticação aceita
sessionCookie— Sessão plena Axuz (cookie de sessão da casa). Sessão restrita é 403 enrollment_required.bearerSession— JWT de acesso da sessão em `Authorization: Bearer`.
Devolve as próximas ocorrências somando os calendars PESSOAIS do caller e os dos teams em que ele tem membership ativa, numa requisição só — o consumidor é o hub pessoal, e obrigá-lo a iterar os teams reconstruiria o N+1 que o H-048 eliminou.
Escopo é server-side. Não existe parâmetro de team: o conjunto sai do /auth/me resolvido a partir do token verificado. Falha ao resolver o escopo responde 403, nunca uma lista vazia — agenda incompleta apresentada como completa é pior que erro.
with_meet=true restringe aos eventos que têm sala de vídeo (meet_room_id), que é o que "próxima reunião" significa: a sala em si não tem horário, o horário é do evento.
Paginação keyset por cursor opaco sobre o par (início, id) — nunca OFFSET. O par, e não o id, porque uma série recorrente aparece várias vezes com o mesmo id.
Parâmetros
| Nome | Em | Tipo | Obrigatório | Descrição |
|---|---|---|---|---|
from | query | string | não | Início da janela (default: agora). |
to | query | string | não | Fim da janela (default: from + 30d). Janela > 90 dias é recusada com 400, não truncada. |
with_meet | query | string | não |
|
limit | query | integer | não | |
cursor | query | string | não | Cursor opaco devolvido em |
Respostas
200
OK.
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
items | array<CalendarEvent> | sim | |
items[].id | string<uuid> | sim | |
items[].calendar_id | string<uuid> | null | não | |
items[].calendar_name | string | não | |
items[].calendar_color | string | não | |
items[].team_id | string<uuid> | null | não | |
items[].summary | string | sim | |
items[].description | string | null | não | |
items[].location | string | null | não | |
items[].dtstart | string<date-time> | sim | |
items[].dtend | string<date-time> | sim | |
items[].all_day | boolean | sim | |
items[].rrule | string | null | não | RFC5545 RRULE (ex: FREQ=WEEKLY;BYDAY=MO,WE). |
items[].tz | string | não | IANA timezone name (Region/City). '' = UTC. |
items[].is_recurring_instance | boolean | não | True quando é ocorrência expandida (não master row). |
items[].recurrence_id | string<date-time> | null | não | dtstart canônico da ocorrência dentro da série. |
items[].parent_event_id | string<uuid> | null | não | Aponta pro master quando é override. |
items[].is_overridden | boolean | não | |
items[].created_by | string<uuid> | não | |
items[].created_at | string<date-time> | não | |
items[].updated_at | string<date-time> | não | |
items[].meet_room_id | string<uuid> | não | Sala de vídeo vinculada ao evento (F-063). AUSENTE quando o evento não tem sala — o cliente testa presença da chave, não string vazia. Só é devolvido em |
items[].meet_room_slug | string | não | Slug da mesma sala. É a chave da entrada de CONVIDADO ( |
items[].reminders | array<CalendarEventReminder> | não | Lembretes do evento (R-007). Devolvido em |
items[].reminders[].id | string<uuid> | sim | |
items[].reminders[].trigger_offset_minutes | integer | sim | |
items[].reminders[].kind | string | sim | enum: |
items[].reminders[].fired_at | string<date-time> | não | AUSENTE enquanto pendente; presente quando terminal. |
next_cursor | string | não | Cursor da próxima página, ou |
400
Input inválido.
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
error | string | sim | Mensagem humana curta; sem stack. |
401
Faltando ou token inválido.
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
error | string | sim | Mensagem humana curta; sem stack. |
403
Sem permissão para o recurso.
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
error | string | sim | Mensagem humana curta; sem stack. |
429
Limite de requisições excedido.
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
error | string | sim |
500
Em erro de leitura
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
error | string | sim |
Exemplos
O "Try it" está desligado nesta referência. Use os exemplos com a sua credencial de teste.
curl
curl -sS -X GET 'https://api-calendar.axuz.net/me/calendar/upcoming' \
-H "Authorization: Bearer $AXUZ_TOKEN"Node.js
const res = await fetch("https://api-calendar.axuz.net/me/calendar/upcoming", {
method: 'GET',
headers: {
Authorization: `Bearer ${process.env.AXUZ_TOKEN}`,
},
});
if (!res.ok) throw new Error(`HTTP ${res.status}: ${await res.text()}`);
console.log(await res.json());Python
import os
import requests
res = requests.request(
"GET",
"https://api-calendar.axuz.net/me/calendar/upcoming",
headers={
"Authorization": f"Bearer {os.environ['AXUZ_TOKEN']}",
},
timeout=30,
)
res.raise_for_status()
print(res.json())