Borrar una validación de forma definitiva

Objetivo

Borra de forma definitiva lo que la plataforma guarda de una validación propia: el archivo del comprobante, el CEP, los datos extraídos y todo lo derivado con datos personales. Es lo que DELETE /v1/validations/{id} no hace: ese solo retira la validación del historial.

La validación queda como una lápida con su veredicto, sus fechas y su monto, para que la cuota, las estadísticas y finanzas sigan cuadrando. El borrado no se puede deshacer y no devuelve cuota.

Requisitos previos

  • Una clave de API activa (veriko_…) con el permiso validations:delete, el mismo con el que retiras tus validaciones.
  • Una validación propia en un estado terminal. Una que sigue en curso responde 409 purge_validation_in_progress.

Pasos

1. Preparar el borrado

POST /v1/validations/{id}/purge/prepare no cambia nada: describe lo que se borraría y emite el token de confirmación.

curl -X POST 'https://api.veriko.mx/v1/validations/f47ac10b-58cc-4372-a567-0e02b2c3d479/purge/prepare' \
  -H 'Authorization: Bearer veriko_••••' \
  -H 'Content-Type: application/json'
{
  "data": {
    "type": "validation_purge",
    "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
    "attributes": {
      "confirmation_token": "eyJhZG1pbl9pZCI6Ii4uLiJ9.q1w2e3r4t5y6u7i8o9p0",
      "expires_in": 120,
      "irreversible": true,
      "will_delete": {
        "image": true,
        "cep": true,
        "stored_data": ["request_data", "ocr_result", "normalized_data", "banxico_result"],
        "retry_attempts": 0,
        "probe_attempts": 0,
        "webhook_deliveries": 1,
        "notifications": 0,
        "idempotency_responses": 1,
        "audit_traces": true
      },
      "will_keep": ["id", "validation_type", "status", "banxico_status", "amount", "error_code", "processing_time_ms", "created_at", "completed_at", "deleted_at", "purged_at"],
      "cancels_pending_retries": false,
      "refunds_quota": false,
      "same_image_validation_ids": []
    }
  }
}

Revisa will_delete y will_keep antes de seguir. same_image_validation_ids lista otras validaciones tuyas con el mismo comprobante: cada una guarda su propia copia de lo extraído y se purga por separado.

El token es de un solo uso, está atado a tu cuenta y a esta validación, y caduca en expires_in segundos.

2. Ejecutar el borrado

POST /v1/validations/{id}/purge/execute borra con el token del paso anterior:

curl -X POST 'https://api.veriko.mx/v1/validations/f47ac10b-58cc-4372-a567-0e02b2c3d479/purge/execute' \
  -H 'Authorization: Bearer veriko_••••' \
  -H 'Content-Type: application/json' \
  -d '{ "confirmation_token": "eyJhZG1pbl9pZCI6Ii4uLiJ9.q1w2e3r4t5y6u7i8o9p0" }'
{
  "data": {
    "type": "validation_purge",
    "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
    "attributes": {
      "purged_at": "2026-10-02T09:30:00Z",
      "file_removal": "complete",
      "deleted": { "image": true, "cep_pdf": true, "retry_cycle_cancelled": false, "webhook_deliveries": 1, "idempotency_responses": 1 }
    }
  }
}

file_removal vale complete cuando los archivos ya no existen. Con pending, algún archivo no se pudo borrar en ese momento: el contenido de la base de datos ya está borrado, el archivo no se sirve y el barrido diario de comprobantes lo termina.

3. Comprobar el resultado

Si la respuesta del paso 2 no llega, GET /v1/validations/{id} dice si el borrado se completó: una validación purgada trae purged_at.

curl 'https://api.veriko.mx/v1/validations/f47ac10b-58cc-4372-a567-0e02b2c3d479' \
  -H 'Authorization: Bearer veriko_••••'

La respuesta es la lápida: 200 con el veredicto, las fechas, el monto en normalized_data.monto y purged_at. Ya no trae request_data, ocr_result, banxico_result ni enlaces al CEP.

Errores

códigoestadoqué hacer
purge_validation_in_progress409Esperar a que la validación termine y volver a preparar.
validation_purged410Ya se purgó. Leer la lápida con GET /v1/validations/{id}.
not_found404La validación no existe o es de otra cuenta.
confirmation_token_missing422Falta confirmation_token en el cuerpo.
confirmation_token_expired422El token venció. Volver a preparar.
purge_token_mismatch422El token es de otra validación o de otra cuenta. No se gasta.
confirmation_token_already_used409El token ya se usó. Volver a preparar.

Lo que cambia después

  • La imagen, el CEP, los reintentos y la revisión posterior de esa validación responden 410 validation_purged.
  • Los webhooks, los reintentos y los barridos la ignoran. Un ciclo de reintentos abierto se cancela.
  • La lápida sigue en GET /v1/validations y en las exportaciones, sin clave de rastreo ni cuentas, y cuenta en los totales.

Lo que el borrado no alcanza (respaldos, el catálogo global de cuentas, lo que ya salió por webhook) está en Retención de comprobantes y datos.

Siguientes pasos