Cumplimiento

La superficie que tu equipo legal necesita sin pedirte nada a ti: bitácora de accesos encadenada y verificable, informes, subprocesadores, centros de datos y los límites vigentes de tu cuenta.

La bitácora es append-only y encadenada por hash: verify comprueba que nadie la alteró.

limits es la fuente única de los topes que te aplican. No los transcribas: léelos.

Consultar la bitácora

GET /v1/audit-logs

Requiere una API key secreta (belfort_{env}_sk_…) con scope compliance:read.

Los accesos a datos personales, por cursor. Quién, cuándo, a qué persona, con qué finalidad y si vio el dato en claro o enmascarado.

Parámetros

actorId query
actorType query
channel query
createdGte query
createdLte query
format query string
limit query Tamaño de página (1–100).
startingAfter query nextCursor de la página anterior. Excluyente con endingBefore.
endingBefore query previousCursor de la página actual. Excluyente con startingAfter.
includeTotal query Calcula totalCount. Cuesta un COUNT(*) sobre el filtro entero, así que está apagado por defecto: pídelo solo cuando vayas a enseñar el total.
personId query

Respuestas

200 Successful Response — ListEnvelope_AuditLogEntry_

CampoRequeridoTipoDescripción
data sí AuditLogEntry[]
hasMore sí boolean true si quedan resultados después de esta página.
limit sí integer El límite realmente aplicado (puede ser menor al pedido).
nextCursor no string | null Pásalo como startingAfter para la siguiente página.
object no "list"
previousCursor no string | null Pásalo como endingBefore para la página anterior.
totalCount no integer | null Total de coincidencias. Solo se calcula si pides includeTotal=true — es un COUNT(*) sobre el filtro entero y no se cobra a quien no lo necesita.

Errores posibles (problem+json): 400 405 422 500

Verificar la cadena de la bitácora

GET /v1/audit-logs/verify

Requiere una API key secreta (belfort_{env}_sk_…) con scope compliance:read.

La bitácora está encadenada por hash. Esto comprueba que nadie borró ni alteró una entrada — incluidos nosotros.

Respuestas

200 Successful Response — AuditChainVerification

CampoRequeridoTipoDescripción
brokenAt no integer | null
count sí integer
valid sí boolean

Errores posibles (problem+json): 400 405 422 500

Obtener un informe de cumplimiento

GET /v1/compliance/reports

Requiere una API key secreta (belfort_{env}_sk_…) con scope compliance:read.

El informe que tu equipo legal puede archivar, generado a partir de la bitácora real.

Parámetros

type query · requerido string

Respuestas

200 Successful Response — ComplianceReport

CampoRequeridoTipoDescripción
auditChain sí AuditChainSummary
datacenters sí DatacenterItem[]
generatedAt sí string (date-time)
object no "compliance.report"
retentionPolicies sí RetentionPolicyItem[]
subprocessors sí SubprocessorItem[]
type sí nom024 | cnbv
verificationVolume sí VerificationVolumeSummary

Errores posibles (problem+json): 400 405 422 500

Consultar tus límites

GET /v1/compliance/limits

Requiere una API key secreta (belfort_{env}_sk_…) con scope compliance:read.

Los topes y objetivos de servicio vigentes para tu cuenta. Es la fuente única: léelos en vez de transcribirlos, porque cambian sin que cambie tu código.

Respuestas

200 Successful Response — RateLimitPolicy

CampoRequeridoTipoDescripción
decryptSlo sí DecryptSlo
families sí RateLimitFamily[]
maskedDegradationPolicy sí string
object no "compliance.limits"
revealBudget sí RevealBudgetPolicy

Errores posibles (problem+json): 400 405 422 500

Listar centros de datos

GET /v1/compliance/datacenters

Requiere una API key secreta (belfort_{env}_sk_…) con scope compliance:read.

Dónde se procesan y se guardan los datos. Es la respuesta a la pregunta de localización que aparece en toda due diligence.

Respuestas

200 Successful Response — DatacenterList

CampoRequeridoTipoDescripción
data sí DatacenterItem[]
object no "list"

Errores posibles (problem+json): 400 405 422 500

Listar subprocesadores

GET /v1/compliance/subprocessors

Requiere una API key secreta (belfort_{env}_sk_…) con scope compliance:read.

Los terceros que intervienen en el tratamiento, con su función. Lo exige el contrato de encargo.

Respuestas

200 Successful Response — SubprocessorList

CampoRequeridoTipoDescripción
data sí SubprocessorItem[]
object no "list"

Errores posibles (problem+json): 400 405 422 500

Notificar una vulneración

POST /v1/compliance/breach-notifications

Requiere una API key secreta (belfort_{env}_sk_…) con scope compliance:write.

Registra y dispara la notificación de una vulneración de seguridad. Idempotency-Key obligatoria: un reintento no puede duplicar un aviso que tiene consecuencias regulatorias.

Parámetros

Idempotency-Key header

Cuerpo de la petición

application/json · schema BreachNotificationRequest

CampoRequeridoTipoDescripción
detectedAt no string (date-time) | null
scope sí string
severity sí low | medium | high | critical
subprocessorsAffected no string[] | null

Respuestas

201 Successful Response — BreachNotificationResponse

CampoRequeridoTipoDescripción
breachId sí string
detectedAt sí string (date-time)
object no "compliance.breach_notification"
scope sí string
severity sí string

Errores posibles (problem+json): 400 405 422 500