Six kinds of organization implement a logistics API, and they need different things from it: The spec does not define six APIs. It defines one set of modules, built from one set of objects. A mode is a conformance profile that names which modules are required. A shipment, a rate, a tracker, a contact and a recurrence mean the same thing in every mode, so a client written against a Universal implementer can talk to a Carrier implementer without new code for the shared parts.

1. Modules

2. Mode profiles

R = required, O = optional, — = not applicable. An implementer MAY operate in more than one mode. A 3PL with its own last-mile vans is ["3pl", "fleet"]. An airline cargo arm is ["carrier", "fleet"]. Any mode can replicate its objects into a data network node (chapter 23 §3). An aggregator that also prices its own resold contracts is ["universal"] with pricing. In that case the union of the required modules applies. This diagram shows the required modules from the table above. Every mode is built on the same modules, and every module on the same objects.

3. How shared objects behave per mode

The objects do not change between modes. What changes is who produces the data. This flowchart shows where rates and tracking events come from in each mode. The objects they land in are the same.

4. Identity of a non-universal implementer

In Carrier, 3PL and Fleet modes, the implementer is a carrier:
  • It has a carrier ID in the shared registry (meridian, acme_3pl, zoomvan), which is returned by GET /v1/carriers.
  • Its services are service objects from its catalog, with codes namespaced {carrier}_{service}.
  • Its shipment_config_schema is derived from its catalog’s option definitions (chapter 14 §3). It is never hand-written.
  • It publishes /.well-known/shipping-configuration and /shipping.md, so a Universal implementer can onboard it as a federated carrier (chapter 09 §6) with no carrier-specific code. That is how the four modes connect to each other.
This diagram shows the modes composing through federation. Carrier, 3PL and Fleet implementers publish discovery documents, a Universal implementer onboards each one as a federated carrier, and a platform client reaches all of them through one API.

5. Discovery

/.well-known/shipping-configuration and shipping.md frontmatter declare:
carrier is present in every mode except pure universal. Clients SHOULD branch on modules, not on modes. The mode is a summary, and the module list is the contract.