Obtener Tratamiento

Obtener Tratamiento

POST /cl/consent_manager/get_processing

Devuelve el detalle completo de un tratamiento (DataProcessing): estado principal, vigencia, eje de evidencia con piezas, snapshot histórico de la actividad y de los T&C, trazabilidad, historia inmutable de eventos y las solicitudes de derechos abiertas que lo alcanzan. Es una operación de solo lectura: no muta nada.

  • URL de producción: https://api.floid.app/cl/consent_manager/get_processing
  • URL de sandbox: https://sandbox.floid.app/cl/consent_manager/get_processing

Headers requeridos

Authorization: Bearer {{TOKEN}}
Content-Type: application/json

El client_id se deriva del Bearer token. Si lo envías en el body, el servidor lo ignora. No lo incluyas.


Parámetros del body

CampoTipoRequeridoDescripción
processing_idstring (UUID)Identificador del tratamiento (processing_id) devuelto por create_processing.
sandboxbooleanNotrue consulta el espacio sandbox (datos aislados). Por defecto false (producción).

Si no envías processing_id, la API devuelve MISSING_PROCESSING_ID (400). Si el tratamiento no existe o no pertenece a tu cliente, devuelve PROCESSING_NOT_FOUND (404).


Ejemplo

curl --location 'https://api.floid.app/cl/consent_manager/get_processing' \
  --header 'Content-Type: application/json' \
  --header 'Authorization: Bearer {{TOKEN}}' \
  --data '{ "processing_id": "550e8400-e29b-41d4-a716-446655440000" }'

Respuesta exitosa (200)

El envelope estándar es { code, message, caseid, data }. El caseid corresponde a la llamada del gateway (no al tratamiento). En data viaja el detalle del tratamiento.

{
  "code": 200,
  "message": "OK",
  "caseid": "b3f1c2a4-9e77-4c31-8a10-2f6d5e7a1b90",
  "data": {
    "processing_id": "550e8400-e29b-41d4-a716-446655440000",
    "status": "ACTIVE",
    "legal_basis": "CONSENT",
    "legal_framework": "REDEC",
    "activity": {
      "version_number": 3,
      "activity_code": "marketing-redec",
      "activity_uid": "act_9f8e7d6c",
      "nombre": "Marketing directo",
      "descripcion": "Envío de comunicaciones comerciales",
      "legal_framework": "REDEC",
      "base_legal": "CONSENT",
      "estado": "PUBLISHED",
      "requires_sensitive": false,
      "data_categories_json": ["identidad.nombre", "identidad.rut", "contacto.email"],
      "data_uses_json": ["uso.marketing"],
      "data_subjects_json": ["sujeto.cliente"],
      "retention_days": 365,
      "expiration_days": 365,
      "tc_version_id": 42,
      "term_policy": "FIXED_DURATION_FROM_FACT",
      "evidence_requirement": "REQUIRED",
      "evidence_custody": "CLIENT",
      "evidence_formats_json": ["JSON", "PDF"],
      "evidence_deferred_days": null,
      "institution_code": "1234",
      "rights_rules_json": [
        { "who_code": "sujeto.cliente", "right_type": "ACCESS", "allowed": true, "online": false, "deadline_days": 15 }
      ]
    },
    "terms": {
      "version": 2,
      "title": "Términos de marketing",
      "status": "PUBLISHED",
      "snapshot_url": "https://cdn.floid.app/tc/marketing-v2.pdf",
      "hash": "9f2b...e7"
    },
    "subject": {
      "external_id_index": "a1b2c3d4e5f6... (blind index HMAC, no reversible)",
      "snapshot": {
        "subject_type": "NATURAL",
        "subject_identification": { "type": "CL_RUT", "value": "12.345.678-5" },
        "name": "Juan Pérez",
        "email": "[email protected]"
      }
    },
    "trace": {
      "operational_code": "crm-op-8891",
      "business_reference": "order-2026-0091",
      "consent_token": "c0ffee00-1111-2222-3333-444455556666",
      "medium": "ELECTRONIC",
      "origin": {
        "created_by": "gateway",
        "is_sandbox": false,
        "source_ip": "200.1.2.3",
        "widget_id": null
      }
    },
    "term": {
      "end_mode": "FIXED_DURATION_FROM_FACT",
      "started_at": "2026-09-10T13:00:00.000Z",
      "anchor_at": null,
      "ends_at": "2027-09-10T13:00:00.000Z",
      "expires_at": "2027-09-10T13:00:00.000Z",
      "ended_at": null,
      "terminated_at": null
    },
    "evidence": {
      "status": "RECEIVED",
      "due_at": null,
      "pieces": [
        {
          "evidence_id": "ev_7c2a1b0d",
          "source_event_id": "evt_11aa22bb",
          "source_event_type": "CONSENT_GRANTED",
          "received_at": "2026-09-10T13:00:00.000Z",
          "format": "JSON",
          "custody": "CLIENT",
          "hash": "hash-declarado",
          "ref": "https://institution.example/evidence/redec-001.json"
        }
      ]
    },
    "redec": {
      "consent_id": "institution-consent-001",
      "institution_code": "1234",
      "purpose": 2,
      "objective": "02",
      "executive_rut": "98765432-1"
    },
    "history": [
      {
        "event_id": "evt_11aa22bb",
        "event_type": "CONSENT_GRANTED",
        "occurred_at": "2026-09-10T13:00:00.000Z",
        "received_at": "2026-09-10T13:00:05.000Z",
        "voided": false,
        "voided_by_event_id": null,
        "targets_event_id": null,
        "origin": null,
        "activity_version_number": 3
      }
    ],
    "rights": {
      "open": [
        {
          "rights_request_id": "9c1f4b2a-77de-4a10-9b33-1e2f3a4b5c6d",
          "right_code": "ACCESS",
          "who_code": "sujeto.cliente",
          "status": "RECEIVED",
          "received_at": "2026-09-12T09:15:00.000Z",
          "due_at": "2026-09-27T09:15:00.000Z",
          "is_overdue": false
        }
      ]
    }
  }
}

