> ## Documentation Index
> Fetch the complete documentation index at: https://docs.interchange.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Discovery Cards

> Understand the buyer-visible storefront identity, coverage, policy disclosure, and Marketplace filters

A **Discovery Card** is the buyer-visible projection of a storefront. The same
card powers Marketplace results and the `discoveryCard` object returned by the
buyer storefront APIs. It is not a separate inventory or policy object.

Use the card to answer three questions before sending a brief:

* Who operates this storefront?
* Does it accept briefs for this channel and country?
* Has the seller chosen to disclose any Advertising Policies?

## Coverage declarations

`coverageDeclarations` contains the source-specific coverage claims. Each entry keeps
the channels and countries declared by one source together. A managed
storefront normally has one declaration; a pass-through storefront can have
one declaration per active upstream inventory source. Never combine channels
from one declaration with countries from another.

The top-level `channels` and `countries` arrays are aggregate search and display
facets. They are the union of known values, not a promise that every listed
channel is available in every listed country. Country values are ISO 3166-1
alpha-2 codes such as `FR`, `US`, and `JP`. The legacy channel alias `audio` is
normalized to the AdCP channel `streaming_audio`.

Use `GET /api/v2/buyer/storefronts?region=FR&channel=ctv` to find storefronts
that accept CTV briefs in France. Legacy market-group filters such as `EMEA`
remain available for older region declarations, but new Discovery Cards use
country codes. A combined channel-and-country filter matches only when one
declaration satisfies both known dimensions. During the compatibility rollout,
missing country coverage remains eligible for country-filtered discovery so
existing storefronts do not disappear. Known country restrictions still apply,
and an explicitly empty authoritative pass-through declaration remains
ineligible.

The `coverage` object makes completeness explicit:

| Value      | Meaning                                                                                                                                                                            |
| ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `declared` | The storefront has an authoritative declaration for this dimension.                                                                                                                |
| `partial`  | Some sources declare the dimension and others do not.                                                                                                                              |
| `unknown`  | Interchange has no authoritative declaration. Country filters temporarily keep these storefronts eligible for rollout compatibility; the card does not claim worldwide acceptance. |

`acceptsAllCountries: true` remains the only explicit worldwide declaration.
For managed storefronts that still have legacy unknown country coverage, Seller
Setup starts the editor with every country selected. Saving records that
worldwide behavior explicitly; leaving the old record untouched preserves the
temporary compatibility behavior above.

## Where card fields come from

The card carries `provenance` so buyers and agents can distinguish operator,
registry, and upstream facts.

* Managed storefronts author their accepted channels and countries in Seller
  Setup. Their identity is resolved from the verified operator domain and its
  brand profile, with an operator-authored Marketplace description.
* External pass-through storefronts project coverage from each source's
  standard AdCP `media_buy.portfolio.primary_channels` and
  `primary_countries`. Those values are read-only in Interchange because the
  upstream sales agent is authoritative. The card turns each source's two
  arrays into one correlated `coverageDeclarations` entry; accepted countries
  equal primary countries, and separate sources are never combined.

Brand identity remains owned where its `brand.json` is hosted. Seller Setup
opens the specific AAO brand Page for an AAO-hosted identity. For a self-hosted
identity, it instead tells the seller to update `/.well-known/brand.json` on the
verified operator domain.

All Marketplace cards and buyer storefront responses use this same projection;
clients do not need to resolve a second profile to reproduce the card.

## Advertising Policies

`advertisingPolicies` is an optional buyer-facing disclosure. A managed seller
chooses whether to publish its Brief Acceptance rules, Creative Policy, or
both. Approval routing, approver identities, revision notes, and per-buyer
overrides are never included. A pass-through storefront can expose the
upstream AdCP `media_buy.portfolio.advertising_policies` value read-only.

The complete disclosure is bounded to 10,000 characters. Storefront list
responses use `hasAdvertisingPolicies` plus a bounded
`advertisingPoliciesExcerpt`; retrieve storefront detail when you need the
complete disclosed text.

Advertising Policies help evaluate fit, but absence is not permission. The
seller or upstream agent still decides whether to accept a brief.

## Response fields

| Field                                                     | Purpose                                                                      |
| --------------------------------------------------------- | ---------------------------------------------------------------------------- |
| `displayName`, `logoUrl`, `logoBackground`, `brandColors` | Resolved storefront identity.                                                |
| `description`, `website`                                  | Buyer-facing summary and verified destination.                               |
| `channels`, `countries`                                   | Aggregate search and display facets; never a cross-product coverage promise. |
| `acceptsAllCountries`                                     | True only for an explicit worldwide declaration.                             |
| `coverageDeclarations`                                    | Source-correlated channel and country claims.                                |
| `coverage`                                                | Whether each coverage dimension is declared, partial, or unknown.            |
| `advertisingPolicies`                                     | Optional complete policy disclosure on detail responses.                     |
| `provenance`                                              | Source of identity, coverage, and policy values.                             |

## V3 compatibility

For new V3 integrations, read the card with
`get({ kind: "storefront", include: ["discoveryCard"] })` or open the
`discovery_card` Page. The older `media_kit`, `save_media_kit`, and
`open_page({ page: "media_kit" })` contracts remain available as deprecated V3
compatibility surfaces; they do not define the canonical Discovery Card model.

<CardGroup cols={2}>
  <Card title="List storefronts" href="/v2/buyer/storefronts/tasks/list-storefronts" icon="list">
    Filter Marketplace storefronts by country and channel.
  </Card>

  <Card title="Storefront object guide" href="/v2/object-guides/storefront" icon="store">
    See how storefronts, inventory sources, and pass-through routing relate.
  </Card>
</CardGroup>
