Skip to main content

ICAP Network-Layer DLP API

Base path: /v1/icap Auth: Session token or API key — see Authentication. Entitlement: entitlement.icap_dlp (every route except GET /connectors). Full-content read additionally requires entitlement.icap_full_capture. Permissions: icap:read (list connectors, read events, read captured content), icap:write (create/update connectors, rotate secret).

Network-layer DLP has two distinct planes. This page covers only the operator/admin REST surface. Inline governance happens out-of-band on the raw-TCP ICAP listener (IcapServerService, port 1344) — an SWG never speaks HTTP/JWT to us, it speaks ICAP (RFC 3507). See the Network-Layer DLP product page.

PlaneTransportAuthWho calls it
Operator / adminREST /v1/icap/*FlexibleAuthGuard + entitlements + permissionsYour operator UI / dashboards
Inline governanceRaw TCP ICAP, port 1344X-Trinitite-Connector + X-Trinitite-Icap-SecretThe enterprise SWG (Zscaler, Cisco SWA, Squid, …)

Endpoints

GET /v1/icap/connectorsicap:read

List ICAP connectors. The secret is redacted.

POST /v1/icap/connectorsicap:write

Provision one connector per SWG integration. Creation returns a one-time shared secret the SWG presents on every ICAP transaction — store it immediately; it is never re-readable afterward.

{ "label": "zscaler-prod", "mode": "reqmod", "policy_ref": "policy:dlp_v3" }

Response 201 Created:

{ "id": "icp_01J9X…", "label": "zscaler-prod", "mode": "reqmod", "secret": "ics_…ONCE…", "icap_endpoint": "icap://trinitite.example:1344/reqmod" }

PATCH /v1/icap/connectors/:idicap:write

Update label / mode / policy_ref. The secret is not rotated here.

POST /v1/icap/connectors/:id/rotate-secreticap:write

Rotate the shared secret. The old secret remains valid for a configurable overlap window (default 24h) so the SWG can roll without an outage.

GET /v1/icap/eventsicap:read

The governance audit feed — every ICAP transaction that produced a verdict. Cursor-paginated, filterable by connector_id, verdict, action, time window.

GET /v1/icap/events/:id/contenticap:read + entitlement.icap_full_capture

The captured request/response body for a single event. Requires the full-capture entitlement; deployments without it return 402 entitlement_missing.

Verdict & action vocabulary

verdictactionMeaning
passedallowNo findings; traffic forwarded.
correctedredactSensitive fragment masked in the rewritten ICAP response.
blockedblockICAP 403 Forbidden returned to the SWG.

Each event carries the standard dlir_receipt_id cross-link and the chain_hash into the per-connector ledger family.

Errors

HTTPerror.codeWhen
402entitlement_missingMissing entitlement.icap_dlp (or icap_full_capture on content read).
404not_foundConnector or event id does not exist.
409conflictDuplicate label for the org.

Network-Layer DLP — the product overview. → Masking API — the tokenization engine ICAP redact uses. → Errors, rate limits & conventions — shared contract.