Skip to main content
An inventory source is where your inventory really lives. Semicola sits between buyers and your source: it discovers products from it, forwards approved media buys to it, and reads delivery back.

Kinds of source

Connect a sales agent

save_inventory_source
Credentials are write-only: Semicola stores them encrypted and never returns them. On connect it calls the agent’s get_adcp_capabilities, and with runDiscoveryTest it sends a probe brief through get_products so you can see real products come back.

Product mode

  • WHOLESALE: the source’s products are sold as they are.
  • COMPOSING: the storefront agent composes proposals from the source’s inventory.
  • BOTH: either, depending on the brief.

Health

Each source reports its health and when it was last checked. An unreachable or erroring source moves the storefront to live_attention or live_critical and shows the fix on the setup checklist. Buyers see failed forwards as media buys pending at salesagent, not as silence.

Publishing who may sell for you

If you represent publisher properties, publish an adagents.json file on each publisher domain that authorizes Semicola to sell on your behalf. Buyers’ agents check it before they trust a listing. Declare each domain with POST /api/v2/storefront/publishers ({ "domain": "example.com" }), remove one with DELETE /api/v2/storefront/publishers/{domain}, or replace the whole declared set with PUT /api/v2/storefront/publishers ({ "publishers": ["example.com", …] }, up to 5,000). The PUT applies as a diff: domains you keep keep their verdicts, left-out declared domains are deleted, and one invalid domain fails the whole request. Prefer the single-domain routes when you change one domain. Declaring resolves the domain’s adagents.json at once. After that, Semicola re-checks each declared domain automatically every few hours, and retries a failed resolve on the next sweep, so a file you fix shows up without pressing Re-check. Re-declaring inside 10 minutes of the last check does nothing.