Skip to content

Start here — OpenProposal 3.0 public comment (closes 2026-10-22) #11

Open

Description

@Sirajmx

OpenProposal (AAMP 3.0) is open for public comment from 2026-09-22 to 2026-10-22.

You do not need to be an IAB Tech Lab member to comment. A GitHub account is enough.

How to file

You want to… Do this
Flag something unclear, wrong or missing Open a Comment
Propose specific normative wording Open a Change request
Report what happened when you built against the draft Open Implementation feedback
Ask a question rather than raise an issue Use Discussions

The seven open questions

The working group is undecided on these. They are the most useful place to comment. Answer on each issue.


This repository is public. Do not include rate cards, deal terms, client names or inventory data. Anonymise your examples.

Activity

  1. pinned this issue on Sep 24, 2026
  2. KonstantinMirin commented on Oct 25, 2026

    @KonstantinMirin

    Postindustria (IAB Tech Lab member) maps our filings.

    Our proposed text

    Foundations

    1. Shared types and authoring rules: closes our schema implementation feedback (#121).
    2. Errors, extensions, and forward compatibility: closes [Change] § 2, § 5.5, § 5.6 — One error object for rejections: code, pointer, current version, retry #130 and [Change] § 2, § 4.1, § 5.1 — Add #33's ext container: keyed by domain, ignored when unknown, kept in the agreed record #131.

    Identity

    1. Who the parties are, and what each identity layer proves: closes [Change] § 4.1 — Identify the seller by seller_domain; make seller_id OPTIONAL #61 and [Change] § 5.8 — required_credentials[].scheme is an eligibility credential, not agent authentication #62.
    2. Seller relationship and the property option: closes [Change] § 5.2 — State the seller's relationship to each property, checkable against ads.txt #88.

    Lifecycle

    1. Lifecycle: who moves each status, and when an offer goes stale: closes [Change] § 3, § 2.2, § 5.6.1 — Name whose status gates seller-set revisions #60, [Change] § 4.1 — Freeze a version's offered terms; changes create version n+1 and a revised entry #64, [Change] § 4, § 5.1 — Add § 4.3 Lifecycle: who moves each status #65, and [Change] § 3, § 5.6.1, Appendix B — A resolved commitment is an offer until the seller accepts #67.
    2. What is signed: closes [Change] § 4.1 — Define record_digest and assent[]; defer signer identity to the AAMP profile #63.
    3. Holds: closes [Change] § 5.6.2 — hold_status needs refused and re-entry to requested #66.
    4. After agreed: scope, baseline, and change requests: closes [Comment] § 1 — Two documents define the Proposal; say which governs what #59 and [Comment] § 1.1, § 4.1, § 5.1 — Lifecycle ends at agreed: say so, name the baseline #68.
    5. Downstream handoff: OpenDirect and the Deals API: closes [Change] § 1.1, § 5.9, § 5.10 — Carry the Deals API deal: its id, its origin, and the buyer's seats #132 and [Change] § 5.6, § 1.1, § 2.1 — Say which price a deal carries: agreed_rate as the Deals API dealfloor, with its pricetype; rename floor to min_rate #133.

    Pricing

    1. What the buyer writes, and how the rate is computed: for [Change] § 3 — Name the key the buyer writes its selection to: selected[] on selectable fields, value on settable fields #22, [Change] § 5.6 — Give the buyer's counter a field (requested_rate), state how agreed_rate is derived, and say who can read floor and seller_rate #30, and [Change] § 5.5 — Typed geo codes aligned with the OpenRTB 2.6 Geo object #58.
    2. Pricing: cost methods, currency, cancellation, exclusivity: closes [Change] § 5.6 — Give cost_method an extensible vocabulary, and say what several pricing[] entries mean #94 and [Change] § 5.6 — Give cancellation_policy and exclusivity options a typed shape #98.

    Delivery and DOOH

    1. Delivery type and settlement: closes [Change] § 5.9, § 5.6, § 2.1 — Add delivery_type: guaranteed, share_of_voice, non_guaranteed #93 and [Change] § 5.7 — Make a guarantee settleable: direction, controlling measurement, remedy order #95.
    2. DOOH: properties, plays, and impressions: closes [Change] § 5.6, § 5.7 — DOOH: define a play, and whose multiplier turns plays into impressions #92 and [Change] § 5.2, § 5.5 — DOOH properties: venue type, screens, operating hours, and loop #96.

    Inventory and audience

    1. Video and audio inventory: closes [Change] § 5.2 — Sell break position and pod slot as priced options: pre-roll, mid-roll, first in pod #99, [Change] § 5.2 — Make programs and live events selectable, and say what happens when one doesn't air #100, and [Change] § 5.2, § 5.9 — Audio: name the feed, and say when an ad is recorded into the content #101.
    2. Formats: closes [Change] § 5.4 — Pin each format's spec to a version and keep it in the agreed record #87.
    3. Audience: closes [Change] § 5.3 — Say whether selected audiences combine as AND or OR, and how buyer segments and exclusions combine with them #91 and [Change] § 5.2, § 5.3 — Disclose audience taxonomy, data label, sensitive categories, and child-directed properties #97.

    Already open

    Rules we left out of the text, for implementers: new transaction gates, as questions.

    Lifecycle and the binding record

    1. Scope comment (#59): which Proposal definition governs what.
    2. Binding record (#63): record_digest per assent[] entry.
    3. Frozen versions (#64): changes create new versions.
    4. Seller-set gate (#60): whose status gates a seller revision.
    5. Assent digest reply (#45): revisions can't alter agreed line items.
    6. Commitment acceptance (#67): an offer until a matching acceptance.
    7. Lifecycle: who moves each status (#65).
    8. Commitment digest reply (#24): the seller recomputes record_digest.
    9. Issued proposals reply (#26): issued_from names its source.
    10. Hold states (#66): offered hold_terms, live hold.
    11. Agreed baseline (#68): a VersionRef baseline, then change_requests[].
    12. Change-path reply to @dineshbhat (#68): § 1.1's change-path column.
    13. Operations table reply to @dineshbhat (#113).
    14. Dated inventory reply to @matthew-iabtechlab (#105): date moves after agreed go downstream.
    15. External references reply to @franks33 (#124): outside record_digest.
    16. Error object (#130): one rejection object with retry.
    17. ext container (#131): @VJAlkimi's ext, domain-keyed.
    18. Deal handoff (#132): deal ID, deal_origin, and buyer seats.
    19. Flight dates reply to @EvgenyAndroid (#127): commitment.flight.end is inclusive.
    20. Idempotency reply to @EvgenyAndroid (#128): their retention floor, [Change] § 4.1, § 5.6.1 — Commitments must carry proposal_id and version; stale versions are rejected #24's question 1.
    21. Line item reference reply to @EvgenyAndroid (#31): a VersionRef.
    22. Brief reply to @VJAlkimi (#34): a brief must not change behind its id.
    23. Document reference review of PR #75: terms_refs[] of DocumentRef.
    24. Replay review of PR #73 and its follow-up.
    25. Manifest review of PR #76.

    Identity and transport

    1. Seller identity (#61): a Party keyed by domain.
    2. Signing profile (AAMP #3): IETF Web Bot Auth as AAMP's signing profile.
    3. Credential schemes (#62): eligibility, not agent authentication.
    4. Manifest reply (#29): binds the well-known file to seller.domain.
    5. Authorization evidence reply (#57): the mandate binds to record_digest.
    6. Seller relationship (#88): checkable against ads.txt and sellers.json.
    7. Delegation reply to @aeoess (AAMP #3): identity is not authority.
    8. Delegation answers to @aeoess (#57): a commitment must fit every delegation link.
    9. Attestations reply to @peterduhon (#116): a buyer agent's reference is a claim.
    10. Advertiser reply to @EvgenyAndroid (#126): buyer and commitment.advertisers[].
    11. App identity review of PR #17: AppId { store, bundle }.

    Pricing and composition

    1. Final-rate reply (#30): agreed_rate is final after acceptance.
    2. Floor reply (#30): a readable floor is an offer; we use a min_rate hint.
    3. Cost methods (#94): an open cost_method vocabulary.
    4. requires comment (#23): one commit, replacing our earlier commitment set.
    5. Cross-media package reply (#86): maps asks to linked_execution, requires, and [Change] § 5.1, § 5.2 — Define channel and environments in AdCOM terms, so one impression gets one label #90.
    6. Cancellation and exclusivity (#98): notice tiers and ExclusivityOption.
    7. Cancellation penalties reply (#85): 60-, 30-, and 7-day tiers.
    8. Ordered adjustments reply to @matthew-iabtechlab (#103): machine-readable rate conditions.
    9. commitment.amount reply to @dineshbhat (#115): a fee isn't a pricing[] entry.
    10. CTV pod reply to @franks33 (#5): [Change] § 5.6 — Give cancellation_policy and exclusivity options a typed shape #98 sells in-pod separation.
    11. Deal price (#133): agreed_rate as terms.dealfloor.
    12. Floor review of @Sirajmx's PR #18, pointing to #133.
    13. Dependencies review of PR #70.
    14. Seller fee review of PR #117.

    Delivery and guarantees

    1. Delivery type (#93): delivery_type per mechanism option.
    2. Settlement (#95): committed levels, who counts, and remedy order.
    3. Audience counts reply (#38): demographic and metric terms.
    4. Delivery schedule reply to @dineshbhat (#114): a seller-set binding flag per phase.

    Channels and placements

    1. Channel definitions (#90): an open channel vocabulary in AdCOM terms.
    2. Impression placement (#89): a placement object.
    3. Format spec versions (#87): spec_ref pins one version.
    4. Creative approval comment (#32): approvers, and what silence means.
    5. Notifications review of PR #118.
    6. Break position (#99): pre-roll, mid-roll, and pod slot.
    7. Programs and live events (#100): what if one doesn't air.
    8. Audio feed (#101): embedded for recorded-in ads.
    9. Print channel reply to @matthew-iabtechlab (#102): circulation guarantees settle under [Change] § 5.7 — Make a guarantee settleable: direction, controlling measurement, remedy order #95.
    10. Search and social reply to @dineshbhat (#112): no buying_route.

    DOOH

    1. DOOH properties (#96): venue, screens, hours, loop, and allocation.
    2. Plays and impressions (#92): delivery_counting.
    3. Screen loop reply (#79): how the loop sets plays.
    4. Station-level buying reply (#81): stations as selectable properties.
    5. OTS-based CPM reply (#82): what a DOOH CPM must state.
    6. Physical availability reply (#77): maps three of four asks.
    7. Second reply on #96 and #93 revisions (#79) and third reply to @premesh, on dayparted share of voice (#79).
    8. Categories reply to @esteininger (#96).
    9. Venue type pointer to @premesh (#8).
    10. Sync groups reply to @premesh (#92): sync_groups[] with min_screens_per_play.
    11. Static OOH reply to @premesh (#125): proof of performance, [Change] § 5.1, § 5.2 — Define channel and environments in AdCOM terms, so one impression gets one label #90's question 6.
    12. DOOH test reply to @jaanijuk (#134): a metric term says rate or count.
    13. Share-of-voice reply to @jaanijuk and @premesh (#134): folded into [Change] § 5.9, § 5.6, § 2.1 — Add delivery_type: guaranteed, share_of_voice, non_guaranteed #93, [Change] § 5.7 — Make a guarantee settleable: direction, controlling measurement, remedy order #95, and [Change] § 5.2, § 5.5 — DOOH properties: venue type, screens, operating hours, and loop #96.

    Targeting and audiences

    1. Typed targeting reply (#58): dayparts, device types, and frequency periods.
    2. Audience combination (#91): combine from seller-declared operators.
    3. Audience disclosure (#97): the Data Transparency Standard label.
    4. Device and daypart reply to @dineshbhat (#111): agrees on device types, not midnight.
    5. Block list review of PR #71: DocumentRef replaces list_ref.
    6. Market pricing review of PR #72: markets, apart from geo.
    7. Time zone comment on PR #123: IANA names across IAB specifications.

    The seven open questions

    Open question Our filings
    OQ-1: mutability (#2) Our reply: yes; #60, #64, and #68 build on it.
    OQ-2: catalogs (#3) Our shared types PR deletes catalog_ref.
    OQ-3: cross-channel guarantees (#4) Our #86 reply asks if it belongs here.
    OQ-4: format registry (#5) #87 pins versions; #89 keeps placement out of format IDs. Our fallback reply.
    OQ-5: min_line_items (#6) Our lifecycle PR: under linked_execution: all, one commit takes every line item.
    OQ-6: payment terms (#7) No direct answer.
    OQ-7: environments[] (#8) #90 and #119 give a definition rule.

    Revised 2026-11-03: Adds our PRs, the rules issue, and newer filings.

    Analyzed and generated with the help of Claude, fully reviewed by me.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions