Skip to content

Conversation

@bokelley
Copy link
Contributor

Summary

Changes

Schema fixes:

  • Inline width/height properties into video-asset.json and image-asset.json instead of using allOf with dimensions.json
  • Add titles to all oneOf variants in response schemas (e.g., CreateMediaBuySuccess, CreateMediaBuyError) so UI tools show meaningful labels instead of "Option 1", "Option 2"
  • Delete unused dimensions.json schema

New features (experimental):

  • Add bundled schema generation to build-schemas.js - creates self-contained schemas with all $ref resolved inline
  • Document bundled schemas in schema-versioning.mdx with experimental warning

Testing:

  • Add composed-schema-validation.test.js to catch allOf + additionalProperties conflicts
  • Test bundled schemas validate without custom ref resolution

Test plan

  • All existing tests pass
  • New composed schema tests pass
  • Bundled schemas validate data without loadSchema configuration

🤖 Generated with Claude Code

bokelley and others added 4 commits December 17, 2025 07:23
Fixes JSON Schema validation failures when using allOf composition with
additionalProperties: false. Each sub-schema was independently rejecting
the other's properties.

**Schema fixes:**
- dimensions.json: removed additionalProperties: false (composition-only)
- push-notification-config.json: removed additionalProperties: false
- video-asset.json: inlined width/height, removed allOf
- image-asset.json: inlined width/height, removed allOf

**Bundled schemas:**
- Added bundled schemas at /schemas/{version}/bundled/
- Only bundles request/response schemas (root schemas)
- Core objects are embedded inside response schemas when bundled
- Custom resolveRefs() handles multiple refs to same schema correctly
- Generated at build time for tools that don't support $ref resolution

**Testing:**
- New test:composed script validates allOf composition patterns
- Tests bundled schemas work without $ref resolution
- Added to CI test suite

Fixes #275.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Adds explicit title properties to all oneOf variants in response schemas
so downstream UI tools display meaningful labels instead of "Option 1",
"Option 2" when rendering discriminated unions.

Schemas updated:
- create-media-buy-response: CreateMediaBuySuccess/Error
- update-media-buy-response: UpdateMediaBuySuccess/Error
- sync-creatives-response: SyncCreativesSuccess/Error
- build-creative-response: BuildCreativeSuccess/Error
- provide-performance-feedback-response: ProvidePerformanceFeedbackSuccess/Error
- activate-signal-response: ActivateSignalSuccess/Error
- preview-creative-response: PreviewCreativeSingleResponse/BatchResponse + nested batch result titles

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The dimensions schema was no longer referenced after inlining
width/height properties directly into video-asset.json and
image-asset.json. This removes the unused schema file and
updates tests accordingly.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Adds a warning that bundled schemas are experimental and may change,
with a link to share feedback on use cases.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@bokelley bokelley merged commit 935eb43 into main Dec 17, 2025
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

allOf + additionalProperties: false in asset schemas causes validation failures for official examples

2 participants