Estructura de data

Nivel principal

CampoTipoDescripción
processing_idstringUUID del tratamiento (su identidad; no se fusiona con otros).
statusstringEstado del tratamiento: ACTIVE, REVOKED, TERMINATED, EXPIRED.
legal_basisstringBase legal inferida de la actividad: CONSENT, CONTRACT, LEGITIMATE_INTEREST, LEGAL_OBLIGATION.
legal_frameworkstringMarco legal: REDEC o LPDP.

activity — snapshot histórico de la actividad

Versión inmutable de la actividad resuelta por el ID almacenado al iniciar el tratamiento (no la versión vigente al leer). Se identifica sólo por version_number.

CampoTipoDescripción
version_numbernumberNúmero de versión de la actividad aplicada.
activity_codestringCódigo de la actividad.
nombre / descripcionstringNombre y descripción de la versión.
legal_framework / base_legalstringMarco y base legal de la versión.
data_categories_json / data_uses_json / data_subjects_jsonarrayCategorías de datos, usos y titulares declarados.
term_policystringPolítica de término: FIXED_DURATION_FROM_FACT, RETENTION_PERIOD_FROM_ANCHOR, TERMINATION_DEFINED_BY_CONTROLLER.
evidence_requirement / evidence_custody / evidence_formats_json / evidence_deferred_daysmixtoPolítica de evidencia de la actividad.
rights_rules_jsonarrayReglas de derechos aplicables (titular, derecho, plazo, online).

terms — snapshot de los T&C

null si la actividad no exige T&C.

CampoTipoDescripción
versionnumberNúmero de versión pública de los T&C aplicados.
titlestringTítulo del documento.
statusstringEstado de la versión de T&C.
snapshot_urlstringURL del snapshot inmutable del documento.
hashstringHash del archivo del snapshot.

subject — titular

CampoTipoDescripción
external_id_indexstringBlind index (HMAC) del subject_external_id. No reversible; sirve para búsquedas por igualdad.
snapshotobjectSnapshot descifrado del titular. El único campo obligatorio es subject_identification; el resto (name, email, etc.) es opcional.

trace — trazabilidad (opaca)

Nunca se usa para identidad, deduplicación ni sucesión.

CampoTipoDescripción
operational_codestringCódigo operacional del responsable.
business_referencestringReferencia de negocio del evento de inicio.
consent_tokenstringToken público del consentimiento (correlación legacy).
mediumstringMedio de captura: ELECTRONIC, VERBAL, PHYSICAL.
originobjectProcedencia del registro (ver tabla siguiente).

trace.origin

CampoTipoDescripción
created_bystringFuente del registro: gateway, USER_MANUAL, SYSTEM, etc.
is_sandboxbooleantrue si el tratamiento vive en el espacio sandbox.
source_ipstringIP de origen (si se registró).
widget_idnumberWidget de origen (null si fue API/manual).

term — vigencia

CampoTipoDescripción
end_modestringPolítica de término: FIXED_DURATION_FROM_FACT, RETENTION_PERIOD_FROM_ANCHOR, TERMINATION_DEFINED_BY_CONTROLLER.
started_atstring (ISO 8601)Inicio del tratamiento (hecho de inicio).
anchor_atstring (ISO 8601)Ancla de retención (sólo RETENTION_PERIOD_FROM_ANCHOR).
ends_atstring (ISO 8601)Fin máximo calculado desde el hecho.
expires_atstring (ISO 8601)Acortamiento del consentimiento (nunca extiende ends_at).
ended_atstring (ISO 8601)Término real (null si sigue vigente).
terminated_atstring (ISO 8601)Alias conservado de ended_at.

evidence — eje de evidencia

CampoTipoDescripción
statusstringEstado del eje: NOT_REQUIRED, PENDING, RECEIVED, OVERDUE.
due_atstring (ISO 8601)Vencimiento de evidencia diferida (null si no aplica).
piecesarrayPiezas de evidencia activas (ver tabla siguiente).

evidence.pieces[]

CampoTipoDescripción
evidence_idstringIdentificador público de la pieza.
source_event_idstringEvento que aportó la pieza.
source_event_typestringTipo del evento fuente.
received_atstring (ISO 8601)Momento de recepción de la pieza.
formatstringFormato de la evidencia (JSON, PDF, etc.).
custodystringCustodia de la evidencia.
hashstringHash declarado de la pieza.
refstringReferencia/URL de la evidencia.

redec — bloque REDEC

null para tratamientos LPDP.

CampoTipoDescripción
consent_idstringIdentificador del consentimiento en la institución.
institution_codestringCódigo de institución REDEC.
purposenumberFinalidad (1 | 2).
objectivestringObjetivo (01..07).
executive_rutstringRUT del ejecutivo.

history[] — historia inmutable

Lista ordenada cronológicamente de eventos.

CampoTipoDescripción
event_idstringIdentificador público del evento.
event_typestringCONSENT_GRANTED, PROCESSING_DECLARED, CONSENT_REVOKED, PROCESSING_TERMINATED, EVIDENCE_RECEIVED, EVENT_VOIDED.
occurred_atstring (ISO 8601)Momento en que ocurrió el hecho.
received_atstring (ISO 8601)Momento en que Floid recibió el evento.
voidedbooleantrue si el evento fue anulado por otro.
voided_by_event_idstringEvento que lo anuló (null si no aplica).
targets_event_idstringSólo en EVENT_VOIDED: evento objetivo anulado.
originobjectOrigen de sólo lectura RIGHTS_REQUEST (null en eventos operacionales).
activity_version_numbernumberVersión de la actividad vigente al ocurrir el evento.

rights — solicitudes de derechos abiertas

rights.open[] contiene sólo los RightsRequest en estado RECEIVED que alcanzan este tratamiento. Un caso RESOLVED deja de aparecer sin cambiar la forma del contenedor.

CampoTipoDescripción
rights_request_idstringIdentificador público de la solicitud.
right_codestringDerecho solicitado (ACCESS, DELETE, etc.).
who_codestringTitular al que aplica la regla.
statusstringEstado del caso (RECEIVED).
received_atstring (ISO 8601)Momento de recepción.
due_atstring (ISO 8601)Vencimiento (null si la regla es en línea).
is_overduebooleantrue si venció y sigue RECEIVED.

Errores

HTTPerror_codeCuándo
400MISSING_PROCESSING_IDFalta processing_id en el body.
404PROCESSING_NOT_FOUNDEl processing_id no existe o no pertenece a tu cliente.
401UNAUTHORIZEDBearer token ausente o inválido.
500INTERNAL_ERRORError inesperado del servidor.