AdCOM 1.0 JSON Schema Unofficial

Decision records ·

D-013 AdCOM types 0 or 1 flags as integers, and the protocol buffer definitions as booleans; eight attributes are a single value in one and an array in the other, in both directions, such as playmethod; and Banner.link is an object in AdCOM and a string there. Which does the schema follow?

Gap Cited on main and at the tag AdCOM1.0-202607.

What the schemas do

Until AdCOM's objects are mapped, the schemas say nothing about these attributes; when they are, they follow the text: integer flags, an array where the text writes "array", and link an object.

Options

  • defer Chosen

    Until AdCOM's objects are mapped, the schemas say nothing about these attributes; when they are, they follow the text: integer flags, an array where the text writes "array", and link an object.

  • proto

    Follow the protocol buffer definitions' types.

Why

The text is normative, and it changed playmethod from one integer to an integer array within 1.0, which neither the protocol buffer definitions nor the Prebid Go types followed. A payload the text allows, such as "playmethod": [1, 2], fails a reader built from those definitions. The objects phase types each attribute as the text writes it, and this record keeps the rows quoted until then.

What we ask the specification to state

Regenerate the protocol buffer definitions from the specification, or mark them as not normative and say which differences are deliberate. Today 24 integer flags are booleans there, 8 attributes differ between an array and a single value, playmethod among them, and Banner.link is a string where AdCOM writes an object.

The specification lines it rests on

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

main

  • Object: VideoPlacement, the VideoPlacement.playmethod key row L1403 at 26c59ba
    playmethod | Playback method(s) in use for this placement. Refer to List: Playback Methods.
  • Object: AudioPlacement, the AudioPlacement.playmethod key row L1580 at 26c59ba
    playmethod | Playback method(s) in use for this placement. Refer to List: Playback Methods.
  • Object: Ad, the Ad.secure key row L273 at 26c59ba
    secure | Flag to indicate if the creative is secure (i.e., uses HTTPS for all assets and markup), where 0 = no, 1 = yes. There is no default and thus if omitted, the secure state is unknown. However, as a practical matter, the safe assumption is to treat unknown as non-secure.
  • Object: Ad, the Ad.attr key row L268 at 26c59ba
    attr | Set of attributes describing the creative. Refer to List: Creative Attributes.
  • Object: Display, the Display.api key row L339 at 26c59ba
    api | API required by the ad if applicable. Refer to List: API Frameworks.
  • Object: Display, the Display.ctype key row L344 at 26c59ba
    ctype | Subtype of display creative. Refer to List: Creative Subtypes - Display.
  • Object: Video, the Video.ctype key row L753 at 26c59ba
    ctype | Subtype of video creative. Refer to List: Creative Subtypes - Audio/Video.
  • Object: Audio, the Audio.ctype key row L803 at 26c59ba
    ctype | Subtype of audio creative. Refer to List: Creative Subtypes - Audio/Video.
  • Object: Content, the Content.keywords key row L2057 at 26c59ba
    keywords | Comma separated list of keywords describing the content. Only one of keywords or kwarray may be present.
  • Object: Banner, the Banner.link key row L428 at 26c59ba
    link | Destination link if the image is activated (e.g., clicked); not applicable in some contexts (e.g., DOOH) and its inclusion does not guarantee it will be supported. Refer to Object: LinkAsset.

Tag AdCOM1.0-202607

  • Object: VideoPlacement, the VideoPlacement.playmethod key row L1403 at d67a6a8
    playmethod | Playback method(s) in use for this placement. Refer to List: Playback Methods.
  • Object: AudioPlacement, the AudioPlacement.playmethod key row L1580 at d67a6a8
    playmethod | Playback method(s) in use for this placement. Refer to List: Playback Methods.
  • Object: Ad, the Ad.secure key row L273 at d67a6a8
    secure | Flag to indicate if the creative is secure (i.e., uses HTTPS for all assets and markup), where 0 = no, 1 = yes. There is no default and thus if omitted, the secure state is unknown. However, as a practical matter, the safe assumption is to treat unknown as non-secure.
  • Object: Ad, the Ad.attr key row L268 at d67a6a8
    attr | Set of attributes describing the creative. Refer to List: Creative Attributes.
  • Object: Display, the Display.api key row L339 at d67a6a8
    api | API required by the ad if applicable. Refer to List: API Frameworks.
  • Object: Display, the Display.ctype key row L344 at d67a6a8
    ctype | Subtype of display creative. Refer to List: Creative Subtypes - Display.
  • Object: Video, the Video.ctype key row L753 at d67a6a8
    ctype | Subtype of video creative. Refer to List: Creative Subtypes - Audio/Video.
  • Object: Audio, the Audio.ctype key row L803 at d67a6a8
    ctype | Subtype of audio creative. Refer to List: Creative Subtypes - Audio/Video.
  • Object: Content, the Content.keywords key row L2058 at d67a6a8
    keywords | Comma separated list of keywords describing the content. Only one of keywords or kwarray may be present.
  • Object: Banner, the Banner.link key row L428 at d67a6a8
    link | Destination link if the image is activated (e.g., clicked); not applicable in some contexts (e.g., DOOH) and its inclusion does not guarantee it will be supported. Refer to Object: LinkAsset.

The record's YAML file