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

# Object Model

> The full v2 object hierarchy — every buyer-side and storefront-side resource, what it is, where it sits, and which guide covers it.

Apostra has two object hierarchies that meet at the AdCP wire. Buyers
plan and execute media; storefronts expose inventory. Both sides share one
platform and one auth model, but their objects are disjoint — an agent only
ever works inside the hierarchy that matches its job.

This page is the canonical map. Each side gets an ASCII tree, then a table per
object: what it is, its parent, what nests under it, and the guide that covers it.

<Note>
  **Media Buys and Packages are not directly creatable.** They are spawned by
  the platform when a [Campaign](/v2/object-guides/campaign) executes — one
  media buy per sales agent, one package per product per pacing period. You read
  their status and tune them through the campaign update endpoint, never by
  POSTing them directly.
</Note>

## Buyer side

A buyer's world is rooted at the **Advertiser** and flows down to the
**Delivery** metrics that roll back up. Discovery, creatives, signals, and
audiences attach to the [Campaign](/v2/object-guides/campaign) — the focal
object.

```
Advertiser                                  (top-level container, owns a Brand)
  └── Campaign                              (discovery, performance, or directed)
        ├── Discovery Session               (product search; produces Proposals)
        ├── Creative                        (manifest, attached at the campaign)
        └── Media Buy                       (one per sales agent — spawned at execute)
              └── Package                    (one per product per pacing period)
                    └── Delivery             (impressions, spend, clicks)
```

| Object | What it is | Parent | Contains | Guide |
| - | - | - | - | - |
| **Advertiser** | Top-level container for a buyer's media. Owns a brand, default optimization mode, and linked sales-agent accounts. | — | Campaign, Brand | [Advertiser](/v2/object-guides/advertiser) |
| **Campaign** | A campaign in `discovery`, `performance`, or `directed` mode, with a `management` state: `tracked` (a campaign the platform did not set up, mirrored read-only from a connected provider account) or `managed` (uses the canonical buyer product and media-buy lifecycle). A tracked `mode: directed` campaign projects one storefront-managed media buy. | Advertiser | Discovery Session, Creative, Media Buy, Audience, Frequency Cap | [Campaign](/v2/object-guides/campaign) |
| **Media Buy** | One AdCP transaction with one sales agent. Platform-managed campaigns spawn buys at execute; a directed campaign projects exactly one storefront buy. Its legacy `routingType` is temporary billing compatibility metadata derived from `BillingParty`; it is never a storefront or execution type. | Campaign | Package | [Media Buys](/v2/buyer/campaigns/media-buys) |
| **Package** | One seller line within a media buy. Platform-managed campaigns usually create one per product per pacing period; directed campaigns mirror the seller's native package grain. | Media Buy | Delivery | [Packages](/v2/buyer/campaigns/packages) |
| **Delivery** | Reported metrics that roll up per package: `impressions`, `spend`, `clicks`. Follows the AdCP `get_media_buy_delivery` shape. | Package | — | [Packages](/v2/buyer/campaigns/packages) |
| **Discovery Session** | A product-search conversation against sales agents. Refinable; produces ranked **Proposals** the campaign selects from. | Campaign | Proposal | [Discovery](/v2/guides/discovery) |
| **Creative** | A manifest-based asset uploaded under the campaign, auto-synced to media buys by accepted format. | Campaign | — | [Creative](/v2/object-guides/creative) |
| **Signal** | A targeting or optimization input (audience, contextual, outcome) discovered from signal agents via AdCP. | Campaign / Advertiser | — | [Signal](/v2/object-guides/signal) |
| **Audience** | A target or suppress list attached to a campaign. | Campaign | — | [Signal](/v2/object-guides/signal) |
| **Property List** | A named include/exclude set of domains, apps, or deals applied to packages without a full re-execute. | Campaign | — | [Campaign](/v2/object-guides/campaign) |
| **Event Source** | A conversion-tracking source (pixel, server event) referenced by event-based optimization goals. | Advertiser | — | [Campaign](/v2/object-guides/campaign) |
| **Brand** | The brand identity and manifest behind an advertiser — name, assets, safety, and story. | Advertiser | — | [Brand Story](/v2/object-guides/brand-story) |

## Storefront side

A storefront's world is rooted at the **Storefront** and wraps one or more
AdCP-compatible **Inventory Sources**. Buyers register **Credentials** per
source where the source requires them; those credentials gate the buyer
accounts that transact through the storefront.

