Rascunho
Convenções
Formatos, idempotência, paginação, erros e limites de requisição.
Básico
- URL base
https://api.wagend.app/v1. Mudanças incompatíveis saem como nova versão. - JSON na entrada e na saída (
Content-Type: application/json). - Datas em ISO 8601 com offset (
2026-10-15T09:45:00-03:00). Guardadas em UTC. - Valores em centavos inteiros mais
currency(BRL,ARS,PYG,USD). - IDs são strings opacas com prefixo (
bkg_,svc_,res_,grp_,cus_).
Idempotência
POST /holds, POST /holds/{id}/confirm, POST /bookings e POST /bookings/{id}/reschedule exigem o header Idempotency-Key (por exemplo um UUID). Repetir uma requisição com a mesma chave em até 24 horas devolve a resposta original. Reutilizar a chave com outro corpo devolve 422.
Paginação
Os endpoints de lista usam cursores:
curl "https://api.wagend.app/v1/bookings?limit=50" -H "Authorization: Bearer $WAGEND_KEY"
# → { "data": [...], "next_cursor": "eyJpZCI6..." }
curl "https://api.wagend.app/v1/bookings?limit=50&cursor=eyJpZCI6..." -H "Authorization: Bearer $WAGEND_KEY"
Erros
Os erros seguem a RFC 9457 (application/problem+json):
{
"type": "https://wagend.app/docs/api/conventions#errors",
"title": "Slot no longer available",
"status": 409,
"code": "slot_taken",
"alternatives": [{ "start": "2026-10-15T10:15:00-03:00", "end": "2026-10-15T10:45:00-03:00" }]
}
code | Status | Quando |
|---|---|---|
invalid_request | 400 / 422 | Falha de validação |
unauthorized | 401 | Chave ausente, inválida ou revogada |
insufficient_scope | 403 | A chave não tem o escopo |
not_found | 404 | Id desconhecido (ou de outro workspace) |
slot_taken | 409 | Outra pessoa pegou o horário |
invalid_transition | 409 | Por exemplo confirmar um agendamento cancelado |
hold_expired | 410 | A pré-reserva expirou antes de confirmar |
idempotency_mismatch | 422 | Mesma chave, corpo diferente |
rate_limited | 429 | Requisições demais |
Limites de requisição
Os limites valem por chave e por workspace. Toda resposta traz RateLimit-Limit, RateLimit-Remaining e RateLimit-Reset. Em 429, espere Retry-After segundos.