Modular source operations are storefront-operator endpoints. Buyer agents do not call them directly. Buyers still transact through the storefront’s AdCP media-buy workflow.
1. Check readiness
Start with the runtime projection:lifecycleSummary, one row per stage:
| Status | Meaning |
|---|---|
UNSUPPORTED | No active module implements this stage. |
MISSING_SETUP | A module supports the stage, but required module config is missing. |
RUNTIME_INPUTS_REQUIRED | Setup is complete, but the stage needs runtime input such as an avails feed, creative, or report upload. |
HITL_PENDING | A human work item is open for this stage. |
READY | The stage has enough setup and runtime inputs for the current source state. |
BLOCKED | A module has an error or source-health issue that needs operator attention. |
activeAvailCount tells you whether the source currently has usable avails. openWorkItemCountsByKind tells you what human queue is blocking a module or stage, for example MAP_CREATIVE_REF or UPLOAD_FINAL_REPORT.
2. Preview, then commit avails
An inventory-feed module accepts normalized avails. The feed can come from a publisher upload, a pasted CSV/JSON payload, or a file that Murph has parsed into rows. Murph previews parsed rows first; commit the feed only after an operator confirms the normalized rows and confirmsimpressionsCapacity is net sellable capacity.
availId. If an avail already has held or booked impressions, the feed update will not reduce capacity below those commitments.
3. Inspect product projections
List the product-like projections generated from active avails:cadent: null. Cadent fields appear only when the source has an active Cadent execution module, so uploaded publisher avails are not implicitly treated as Cadent-backed inventory.
4. Reserve capacity
If the source has an active booking-ledger module, hold capacity before finalizing:productId or availId. The reservation prevents this modular source from overbooking against capacity it controls. Upstream booked supply must be removed from impressionsCapacity before commit; upstreamBookedImpressions is explanatory metadata and does not increase sellable capacity.
5. Prepare supported execution handoffs
Execution is module-specific. In the current Cadent demo path, the handoff requires an active booking ledger and an active Cadent execution module. It keeps the reservationHELD, renders the Cadent campaign XML, and creates source-side work items for trafficking, creative mapping, and reporting. Do not treat the line as upstream-booked until the trafficking step succeeds; completing the TRAFFIC_TO_CADENT work item moves the held reservation to BOOKED.
6. Release capacity
Release a held reservation when a buyer cancels, a hold expires, or the execution handoff fails:7. Work the human queue
Some stages are intentionally human-in-the-loop. Common examples:| Work item kind | When it appears |
|---|---|
CONFIRM_AVAILS | An operator must confirm or correct incoming avails before products are shown. |
MAP_CREATIVE_REF | A buyer creative needs a broadcast-system creative ID or trafficking reference. |
TRAFFIC_TO_CADENT | A Cadent campaign payload is ready for a human operator to traffic; completing it books the held reservation. |
UPLOAD_FINAL_REPORT | The campaign has ended and delivery reporting needs a file upload. |
RESOLVE_SOURCE_HEALTH | A module is blocked or misconfigured. |
Demo source
POST /inventory-sources/modular/cadent-demo creates or resets a demo-only source with static avails, a booking ledger, and Cadent execution. Use it to test the end-to-end lifecycle, not as a publisher avails ingestion path. Demo source IDs must be talpa-cadent-demo or start with demo-.
Related tasks
Get modular readiness
Inspect lifecycle status, module contracts, setup gaps, and work-item counts
Update module config
Write non-secret module setup fields