Repository navigation
§ 2.3 — Static manifest at a well-known URL for standard proposals (#29) - #76
Kishore-2572 wants to merge 1 commit into
Conversation
A new § 2.3 lets a seller publish its public standard line items at /.well-known/openproposal.json: seller_id, generated_at, spec_version and, per proposal, proposal_id, version, the Summary Representation of each line item and a full_url. ETag / Last-Modified are required, only line items with visibility public appear, and entries must match the current version. Buyers discover from the manifest, then fetch the Full Representation of shortlisted line items. Adds examples/manifest.json (§ 6.5) and visibility: public to the CTV and audio examples; the registry_gated display line item is not listed. Refs #29
|
Postindustria (IAB Tech Lab member). @Kishore-2572,
Whichever PR merges later can add its keys to the manifest. As your Knock-on effects note, the Analyzed and generated with the help of Claude, fully reviewed by me. |
|
Postindustria (IAB Tech Lab member). @Kishore-2572, two points on § 2.3 and the example manifest:
Analyzed and generated with the help of Claude, fully reviewed by me. |
What this changes
A new § 2.3 Publication lets a seller publish its public standard line items as a static file at
https://<seller domain>/.well-known/openproposal.json, like ads.txt and sellers.json. The file carriesseller_id,generated_at,spec_versionand, per proposal,proposal_id,version, the Summary Representation (§ 2.1) of each line item, and afull_url.ETag/Last-Modifiedare required so buyers can poll cheaply; only line items withvisibility: publicappear; and entries must match the current version. Buyers discover from the manifest with no agent call or language model, then fetch the Full Representation of shortlisted line items and compose as today.Related issue
Refs #29. The "current version" rule relies on #24 (draft PR #73).
Type
Checklist
scripts/check_appendix.pypassesexamples/is updated and still parses — newmanifest.json(§ 6.5);visibility: publicadded to the CTV and audio examples so they can appear in itselectabledeclaresavailable[]andincluded[]; anythingsettabledeclares bounds (§ 3.1, § 3.2) — no newselectableorsettablefieldsKnock-on effects
visibilityis a line-item field (§ 5.8). The display example isregistry_gated, so the example manifest lists only the CTV and audio line items.Examples parsecheck covers*.yamlonly, so it does not validatemanifest.json. The manifest carries only the summary keys the source examples declare; several § 2.1 summary keys are absent from the examples themselves ([Comment] § 6 — The examples omit listed keys, never exercise the pricing mechanism, and mix timestamp formats the spec does not define #37).seller_domain([Change] § 4.1 — Identify the seller by seller_domain; make seller_id OPTIONAL #61), so a copied file is rejected. The manifest takes whichever seller identifier the group adopts;record_digest/offer_digest([Change] § 4.1 — Define record_digest and assent[]; defer signer identity to the AAMP profile #63) in place of comparing version numbers;ETagandLast-Modifiedare required or either;spec_versionhas no home in the object ([Comment] § 2 — The draft does not say what a parser does with a key it does not define #33); what a public manifest may expose ([Comment] §§ 2.1, 2.2, 4, 5.7, 5.8, 5.10 — Privacy and disclosure guidance across summary, measurement, and agent identity#47).line_items[]) and carryproposal_idandseller_idon every line item representation #31 (line_items[]naming)./.well-known/openproposal.jsonfollows RFC 8615. If adopted, theopenproposal.jsonwell-known name should be registered with IANA.By opening this pull request I agree my contribution may be published under this
repository's licence, as set out in CONTRIBUTING.md.