Saltar al contenido principal

Glosario Canónico de Payloads y Eventos

Este glosario evita ambigüedad de nombres y formatos entre frontend, backend, QA y observabilidad.

1. Campos base de API

CampoTipoObligatorioRegla
trace_idUUIDPresente en toda respuesta API
public_idUUID/ULIDNunca exponer PK interna
statusString (enum)Estados definidos por entidad
created_atISO-8601 UTCFecha de creación
updated_atISO-8601 UTCFecha de última modificación
deleted_atISO-8601 UTC/nullNoSoft-delete
country_codeISO-3166 alpha-2Sí (cuando aplica)Ej: GT, MX, CO
localeStringNoEj: es-GT
versionSemver x.y.zContratos/documentos/versiones de esquema

2. Campos base de error

CampoTipoObligatorioRegla
error.codeString enumVer catálogo canónico de errores
error.messageStringMensaje para cliente
error.detailsArrayNoLista de errores por campo
error.trace_idUUIDCorrelación operativa
error.retryableBooleanDefine si cliente puede reintentar

3. Campos base de eventos

CampoTipoObligatorioRegla
event_idUUIDIdentificador único del evento
event_nameString enumNombre canónico (APPOINTMENT_CONFIRMED, etc.)
occurred_atISO-8601 UTCTimestamp del evento
producerStringServicio emisor
schema_versionSemver x.y.zVersionado del payload
payloadObjectDatos mínimos de negocio
metaObjectNoContexto (country_code, source)

4. Convenciones de nomenclatura

  • API payloads: snake_case.
  • Eventos de dominio: event_name en UPPER_SNAKE_CASE.
  • Enums:
    • Estados de entidad en UPPER_SNAKE_CASE.
    • Roles en UPPER_SNAKE_CASE.
  • IDs:
    • Público: UUID/ULID.
    • Interno: nunca expuesto fuera de backend.

5. Campos prohibidos en respuestas públicas

  • password_hash
  • mfa_secret
  • refresh_token (si no es endpoint de sesión explícito)
  • internal_id / PK autoincremental
  • IP o datos sensibles no necesarios para UX

6. Checklist de uso

  • Todo endpoint usa trace_id y formato canónico de error.
  • Todo evento usa contrato base y schema_version.
  • No hay campos duplicados con distinto nombre para el mismo concepto.
  • Nombres de estado/rol alineados a enums oficiales en DB/OpenAPI.