{ "$defs": { "CommercialTerms": { "description": "Commercial capabilities a product supports (not binding terms).", "properties": { "guarantee_allowed": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": null, "title": "Guarantee Allowed" }, "makegood_allowed": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": null, "title": "Makegood Allowed" }, "minimum_deal_value": { "anyOf": [ { "$ref": "#/$defs/Money" }, { "type": "null" } ], "default": null }, "supported_deal_types": { "description": "Supported deal types: 'PG' (Programmatic Guaranteed), 'PD' (Preferred Deal), 'PA' (Private Auction).", "items": { "$ref": "#/$defs/DealType" }, "title": "Supported Deal Types", "type": "array" }, "supported_pricing_models": { "items": { "$ref": "#/$defs/PricingModel" }, "title": "Supported Pricing Models", "type": "array" } }, "title": "CommercialTerms", "type": "object" }, "DealType": { "description": "Programmatic deal types. The short wire encoding is canonical.\n\n- ``PG`` = Programmatic Guaranteed: fixed price, guaranteed impressions\n- ``PD`` = Preferred Deal: fixed price, non-guaranteed first look\n- ``PA`` = Private Auction: auction with floor price, invited buyers\n\nMapping from the seller repo's retired long-form encoding\n(``models/core.py``): ``programmaticguaranteed`` -> ``PG``,\n``preferreddeal`` -> ``PD``, ``privateauction`` -> ``PA``. The\nlong-form strings are NOT valid wire values.", "enum": [ "PG", "PD", "PA" ], "title": "DealType", "type": "string" }, "DeliveryType": { "description": "Delivery type for a product (OpenDirect vocabulary).\n\nPMP = private marketplace.", "enum": [ "Exclusive", "Guaranteed", "PMP" ], "title": "DeliveryType", "type": "string" }, "Money": { "description": "Exact money amount in integer micros (flagged decision FD-11).\n\n``1_000_000`` micros = 1 currency unit \u2014 the ad-industry convention\n(Google Ad Manager, among others, prices in micros). Float is BANNED on\nthe wire for money: IEEE 754 floating point is non-deterministic for\nmoney math (``0.1 + 0.2 != 0.3``, and repeated CPM \u2014 cost per mille \u2014\narithmetic accumulates error), and the two source repos used ``float``\nend-to-end; that defect must not be fossilized into the spec. Every\nprice, rate, budget, and offer in the shared contract is a ``Money``.\n\n``amount_micros`` is a strict integer: float inputs are rejected at\nvalidation time rather than silently truncated.", "properties": { "amount_micros": { "description": "Amount in micros; 1,000,000 micros = 1 currency unit.", "title": "Amount Micros", "type": "integer" }, "currency": { "default": "USD", "description": "ISO 4217 alpha-3 currency code.", "pattern": "^[A-Z]{3}$", "title": "Currency", "type": "string" } }, "required": [ "amount_micros" ], "title": "Money", "type": "object" }, "PricingModel": { "description": "Unit of pricing. Union of the buyer's ``RateType`` and the seller's\n``PricingModel`` plus the linear TV additions.\n\n- ``cpm``: cost per mille (thousand impressions)\n- ``cpmv``: cost per thousand viewable impressions\n- ``cpv``: cost per view\n- ``cpc``: cost per click\n- ``cpcv``: cost per completed view\n- ``cpd``: cost per day\n- ``cpp``: cost per (gross rating) point \u2014 linear TV\n- ``flat_fee``: flat fee (buyer repo's ``FlatRate`` maps here)\n- ``unit_rate``: per-unit rate\n- ``hybrid``: mixed CPM/CPP pricing \u2014 linear TV", "enum": [ "cpm", "cpmv", "cpv", "cpc", "cpcv", "cpd", "cpp", "flat_fee", "unit_rate", "hybrid" ], "title": "PricingModel", "type": "string" }, "PricingType": { "description": "How a price signal should be interpreted.\n\n- ``fixed``: price is set by the seller, use as-is\n- ``floor``: minimum price; negotiation expected above this level\n- ``on_request``: no price available; buyer must negotiate before any\n pricing exists (pricing fields are None \u2014 buyers must never fabricate\n a price for on_request inventory)", "enum": [ "fixed", "floor", "on_request" ], "title": "PricingType", "type": "string" } }, "description": "Sellable unit of publisher inventory.\n\nMerges the buyer's OpenDirect (the IAB direct-buying API standard)\n``Product`` with the seller's taxonomy-driven ``Product``. Targeting\nintent uses the three IAB (Interactive Advertising Bureau) taxonomies:\nAudience (who sees the ad), Ad Product (what is advertised), and\nContent (where ads appear).\n\n``base_price`` is the seller's public/list price signal, if disclosed;\nthe private negotiated rate for a buyer/seller pair lives on their\nRateCard (flagged decision FD-9), never here.\n\nID minting: ``product_id`` is seller-issued.", "properties": { "ad_formats": { "description": "OpenRTB (Open Real-Time Bidding) formats: \"banner\", \"video\", \"native\", \"audio\".", "items": { "type": "string" }, "title": "Ad Formats", "type": "array" }, "ad_product_targeting": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "default": null, "description": "IAB Ad Product Taxonomy targeting intent.", "title": "Ad Product Targeting" }, "audience_targeting": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "default": null, "description": "IAB Audience Taxonomy targeting intent.", "title": "Audience Targeting" }, "available_impressions": { "anyOf": [ { "minimum": 0, "type": "integer" }, { "type": "null" } ], "default": null, "title": "Available Impressions" }, "base_price": { "anyOf": [ { "$ref": "#/$defs/Money" }, { "type": "null" } ], "default": null, "description": "Public list price, if disclosed; None when pricing is on request." }, "commercial_terms": { "anyOf": [ { "$ref": "#/$defs/CommercialTerms" }, { "type": "null" } ], "default": null }, "content_targeting": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "default": null, "description": "IAB Content Taxonomy targeting intent.", "title": "Content Targeting" }, "delivery_type": { "$ref": "#/$defs/DeliveryType", "default": "Guaranteed" }, "description": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Description" }, "domain": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Domain" }, "ext": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "default": null, "description": "Extension slot.", "title": "Ext" }, "name": { "maxLength": 128, "title": "Name", "type": "string" }, "pricing_model": { "$ref": "#/$defs/PricingModel", "default": "cpm" }, "pricing_type": { "$ref": "#/$defs/PricingType", "default": "fixed" }, "product_id": { "description": "Seller-issued product identifier.", "title": "Product Id", "type": "string" }, "seller_organization_id": { "description": "Registry-issued id of the owning seller organization.", "title": "Seller Organization Id", "type": "string" } }, "required": [ "product_id", "seller_organization_id", "name" ], "title": "Product", "type": "object" }