Platform Request Schema
Overview
PlatformRequest is sent Platform → AdMesh (Operator). It carries:- User context (locale, placement, device, geography, identity)
- Platform-declared intent (explicit, for publisher consent gating)
- Runtime context (session, turn, query, optional messages)
- Auction parameters (pricing model, floor, currency)
aip.json editorial_domains vs extensions.aip.intent), and—if allowed—generates a ContextRequest for brand agents. Do not blur PlatformRequest with ContextRequest; they are distinct messages.
UCP structure
The PlatformRequest uses the UCP (User Context Protocol) envelope with nested objects: producer, context, identity, extensions.| Field | Type | Description |
|---|---|---|
spec_version | string | UCP specification version (e.g. “1.0.0”) |
message_id | string | Unique identifier for this auction request |
timestamp | string | ISO 8601 timestamp when the platform generated the request |
producer | object | Producer of the request (the AI platform/host) |
context | object | Context (language, publisher, placement, device, geography) |
identity | object | Identity (namespace, value_hash, confidence) |
extensions | object | Vendor-namespaced data; AIP uses extensions.aip |
Producer object
| Field | Type | Description |
|---|---|---|
agent_id | string | Identifier of the AI platform sending this request |
agent_role | string | Must be "platform". The platform is the AI host, not the content publisher. Reserve "publisher" for content owners only. |
software | string | Software name (e.g. “chatgpt”) |
software_version | string | Software version or model identifier (e.g. “4.3-mini”) |
Context object
| Field | Type | Description |
|---|---|---|
language | string | User locale in BCP 47 format (e.g. “en-US”) |
publisher | string | Publisher identifier (same as producer.agent_id in this context) |
placement.ad_unit | string | Platform surface: “conversation”, “chat”, “voice”, etc. |
device.platform | string | Device platform: “web”, “mobile”, etc. |
device.form_factor | string | ”mobile”, “desktop”, “tablet” |
device.ua_hash | string | Optional user agent hash |
geography.country | string | User country code (ISO 3166-1 alpha-2, e.g. “US”) |
Identity object
| Field | Type | Description |
|---|---|---|
namespace | string | Identity namespace (e.g. “platform_user”) |
value_hash | string | Anonymous hashed user ID |
confidence | number | Confidence level for identity (0.0 to 1.0) |
Extensions: extensions.aip
AIP-specific data lives under extensions.aip and is split into three sub-blocks so consent logic never touches monetization:
| Block | Required | Purpose |
|---|---|---|
| intent | Yes | Platform-declared intent for publisher consent gating. Must be explicit and structured so the operator can match against publisher aip.json editorial_domains. |
| runtime | Yes | Session and query context; used for operator enrichment and ContextRequest generation. |
| auction | No | Monetization parameters (pricing model, floor, currency). |
extensions.aip.intent
Intent must be explicit so it can be enforced against publisher editorial_domains. Do not infer intent only from query_text or messages.
| Field | Type | Description |
|---|---|---|
domain | string | Editorial domain (e.g. “business”, “technology”). Matched against publisher aip.json editorial_domains. |
subdomain | string | Finer-grained subdomain (e.g. “crm”, “ai”). |
confidence | number | Confidence in this intent classification (0.0–1.0). |
extensions.aip.runtime
| Field | Type | Description |
|---|---|---|
session_id | string | Conversation or interaction session ID |
turn_index | integer | Turn index in the conversation |
query_text | string | User’s raw query text |
messages | array | Optional short conversation history (last N turns) |
latency_budget_ms | integer | Optional latency budget from platform (ms) |
extensions.aip.auction
Monetization is kept separate from intent so consent logic never touches auction logic.
| Field | Type | Description |
|---|---|---|
pricing_model | string | Preferred pricing model: “CPX”, “CPC”, “CPA” |
cpx_floor | number | Minimum CPX (USD) required by the platform for this auction |
currency | string | Currency for pricing (ISO 4217, e.g. “USD”) |
Example
Validation rules
spec_versionmust be “1.0.0” for UCP v1.0.message_idmust be a unique string identifier.producer.agent_rolemust be"platform"(not “publisher”).extensions.aipmust containintentandruntime;auctionis optional.extensions.aip.intentmust havedomain,subdomain, andconfidencefor consent matching.context.languagemust match^[a-z]{2}-[A-Z]{2}$(BCP 47).context.geography.countrymust match^[A-Z]{2}$(ISO 3166-1 alpha-2).timestampmust be RFC 3339 / ISO 8601.identity.confidencemust be between 0.0 and 1.0.