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_
| Campo | Requerido | Tipo | Descripció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. |
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
| Campo | Requerido | Tipo | Descripción |
|---|---|---|---|
brokenAt |
no | integer | null |
|
count |
sí | integer |
|
valid |
sí | boolean |
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
| Campo | Requerido | Tipo | Descripció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 |
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
| Campo | Requerido | Tipo | Descripción |
|---|---|---|---|
decryptSlo |
sí | DecryptSlo |
|
families |
sí | RateLimitFamily[] |
|
maskedDegradationPolicy |
sí | string |
|
object |
no | "compliance.limits" |
|
revealBudget |
sí | RevealBudgetPolicy |
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
| Campo | Requerido | Tipo | Descripción |
|---|---|---|---|
data |
sí | DatacenterItem[] |
|
object |
no | "list" |
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
| Campo | Requerido | Tipo | Descripción |
|---|---|---|---|
data |
sí | SubprocessorItem[] |
|
object |
no | "list" |
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
| Campo | Requerido | Tipo | Descripció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
| Campo | Requerido | Tipo | Descripción |
|---|---|---|---|
breachId |
sí | string |
|
detectedAt |
sí | string (date-time) |
|
object |
no | "compliance.breach_notification" |
|
scope |
sí | string |
|
severity |
sí | string |