From e71bfc03284402f43a4474e5f1019e96a1af5221 Mon Sep 17 00:00:00 2001 From: Sirajmx Date: Tue, 6 Oct 2026 16:28:01 +0530 Subject: [PATCH] Add app identity to properties for app and CTV inventory MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit § 5.2 properties can carry apps[] (platform, bundle, storeurl, domain), keyed as the OpenRTB 2.6 app object where one exists. Each property must carry domains, apps or both. The CTV example carries an app. Refs #15 --- examples/line-item-ctv.yaml | 9 ++++++++- spec/CHANGELOG.md | 3 +++ spec/openproposal-3.0.md | 16 +++++++++++++++- 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/examples/line-item-ctv.yaml b/examples/line-item-ctv.yaml index fda3994..410aab2 100644 --- a/examples/line-item-ctv.yaml +++ b/examples/line-item-ctv.yaml @@ -2,7 +2,14 @@ line_item_id: "weather-app-ctv" status: published channel: ctv -properties: { available: [{ id: "weather-app" }], included: ["weather-app"] } +properties: + available: + - id: "weather-app" + apps: + - { platform: roku, bundle: "000000", + storeurl: "https://channelstore.roku.com/details/000000/weather-app", + domain: "weather-app.example" } + included: ["weather-app"] environments: { available: ["ctv"], included: ["ctv"] } formats: { available: ["ctv/instream-15s", "ctv/instream-30s"], included: ["ctv/instream-15s"], diff --git a/spec/CHANGELOG.md b/spec/CHANGELOG.md index 1dfacef..5d794e3 100644 --- a/spec/CHANGELOG.md +++ b/spec/CHANGELOG.md @@ -5,6 +5,9 @@ issue that caused it, so the comment record and the spec history line up. ## [Unreleased] +- § 5.2 — Properties can carry `apps[]` for app and CTV inventory, keyed as + OpenRTB 2.6 `app` ([#15](https://github.com/IABTechLab/OpenProposal/issues/15)). + ## [3.0-draft-1] — 2026-09-22 Initial draft published for public comment. Ported from the working-group diff --git a/spec/openproposal-3.0.md b/spec/openproposal-3.0.md index 6940958..9b0596a 100644 --- a/spec/openproposal-3.0.md +++ b/spec/openproposal-3.0.md @@ -222,10 +222,24 @@ channel. | Field | Type | Mutability | Description | | :--- | :--- | :--- | :--- | -| `properties` | Object | selectable | `available[]` of `{ id, name, domains, supported_formats }`, `included[]`, `pricing`, `max_select` | +| `properties` | Object | selectable | `available[]` of `{ id, name, domains, apps, supported_formats }`, `included[]`, `pricing`, `max_select`. Each property MUST carry `domains`, `apps` or both | | `content_detail` | Object | seller-set | Shows, series, sections, network verticals | | `environments` | Object | selectable | `available[]` from `web_desktop` \| `web_mobile` \| `app_mobile` \| `ctv` \| `dooh` \| `audio_streaming` | +**App identity.** `apps[]` identifies the apps behind a property sold in +`app_mobile` or `ctv`. Keys follow the OpenRTB 2.6 `app` object where one +exists. + +| Key | Required | Meaning | +| :--- | :--- | :--- | +| `platform` | REQUIRED | `ios` \| `android` \| `roku` \| `fire_tv` \| `samsung_tv` and other store platforms. No OpenRTB equivalent | +| `bundle` | REQUIRED | Store ID. As OpenRTB 2.6 `app.bundle` | +| `storeurl` | OPTIONAL | Store listing URL. As `app.storeurl` | +| `domain` | OPTIONAL | Developer domain. As `app.domain` | + +Seller authorisation for an app is checked through `app-ads.txt` on its +developer domain, not through the property's `domains`. + ### 5.3 Audience reach | Field | Type | Mutability | Description |