Saltar al contenido principal

Autenticación

Cada petición a /rest/v1 necesita una clave de API de la organización. La mayoría de las rutas son de solo lectura. Las claves también pueden enviar un recordatorio a un solo invitado cuando incluyen reminders:send.

Crear una clave​

Los Owners y Organization Admins crean claves desde My organization. El secreto es un JWT y se muestra una sola vez. WeHabit solo guarda un hash SHA-256 de ese token.

Cada clave pertenece a una organización y se emite con los alcances events:read, guests:read y reminders:send. Puede listar eventos e invitados y enviar un correo de recordatorio a un solo registro. No puede crear eventos, actualizar o borrar datos de invitados, ni enviar a todos los invitados a la vez.

Puedes definir una fecha de expiración. La API rechaza la clave después de ese momento. Revoke la desactiva de inmediato, aunque no haya expirado. Otros Owners y Organization Admins pueden ver quién creó una clave, cuándo se creó y cuándo expira.

Enviar la clave​

Authorization: Bearer <JWT>
Accept: application/json

Content-Type no es necesario en peticiones GET. En POST (recordatorio a un invitado), envía Content-Type: application/json. X-Request-ID es opcional. Si envías un id corto (letras, números, ., _ o -, hasta 128 caracteres), la API lo devuelve en la respuesta.

Límites​

Cada clave permite 60 peticiones por minuto. La ventana es un minuto de reloj. Al superarla, la API responde 429 y el encabezado Retry-After.

Forma de los errores​

Todos los errores usan este cuerpo:

{
"error": {
"code": "UNAUTHORIZED",
"message": "Authentication is required."
}
}
EstadoCódigoCuándo
401UNAUTHORIZEDJWT ausente, mal formado, inválido o expirado, o una clave revocada.
403FORBIDDENLa clave es válida pero no incluye el alcance que exige la ruta.
400INVALID_REQUESTUn parámetro de consulta o campo JSON es inválido. details nombra cada campo.
404NOT_FOUNDLa ruta no existe, o un registro referenciado (como una sucursal o un invitado) no se encontró en esta organización.
405METHOD_NOT_ALLOWEDLa ruta existe pero el método HTTP no está permitido. La respuesta incluye Allow.
409EVENT_DRAFTEl recurso existe pero el evento debe publicarse primero (recordatorio a un invitado).
429RATE_LIMIT_EXCEEDEDLa clave superó 60 peticiones en el minuto actual. retry_after son segundos.
500INTERNALLa API no pudo completar la petición.