Skip to content

Aceptación de Acuerdos

Verifica si el tenant autenticado necesita volver a aceptar algún acuerdo, y registra una nueva aceptación cuando corresponda.

Usa esto al iniciar sesión o al cargar la aplicación para mostrar un modal de re-aceptación. Si needsAcceptance es true, muestra los documentos actualizados listados en outdated y llama a POST /v1/tenants/agreements cuando el usuario confirme.

Verificar estado

GET /v1/tenants/agreements

Autenticación: Authorization: Bearer <api-key>

Respuesta

Todo vigente — no se requiere ninguna acción

json
{
  "ok": true,
  "agreements": {
    "needsAcceptance": false,
    "outdated": [],
    "hasPublishedAgreements": true
  }
}

Uno o más documentos actualizados desde la última aceptación

json
{
  "ok": true,
  "agreements": {
    "needsAcceptance": true,
    "outdated": [
      {
        "documentType": "DPA",
        "currentVersion": "2026-07-01",
        "acceptedVersion": "2026-06-28",
        "url": "/v1/tenants/agreements/DPA",
        "acceptUrl": "/v1/tenants/agreements"
      }
    ],
    "hasPublishedAgreements": true
  }
}

Ninguna plantilla de acuerdo ha sido publicada todavía

json
{
  "ok": true,
  "agreements": {
    "needsAcceptance": false,
    "outdated": [],
    "hasPublishedAgreements": false
  }
}

Cada entrada en outdated indica el tipo específico de documento que cambió. Usa la url para obtener y mostrar el documento actualizado antes de solicitar la re-aceptación.

CampoDescripción
needsAcceptancetrue si algún tipo de documento tiene una nueva versión de plantilla que aún no ha sido ACCEPTED
outdated[].documentTypeTERMS, PRIVACY, o DPA
outdated[].currentVersionVersión de plantilla actualmente publicada
outdated[].acceptedVersionVersión de plantilla que el tenant aceptó por última vez, o null si nunca la aceptó
outdated[].statusPENDING (generada, no aceptada), o NOT_GENERATED (plantilla publicada pero instancia aún no creada)
outdated[].urlURL de la instancia personalizada del documento del tenant (GET /v1/tenants/agreements/:type)
hasPublishedAgreementsfalse únicamente cuando nunca se ha publicado ninguna plantilla de acuerdo (entorno nuevo o previo al lanzamiento) — distingue ese caso de needsAcceptance: false, que también significa "todo aceptado". Un valor false indica que outdated está vacío porque no hay nada que mostrar todavía, no porque el tenant esté al día.

Llamar a este endpoint genera automáticamente cualquier instancia PENDING faltante para nuevas versiones de plantilla — no se necesita una llamada de backfill separada después de que el administrador publique una actualización.

Errores

Estado HTTPCódigoCuándo ocurre
401UNAUTHORIZEDAPI key ausente o inválida
429TOO_MANY_REQUESTSSe excedió el límite de tasa

Este es un endpoint de solo lectura, por lo que sigue siendo accesible incluso si la cuenta del tenant está SUSPENDED — consulta la entrada ACCOUNT_SUSPENDED en el catálogo de errores.

Registrar aceptación

POST /v1/tenants/agreements

Autenticación: Authorization: Bearer <api-key>

Cuerpo de la solicitud

json
{ "termsVersion": "2026-07-01" }
CampoTipoRequeridoDescripción
termsVersionstringEl string de versión del documento TERMS vigente (proveniente de GET /v1/agreements). El servidor valida esto contra lo que está actualmente publicado antes de registrar nada.

Respuesta

200 OK

json
{ "ok": true }

Registra una fila de aceptación por cada tipo de documento actualmente publicado (TERMS, PRIVACY, DPA), capturando la dirección IP y el user agent de la solicitud junto con la versión y el hash del contenido.

Errores

Estado HTTPCódigoCuándo ocurre
400VALIDATION_FAILEDtermsVersion ausente o demasiado largo
400VERSION_MISMATCHEl termsVersion enviado no coincide con la versión de TERMS actualmente publicada — el documento se actualizó entre el momento en que tu interfaz cargó y el momento en que el usuario hizo clic en aceptar. Vuelve a consultar GET /v1/agreements, muestra el contenido actualizado y solicita la aceptación nuevamente.
401UNAUTHORIZEDAPI key ausente o inválida
403FORBIDDENLa cuenta está suspendida
429TOO_MANY_REQUESTSSe excedió el límite de tasa

Notas

  • Los cambios en cualquiera de los tres documentos (TERMS, PRIVACY o DPA) de forma independiente aparecerán como un desajuste únicamente para ese tipo — los otros dos no aparecerán en outdated a menos que también hayan cambiado. Esto significa que una actualización exclusiva del DPA activa la re-aceptación solo del DPA, sin forzar al tenant a "re-aceptar" contenido de Términos o Privacidad que no cambió.
  • La API key no necesita X-Issuer-Id — esta es una operación a nivel de tenant.

Documentación de la API de Comprobify