Deals API 1.0 JSON Schema Unofficial

Decision records ·

D-021 Does a Deals API object accept members its table doesn't name, and what is ext?

Gap Cited on main and at the tag 1.0-202602.

What the schemas do

Each object accepts only the members its table names, and ext, on every object, takes an object of any members, which the parties agree on.

Options

  • closed-with-ext Chosen

    Each object accepts only the members its table names, and ext, on every object, takes an object of any members, which the parties agree on.

  • open

    Each object accepts any member, and a receiver ignores the members it doesn't know.

Why

Every table lists its object's members and gives each object an ext "for deal-specific extensions", so the text names where a member it doesn't define goes. The text never says what a receiver does with a member outside the table, and no row forbids one, so whether an object is open or closed is a point it leaves open. That differs from a minimum the rows would rule out: an object with none of its optional members is one each row allows, so the schema keeps it valid. A member outside the table is one no row describes, and the text gives such members a place, ext, so closing the object sends them there. A closed object also lets the schema find a misspelled member, which an open one accepts as an extension.

What we ask the specification to state

Say whether a receiver must reject, or must ignore, a member that no table names, and whether a sender may put one anywhere but ext.

The specification lines it rests on

Each line is quoted as the record pins it. Expand an item to read the quote.

main

  • Object: Deal, the ext row L101 at 3028ddc
    ext | object | Placeholder for deal-specific extensions
  • Object: Terms, the ext row L117 at 3028ddc
    ext | object | Placeholder for deal-specific extensions
  • Object: Inventory, the ext row L133 at 3028ddc
    ext | object | Placeholder for deal-specific extensions
  • Object: Curation, the ext row L146 at 3028ddc
    ext | object | Placeholder for deal-specific extensions
  • Object: BuyerSeat, the ext row L164 at 3028ddc
    ext | object | Placeholder for deal-specific extensions
  • Object: BuyerStatus, the ext row L175 at 3028ddc
    ext | object | Placeholder for deal-specific extensions

Tag 1.0-202602

  • Object: Deal, the ext row L101 at 938a5d1
    ext | object | Placeholder for deal-specific extensions
  • Object: Terms, the ext row L117 at 938a5d1
    ext | object | Placeholder for deal-specific extensions
  • Object: Inventory, the ext row L133 at 938a5d1
    ext | object | Placeholder for deal-specific extensions
  • Object: Curation, the ext row L146 at 938a5d1
    ext | object | Placeholder for deal-specific extensions
  • Object: BuyerSeat, the ext row L164 at 938a5d1
    ext | object | Placeholder for deal-specific extensions
  • Object: BuyerStatus, the ext row L175 at 938a5d1
    ext | object | Placeholder for deal-specific extensions

What it shapes

main: BuyerSeat.ext, BuyerStatus.ext, Curation.ext, Deal.ext, Inventory.ext, Terms.ext

Tag 1.0-202602: BuyerSeat.ext, BuyerStatus.ext, Curation.ext, Deal.ext, Inventory.ext, Terms.ext

The record's YAML file