Skip to content

Agenda ​

Os calendários dos utilizadores da empresa e as suas marcações.

Listar calendários ​

GET /calendars

Permissão · calendar:read

Um calendário pertence a uma pessoa, não à empresa. Este ponto devolve os utilizadores cujos calendários podem ser lidos.

Pedido ​

bash
curl "https://servidor.exemplo/api/integrations/v1/acme/calendars" \
  -H "ApiKey: $GC_API_KEY"

Resposta · 200 ​

json
[
  { "Id": 14, "Name": "Ana Costa" },
  { "Id": 15, "Name": "Rui Marques" }
]

Ler marcações ​

GET /calendars/{idCalendar}/entries    # de um utilizador
GET /calendar-entries                  # de toda a empresa

Permissão · calendar:read

Parâmetros ​

ParâmetroTipoDescrição
fromdata e horaObrigatório. Início do período
todata e horaObrigatório. Fim do período

Pedido ​

bash
# a agenda de uma pessoa
curl "https://servidor.exemplo/api/integrations/v1/acme/calendars/14/entries?from=2026-09-01&to=2026-09-30" \
  -H "ApiKey: $GC_API_KEY"

# a agenda da empresa toda
curl "https://servidor.exemplo/api/integrations/v1/acme/calendar-entries?from=2026-09-01&to=2026-09-30" \
  -H "ApiKey: $GC_API_KEY"

Resposta · 200 ​

Array simples, sem envelope — o período pedido é que limita o volume.

json
[
  {
    "Id": "E1204",
    "IdCalendar": 14,
    "Summary": "Visita ao Edifício Girassol",
    "Description": "Vistoria à garagem na sequência da infiltração.",
    "Start": "2026-09-25T10:00:00",
    "End": "2026-09-25T11:30:00",
    "Editable": true
  },
  {
    "Id": "R881",
    "IdCalendar": 14,
    "Summary": "Assembleia - Edifício Girassol",
    "Description": "",
    "Start": "2026-09-28T18:00:00",
    "End": "2026-09-28T20:00:00",
    "Editable": false
  }
]
CampoTipoDescrição
IdtextoIdentificador da entrada. Ver o aviso abaixo
IdCalendarinteiroO calendário. 0 quando pediu o da empresa toda
SummarytextoO que aparece na agenda
DescriptiontextoDetalhe
Start · Enddata e horaInício e fim
EditablebooleanoSe esta API pode alterá-la

Nem tudo o que está na agenda foi marcado nela

Um calendário mostra também assembleias, tarefas e datas de contratos, que vivem nos seus próprios registos. Essas vêm com Editable a false e não podem ser alteradas nem apagadas por aqui — corrigem-se no registo a que pertencem.

Só as entradas com Editable a true aceitam PATCH e DELETE.

O Id é texto, e não o número que o PATCH recebe

O Id da leitura traz um prefixo que diz de que tipo é a entrada — E1204, R881. Já o PATCH e o DELETE recebem o número, sem prefixo: 1204.

Numa entrada com Editable a true, tire o primeiro carácter para obter o identificador a usar nas escritas.

Erros ​

EstadoCódigoQuando
400MISSING_FIELDFalta from ou to. field diz qual
400INVALID_PERIODO período termina antes de começar
401 · 403Ver Autenticação e Permissões

Criar uma marcação ​

POST /calendar-entries

Permissão · calendar:write · aceita Idempotency-Key

Corpo ​

CampoTipoDescrição
IdCalendarinteiroO calendário onde marcar
SummarytextoObrigatório. O que aparece na agenda
DescriptiontextoDetalhe
Startdata e horaInício
Enddata e horaFim

Pedido ​

bash
curl -X POST "https://servidor.exemplo/api/integrations/v1/acme/calendar-entries" \
  -H "ApiKey: $GC_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
        "IdCalendar": 14,
        "Summary": "Visita ao Edifício Girassol",
        "Description": "Vistoria à garagem na sequência da infiltração.",
        "Start": "2026-09-25T10:00:00",
        "End": "2026-09-25T11:30:00"
      }'

Resposta · 201 ​

json
{ "Id": 1204 }

Já o número, sem prefixo — é o que usa no PATCH e no DELETE.

Erros ​

EstadoCódigoQuando
400INVALID_BODY · MISSING_FIELDCorpo inválido, ou sem Summary
400INVALID_PERIODA marcação termina antes de começar
401 · 403Ver Autenticação e Permissões
409IDEMPOTENCY_KEY_REUSEDA chave já foi usada noutro pedido

Alterar uma marcação ​

PATCH /calendar-entries/{idEntry}

Permissão · calendar:write · aceita Idempotency-Key

Pedido ​

bash
curl -X PATCH "https://servidor.exemplo/api/integrations/v1/acme/calendar-entries/1204" \
  -H "ApiKey: $GC_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
        "Summary": "Visita ao Edifício Girassol (adiada)",
        "Description": "Reagendada a pedido do condómino.",
        "Start": "2026-09-26T10:00:00",
        "End": "2026-09-26T11:30:00"
      }'

O corpo é o mesmo da criação. Os campos enviados substituem os anteriores.

Resposta · 204 ​

Sem corpo.

Erros ​

EstadoCódigoQuando
400INVALID_BODY · MISSING_FIELD · INVALID_PERIODComo na criação
401 · 403Ver Autenticação e Permissões
404ENTRY_NOT_FOUNDNão existe, ou existe mas não foi marcada aqui — as de editable: false
409IDEMPOTENCY_KEY_REUSEDA chave já foi usada noutro pedido

Apagar uma marcação ​

DELETE /calendar-entries/{idEntry}

Permissão · calendar:write · aceita Idempotency-Key

Pedido ​

bash
curl -X DELETE "https://servidor.exemplo/api/integrations/v1/acme/calendar-entries/1204" \
  -H "ApiKey: $GC_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)"

Resposta · 204 ​

Sem corpo.

Erros ​

EstadoCódigoQuando
401 · 403Ver Autenticação e Permissões
404ENTRY_NOT_FOUNDNão existe, ou não foi marcada aqui
409IDEMPOTENCY_KEY_REUSEDA chave já foi usada noutro pedido

A chave de idempotência evita um falso erro

Sem ela, repetir uma eliminação por causa de um tempo esgotado responde 404 — e parece uma falha, quando a marcação está exatamente como queria. Com ela, a repetição devolve o 204 original.

API de Integração GC