Skip to content

list-creative-formats-response asset oneOf omits 5 asset types that asset-union.json defines (pixel_tracker, vast_tracker, daast_tracker, card, published_post) #7338

Description

@KonstantinMirin

Summary

list-creative-formats-response.json inlines an assets.items.oneOf that has drifted from core/assets/asset-union.json. Five asset types are in the union and missing from the response schema, so a format carrying one of them cannot validate against the response that is supposed to carry it.

This is self-contradictory within a single release bundle: the spec's own canonical format catalogue declares assets the spec's own response schema rejects.

Evidence, v3.1.1 (release bundle 3.1.1.tgz)

core/assets/asset-union.json — 20 branches:

image, video, audio, vast, text, url, html, javascript, zip, webhook, css, daast,
markdown, brief, catalog, published-post, card, pixel-tracker, vast-tracker, daast-tracker

bundled/creative/list-creative-formats-response.jsonproperties.assets.items.oneOf — 15 individual branches (plus RepeatableGroupAsset):

image, video, audio, text, markdown, html, css, javascript, zip, vast, daast,
url, webhook, brief, catalog

In the union, missing from the response: card, daast_tracker, pixel_tracker, published_post, vast_tracker

Still present in v3.2.0-rc.1

The response schema was restructured into a nested discriminated oneOf (item_typeasset_type), but the individual branch list is unchanged at 15 and the same five are still absent. asset-union.json grew to 21 branches (adds display-tag-asset.json) and still includes all three trackers.

The contradiction is inside one bundle

In the v3.2.0-rc.1 bundle:

  • 4 of the 16 files under formats/canonical/ declare pixel_tracker assets (e.g. coordinated_placements.json);
  • bundled/creative/list-creative-formats-response.json mentions pixel_tracker 128 times — every one in a description or an enum vocabulary, including "pixel_tracker / vast_tracker / daast_tracker are the renderer-fired measurement-tracker primitives — see /schemas/core/assets/pixel-tracker-asset.json" — and none as a oneOf branch;
  • core/assets/pixel-tracker-asset.json exists and is a complete asset schema;
  • the Python SDK generates PixelTrackerAsset, PixelTrackerEvent and PixelTrackerMethod from it.

How it surfaces

A sales agent serving formats captured from the reference creative agent (pinned image adcp-creative-agent, 467fd93d7711 = the v3.1.1 tag) fails response validation on list_creative_formats:

at formats.12.assets.1: {'asset_type': 'pixel_tracker', 'event': 'impression',
  'method': 'img', 'item_type': 'individual', 'asset_id': 'impression_tracker',
  'required': False, 'requirements': {'description': '3rd party impression tracking pixel URL'}}
  is not valid under any of the given schemas

Reproduced on 92 conformance checks in one run, across four transports.

Expected

assets.items.oneOf in list-creative-formats-response.json (and any sibling response schema that inlines the asset union) should be generated from core/assets/asset-union.json rather than maintained as a second list, so the two cannot diverge again.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingclaude-triagedIssue has been triaged by the Claude Code triage routine. Remove to re-triage.creativepriority:P1High priority: important bug or follow-up, not immediate P0schemaJSON Schema source-of-truth: definitions, codegen artifacts, validation, hygiene

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions