-
Notifications
You must be signed in to change notification settings - Fork 25
feat: Add content standards create/update schemas and languages field #806
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: 2.6.x
Are you sure you want to change the base?
Conversation
- Add create-content-standards-request/response.json schemas - Add update-content-standards-request/response.json schemas for incremental updates - Add languages field (BCP 47 tags) to content standards scope - Reference channels enum instead of string array for type safety - Remove version field from content standards response (keep spec clean) - Add webhook-authentication.json and webhook-config.json schemas - Update all content standards docs with languages examples Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
| ## Scope Conflict Handling | ||
|
|
||
| Multiple standards cannot have overlapping scopes for the same brand/country/channel combination. When creating standards that would conflict: | ||
| Multiple standards cannot have overlapping scopes for the same country/channel combination. When creating standards that would conflict: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
language?
| "items": { "$ref": "/schemas/enums/channels.json" }, | ||
| "description": "Advertising channels. Standards apply to ANY of the listed channels (OR logic)." | ||
| }, | ||
| "languages": { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
should this be languages_all for consistency? and what does it mean exactly... should we have examples? Like, if the content language is 'en' and that's not in this array, that means "these standards don't apply to English content" or "this buy can only be on English content"?
| } | ||
| } | ||
| }, | ||
| "floor": { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
thinking about vendors for this - if a buyer wants to use the garm categories and ratings would this be expressed here? how would a seller agent know which floors to implement? What part of this would be vendor specific (eg IAS floor) vs something the brand should define?
| "properties": { | ||
| "type": { | ||
| "type": "string", | ||
| "const": "domain", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
domains aren't enough here. we need urls
1. Rename languages to languages_any for consistency with countries_all/channels_any
- Clarifies OR logic: standards apply to content in ANY of listed languages
- Content in unlisted languages is not covered by these standards
2. Add URL type to calibration exemplars (alongside domain type)
- Enables page-level granularity for calibration
- Example: { "type": "url", "value": "https://espn.com/nba/story/12345" }
3. Clarify floor documentation for vendor standards
- Floors are industry-standard (GARM) or vendor-defined (IAS, DoubleVerify)
- Seller agent retrieves floor definition from URL
4. Add language to scope conflict detection docs
- Scope conflicts now consider country/channel/language combination
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Domain-level references are too coarse for calibration - a domain can have millions of pages with varying content. Calibration exemplars now support: 1. URL references - specific pages to fetch and evaluate 2. Full artifacts - pre-extracted content (text, images, video, audio) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Remove floor field from content-standards schemas (content-standards.json, create-content-standards-request.json, update-content-standards-request.json) - Add documentation note that implementors MUST apply a brand safety floor, but AdCP does not define the floor specification - Update calibration exemplars to use URL type instead of domain type (domain is too coarse for calibration - need specific page URLs) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Summary
create-content-standards-request/response.jsonschemas for creating new content standards configurationsupdate-content-standards-request/response.jsonschemas for incremental calibration updateslanguagesfield (BCP 47 tags) as a required scope parameter - content is evaluated in these languages/schemas/enums/channels.json) instead of string array for type safetyversionfield from content standards responses to keep spec clean (versioning handled internally)webhook-authentication.jsonandwebhook-config.jsonschemas (extracted from media-buy)Key Design Decisions
Languages field is required in scope - Content standards must specify which languages content will be evaluated in. This aligns with Scope3's Brand Standards API pattern.
Channels use enum reference - Instead of free-form strings, channels now reference the AdCP channels enum (display, video, audio, native, dooh, ctv, podcast, retail, social) for type safety.
No version in responses - Version field removed from API responses. Versioning is an implementation detail that can be handled behind the scenes.
Test plan
🤖 Generated with Claude Code