DIGITAL 5PL Back to site

Connector SDK

Anyone can add a channel. Nobody has to touch the platform.

A connector is a declaration, not a deployment. You describe the channel, the settings it needs, the secrets it holds and how its payload maps onto the canonical order, shipment and milestone model. Digital 5PL handles validation, retries, tracing, audit and replay.

1. Declare a manifest

The manifest drives the whole onboarding form, the secret vault entries and the mapping editor. Ship a new version and existing connections keep running on the version they were configured against.

{
  "key": "acme-wms",
  "name": "Acme WMS",
  "version": "1.0.0",
  "channel": "api",
  "directions": ["inbound", "outbound"],
  "messageTypes": ["order", "shipment_status", "pod"],
  "config": [
    { "name": "baseUrl", "label": "Base URL", "type": "url", "required": true },
    { "name": "warehouse", "label": "Warehouse code", "type": "string" }
  ],
  "secrets": [
    { "name": "API_TOKEN", "label": "API token", "hint": "Acme > Settings > Integrations" }
  ],
  "fieldMap": {
    "order.order_number": "$.orderRef",
    "order.origin": "$.ship_from.city",
    "order.destination": "$.ship_to.city",
    "order.lines[].sku": "$.items[].sku",
    "order.lines[].quantity": "$.items[].qty"
  }
}

2. Send inbound payloads

Every connection gets its own ingest URL. Sign the raw body with the connection secret; replays of a signature already seen are rejected. The message is traced stage by stage — received, parsed, mapped, validated, applied — with the raw payload kept for audit.

POST /api/public/ingest/{connection-slug}
X-D5PL-Signature: sha256=<hex hmac of the raw body>
Content-Type: application/json

{ "orderRef": "AC-10231", "ship_from": { "city": "Rotterdam" } }

3. Subscribe to domain events

Outbound is a subscription, not a bespoke integration. Pick the event types you care about and receive them signed, in order, with retry and backoff on failure.

POST https://your-endpoint.example.com/hooks
X-D5PL-Event: shipment.departed
X-D5PL-Signature: sha256=<hex hmac of the raw body>

{
  "type": "shipment.departed",
  "entity_type": "shipment",
  "entity_id": "8f2c...",
  "payload": { "reference": "SHP-10422", "mode": "ocean", "etd": "2026-09-02T06:00:00Z" },
  "occurred_at": "2026-09-02T06:03:11Z"
}

Event catalog

Every state change in the platform is one of these typed events.

Demand

order.createdA new order entered the platform, by hand or from a partner channel.
order.updatedAn existing order changed status, window or content.

Execution

shipment.plannedOrders were consolidated into a shipment with a route and dates.
shipment.updatedShipment status, dates or cost changed.
milestone.recordedA physical event was recorded against a shipment.

Procurement

tender.offeredA shipment was offered to a carrier with a response deadline.
tender.awardedA carrier accepted and the load was awarded.
tender.expiredA tender passed its deadline without a response.

Settlement

invoice.receivedA carrier invoice was captured against a shipment.
invoice.mismatchedThe three-way match failed outside tolerance.

Integration

message.receivedAn inbound message arrived on any channel.
message.failedA message failed parsing, mapping or validation.
document.receivedA document was stored and linked to a shipment.

Governance

exception.raisedThe exception desk opened a new item.
exception.resolvedAn exception was closed with a resolution.
decision.madeThe rule kernel took an automatic action.