Basic structure
format_kindnames the canonical creative shape.assetsis keyed byasset_group_idfrom the matched declaration’sparams.slots[].- Every asset carries its
asset_typediscriminator. - Brand, provenance, rights, and industry identifiers may be included when applicable.
format_id references are deprecated in 3.2. New manifests use the canonical branch.
Exact option routing
When a product accepts multiple declarations of the same kind, or when the creative must target an exact publisher format, addformat_option_ref.
Publisher option:
Capability identity does not travel
build_creative.target_capability_id selects a route on one creative agent. The resulting manifest carries the output contract, not that local route ID:
Validation
Validate a manifest against the selected product or publisher declaration:- Resolve
format_option_refwhen present; otherwise select the unambiguous compatibleformat_kinddeclaration. - Confirm all required slots are present.
- Validate each asset against its declared type and technical constraints.
- Check fixed dimensions, durations, codecs, file-size limits, and required disclosures.
- Reject unknown or uncovered selections; do not silently relax the target contract.
validate in creative.supported_formats[].operations. Sellers perform final acceptance during sync_creatives because product-, account-, and placement-specific constraints remain seller-authoritative.
Libraries and trafficking
Store reusable manifests withsync_creatives on agents that advertise creative.has_creative_library: true. A buyer may reuse its creative_id and concept_id across sellers, but each destination validates the manifest against its own selected product and may require a different format_option_ref.
Approval state is seller-specific. A valid manifest can still enter review, be rejected for policy, or require replacement independently at each destination.
Deprecated compatibility branch
Older 3.x peers may still send a manifest with a compound namedformat_id. A 3.2 implementation may read it, normalize it to a canonical declaration, and project it back when negotiating with that peer. It must not author new manifests from the legacy shape or mix format_id and format_kind in one manifest.