```
Storefront                                  (the sales-agent surface buyers see)
  ├── Business Profile                       (identity, terms, positioning)
  ├── Operating Instructions                 (versioned; exactly one active)
  ├── Material(s)                            (versioned marketing evidence)
  │     └── Rendition(s)                     (blocks + reusable visual assets)
  └── Inventory Source(s)                    (AdCP agent — discovery + execution)
        ├── Component Cache                   (raw products/components, when supported)
        └── Buyer Credentials                 (per source, where required)
              └── Buyer accounts              (the accounts that transact)
```

| Object | What it is | Parent | Contains | Guide |
| - | - | - | - | - |
| **Storefront** | The sales-agent surface a buyer connects to. Wraps inventory sources, a business profile, and operating instructions. | — | Inventory Source, Business Profile, Operating Instructions | [Storefront](/v2/object-guides/storefront) |
| **Inventory Source** | A source that provides supply to the storefront. It may be an external AdCP sales agent, an ad-server-backed source, a linked source, or a modular source. | Storefront | Component Cache, Buyer Credentials | [Storefront](/v2/object-guides/storefront) |
| **Component Cache** | Cached raw products/components exposed by a source, when the source supports them. Used for merchandising and wholesale reads; passthrough source calls can still be live. | Inventory Source | — | [Inventory sources](/v2/storefront/inventory-sources/overview) |
| **Buyer Credentials** | A buyer's registered account for one inventory source, where the source requires per-buyer credentials. | Inventory Source | Buyer accounts | [Storefront](/v2/object-guides/storefront) |
| **Buyer accounts** | The buyer-side accounts linked through credentials that actually transact against the source. | Buyer Credentials | — | [Storefront](/v2/object-guides/storefront) |
| **Operating Instructions** | Versioned guidance that steers how the storefront responds to demand. Exactly one version is active at a time. | Storefront | — | [Storefront](/v2/object-guides/storefront) |
| **Business Profile** | The storefront's identity and positioning — name, terms, and how it presents to buyers. | Storefront | — | [Storefront](/v2/object-guides/storefront) |
| **Material** | Seller marketing evidence such as a PDF, presentation, image, site snapshot, or spreadsheet. Every source refresh creates an immutable revision; derived renditions report their extraction completeness explicitly. | Storefront | Rendition | [Seller v3 workflows](/v2/setup/v3/seller-workflows#add-and-inspect-seller-material) |
| **Rendition** | A versioned derivation of one Material source revision, preserving page, slide, or sheet units; ordered semantic blocks; tables and geometry; diagnostics; and rights-aware visual assets. Original and preview bytes stay out of model context behind expiring signed access. | Material | Semantic Block, Visual Asset | [V3 tool reference](/v2/setup/v3/tool-reference#read-structured-results) |
| **Semantic Block** | A bounded, independently paged text, list, table, caption, note, OCR, or accessibility block with a stable source locator and extraction provenance. | Rendition | — | [V3 tool reference](/v2/setup/v3/tool-reference#read-structured-results) |
| **Visual Asset** | A reusable image, chart, logo, or diagram with deterministic identity, dimensions, placement, provenance, confidentiality, and explicit reuse rights. | Rendition | — | [Seller v3 workflows](/v2/setup/v3/seller-workflows#add-and-inspect-seller-material) |
| **Proposal** | An offer a storefront returns in response to discovery — products, pricing, and terms a buyer can select. | Inventory Source | — | [Discovery](/v2/guides/discovery) |
| **Creative Review** | A storefront's approval or rejection of a buyer's creative, with reviewer attribution. | Storefront | — | [Creative](/v2/object-guides/creative) |
| **Media-Buy Approval** | A storefront's sign-off on an incoming media buy before it goes live. | Storefront | — | [Storefront](/v2/object-guides/storefront) |

<Tip>
  The two hierarchies meet at the AdCP wire: a buyer's **Media Buy** is the same
  transaction a storefront approves through **Media-Buy Approval**, and a buyer's
  **Discovery Session** is answered by a storefront's **Proposals**. Read the
  [Philosophy primer](/v2/concepts/philosophy) for why the surfaces are split.
</Tip>

## Where to go next

<CardGroup cols={2}>
  <Card title="Philosophy" icon="compass" href="/v2/concepts/philosophy">
    Why v2 splits buyer and storefront, uses SESOFI, and defaults to AdCP.
  </Card>

  <Card title="Glossary" icon="book-a" href="/v2/concepts/glossary">
    Every term in the docs, alphabetized with links to the deep guides.
  </Card>

  <Card title="Campaign" icon="rocket" href="/v2/object-guides/campaign">
    The focal buyer object — how a plan becomes media buys and packages.
  </Card>

  <Card title="Storefront" icon="store" href="/v2/object-guides/storefront">
    Wrap inventory sources, manage credentials, and connect buyer accounts.
  </Card>
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.