Axuz Developers

GET /me/calendar/upcoming

Próximos eventos do caller em TODOS os teams dele.

  • Access: Signed in
  • Service: https://api-calendar.axuz.net

Accepted authentication

  • 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.

Parameters

NameInTypeRequiredDescription
fromquerystringno

Início da janela (default: agora).

toquerystringno

Fim da janela (default: from + 30d). Janela > 90 dias é recusada com 400, não truncada.

with_meetquerystringno

true devolve só eventos com sala de vídeo vinculada.

limitqueryintegerno
cursorquerystringno

Cursor opaco devolvido em next_cursor. Não parsear.

Responses

200

OK.

NameTypeRequiredDescription
itemsarray<CalendarEvent>yes
items[].idstring<uuid>yes
items[].calendar_idstring<uuid> | nullno
items[].calendar_namestringno
items[].calendar_colorstringno
items[].team_idstring<uuid> | nullno
items[].summarystringyes
items[].descriptionstring | nullno
items[].locationstring | nullno
items[].dtstartstring<date-time>yes
items[].dtendstring<date-time>yes
items[].all_daybooleanyes
items[].rrulestring | nullno

RFC5545 RRULE (ex: FREQ=WEEKLY;BYDAY=MO,WE).

items[].tzstringno

IANA timezone name (Region/City). '' = UTC.

items[].is_recurring_instancebooleanno

True quando é ocorrência expandida (não master row).

items[].recurrence_idstring<date-time> | nullno

dtstart canônico da ocorrência dentro da série.

items[].parent_event_idstring<uuid> | nullno

Aponta pro master quando é override.

items[].is_overriddenbooleanno
items[].created_bystring<uuid>no
items[].created_atstring<date-time>no
items[].updated_atstring<date-time>no
items[].meet_room_idstring<uuid>no

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 GET .../events/{id}; a listagem não o traz. Com ele o cliente monta a URL do membro, <MEET_URL>/<teamId>/<meet_room_id>, e distingue "criar sala" de "entrar na sala" sem precisar POSTar para descobrir (O-005).

items[].meet_room_slugstringno

Slug da mesma sala. É a chave da entrada de CONVIDADO (<MEET_URL>/convidado/<slug>, sem conta nem team) — por isso vale como link de compartilhamento externo, e o meet_room_id não.

items[].remindersarray<CalendarEventReminder>no

Lembretes do evento (R-007). Devolvido em GET .../events/{id} e na resposta de POST/PATCH que trouxe reminders; a listagem por janela NÃO o traz. AUSENTE quando o evento não tem lembretes.

items[].reminders[].idstring<uuid>yes
items[].reminders[].trigger_offset_minutesintegeryes
items[].reminders[].kindstringyes

enum: "email", "push", "inapp"

items[].reminders[].fired_atstring<date-time>no

AUSENTE enquanto pendente; presente quando terminal.

next_cursorstringno

Cursor da próxima página, ou "" quando não há mais nada. Vem vazio inclusive quando a página fecha exatamente no fim, para que o cliente não gaste uma requisição a mais só para descobrir que acabou.

400

Input inválido.

NameTypeRequiredDescription
errorstringyes

Mensagem humana curta; sem stack.

401

Faltando ou token inválido.

NameTypeRequiredDescription
errorstringyes

Mensagem humana curta; sem stack.

403

Sem permissão para o recurso.

NameTypeRequiredDescription
errorstringyes

Mensagem humana curta; sem stack.

429

Limite de requisições excedido.

NameTypeRequiredDescription
errorstringyes

500

Em erro de leitura

NameTypeRequiredDescription
errorstringyes

Examples

"Try it" is turned off in this reference. Use the examples with your test credential.

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())