From ed08163dc407fb765fc403ef2df8fbca3680ab70 Mon Sep 17 00:00:00 2001 From: "Knitting.Media" <60264355+knittingmedia@users.noreply.github.com> Date: Thu, 8 Jun 2023 13:38:39 +0100 Subject: [PATCH 001/105] Update OpenDirect.v2.0.final.md test update --- OpenDirect.v2.0.final.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OpenDirect.v2.0.final.md b/OpenDirect.v2.0.final.md index e78214a..8cce27d 100644 --- a/OpenDirect.v2.0.final.md +++ b/OpenDirect.v2.0.final.md @@ -1,6 +1,6 @@ ![IAB Tech Lab](https://drive.google.com/uc?id=10yoBoG5uRETSXRrnJPUDuONujvADrSG1) -# **OpenDirect Specification v2.0** +# **OpenDirect Specification v2.1** #### FINAL v2.0 From fb5978b50d41a847eeda7d2bea3470fd6b1d1e59 Mon Sep 17 00:00:00 2001 From: "Knitting.Media" <60264355+knittingmedia@users.noreply.github.com> Date: Thu, 8 Jun 2023 13:39:28 +0100 Subject: [PATCH 002/105] Rename OpenDirect.v2.0.final.md to OpenDirect.v2.1.final.md update --- OpenDirect.v2.0.final.md => OpenDirect.v2.1.final.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename OpenDirect.v2.0.final.md => OpenDirect.v2.1.final.md (100%) diff --git a/OpenDirect.v2.0.final.md b/OpenDirect.v2.1.final.md similarity index 100% rename from OpenDirect.v2.0.final.md rename to OpenDirect.v2.1.final.md From 710b4980083d6055f5f33e67a614b510adb52ecc Mon Sep 17 00:00:00 2001 From: "Knitting.Media" <60264355+knittingmedia@users.noreply.github.com> Date: Thu, 8 Jun 2023 13:59:57 +0100 Subject: [PATCH 003/105] Update OpenDirect.v2.1.final.md --- OpenDirect.v2.1.final.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/OpenDirect.v2.1.final.md b/OpenDirect.v2.1.final.md index 8cce27d..340872b 100644 --- a/OpenDirect.v2.1.final.md +++ b/OpenDirect.v2.1.final.md @@ -2,9 +2,7 @@ # **OpenDirect Specification v2.1** -#### FINAL v2.0 - -**February 2019** +**August 2023** **About the IAB Technology Lab** From d403d9e7735567162ba3d2f9bdb9822712479b21 Mon Sep 17 00:00:00 2001 From: "Knitting.Media" <60264355+knittingmedia@users.noreply.github.com> Date: Wed, 14 Jun 2023 10:52:03 +0100 Subject: [PATCH 004/105] Update OpenDirect.v2.1.final.md --- OpenDirect.v2.1.final.md | 1 + 1 file changed, 1 insertion(+) diff --git a/OpenDirect.v2.1.final.md b/OpenDirect.v2.1.final.md index 340872b..c15858c 100644 --- a/OpenDirect.v2.1.final.md +++ b/OpenDirect.v2.1.final.md @@ -1,6 +1,7 @@ ![IAB Tech Lab](https://drive.google.com/uc?id=10yoBoG5uRETSXRrnJPUDuONujvADrSG1) # **OpenDirect Specification v2.1** +# ** WORK IN PROGRESS ** **August 2023** From 669bf959358b246b0cafcf21ffd5c0cf18c2ea22 Mon Sep 17 00:00:00 2001 From: "Knitting.Media" <60264355+knittingmedia@users.noreply.github.com> Date: Wed, 14 Jun 2023 14:06:48 +0100 Subject: [PATCH 005/105] Update OpenDirect.v2.1.final.md Account Object updated with ThirdPartyID --- OpenDirect.v2.1.final.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/OpenDirect.v2.1.final.md b/OpenDirect.v2.1.final.md index c15858c..53e3214 100644 --- a/OpenDirect.v2.1.final.md +++ b/OpenDirect.v2.1.final.md @@ -29,7 +29,7 @@ OpenDirect Specification the IAB Tech Lab is licensed under a Creative Commons A - [How it works](#how_it_works) - [Authorization](#authorization) - [SPECIFICATION](#specification) - - [Object: Ad](#object_ad) + - [Object: Account](#object_account) - [Object: AdUnit](#object_adunit) - [Object: Address](#object_address) - [Object: Assignment](#object_assignment) @@ -189,7 +189,7 @@ OpenDirect users include: ![Entity Relationship Diagram](images/ODv2EntityRelationshipDiagram.png) -## Object: Account +## Object: Account An account defines a buyer-advertiser relationship. A buyer is typically an agency that places orders on behalf of several advertisers. Each account associates a buyer with one advertiser and is used to manage orders for one publisher. An advertiser may also work with several buyers, and therefore, advertisers have a separate account for each buyer they work with. If an advertiser represents itself, the account identifies the advertiser as both the buyer and the advertiser. @@ -203,6 +203,7 @@ The Account owns the orders and creative. |**id*** | A system-generated opaque ID that uniquely identifies this resource.| string _(36)_ | |**advertiserid***|An Id that identifies the organization that is acting as the advertiser.
Advertiser ID may be generated by the buyer (agency) or by the publisher if the advertiser is also the buyer.
An advertiser that is representing itself must have an AdvertiserId and BuyerId that match.|string _(36)_ |
|**buyerid*** |An Id that identifies the organization that is acting as the buyer. The Publisher generates the BuyerId. If the advertiser is performing their own buys, AdvertiserId and BuyerId must be the same.|string _(36)_ |
+|**thirdpartyid** |An ID that identifies the organization upon who's behalf an Order is being placed (e.g. a group media agency).|string _(36)_ |
|**name***|The name of the account. Used for display purposes. |string _(255)_ |
|**ext**|Optional vendor-specific extensions. |ext object|
_* required_
From 99297526ffc0ee727424eed5befb0dddfb5020f2 Mon Sep 17 00:00:00 2001
From: "Knitting.Media" <60264355+knittingmedia@users.noreply.github.com>
Date: Wed, 14 Jun 2023 14:16:24 +0100
Subject: [PATCH 006/105] Update OpenDirect.v2.1.final.md
Added ProviderData Object
---
OpenDirect.v2.1.final.md | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
diff --git a/OpenDirect.v2.1.final.md b/OpenDirect.v2.1.final.md
index 53e3214..175bfea 100644
--- a/OpenDirect.v2.1.final.md
+++ b/OpenDirect.v2.1.final.md
@@ -42,6 +42,7 @@ OpenDirect Specification the IAB Tech Lab is licensed under a Creative Commons A
- [Object: Organization](#object_organization)
- [Object: Placement](#object_placement)
- [Object: Product](#object_product)
+ - [Object: ProviderData](#object_providerdata)
- [Object: Stats](#object_stats)
- [Collection Objects](#collection_objects)
- [General Support Requirements](#general_support_requirements)
@@ -453,6 +454,26 @@ A Product resource identifies anything from an ad placement to a Run of Network
|**pmp** ||< The list must contain unique contact types (for example, only one billing contact).|[CONTACT](#object_contact) array
|**orderid***|The ID of the Order that the Change is Requested for.| string _(36)_ |
+|**lineid**|The ID of the Line in the Order that the Change is Requested for (if the Change Request is needed at line level)| string _(36)_ |
|**requesterid***|The OrganisationID of the Change Requester usually the AgencyID if the change was requested by an Agency or the PublisherID if the change was requested by the Vendor. | string _(36)_ |
+|**providerdata**|The ProviderData object is used for buyers to detail structured information that may be used to identify their order in a seller's system using their own IDs or references. |object|
|**status**|Specifies the Status of the Change Request. |enum (PENDING, APPROVED, REJECTED)
|**webhook**|URI which is called when the change is approved, rejected or modified by the Seller. URI is called with a PUT request containing the Change Request ID. | string _(36)_ |
|**ext**|Optional vendor-specific extensions. |ext object|
From 4eb3666b7b082dc77e050d6d3baf76fe16e8b875 Mon Sep 17 00:00:00 2001
From: "Knitting.Media" <60264355+knittingmedia@users.noreply.github.com>
Date: Wed, 14 Jun 2023 14:49:35 +0100
Subject: [PATCH 008/105] Update OpenDirect.v2.1.final.md
Added OOHbject object
---
OpenDirect.v2.1.final.md | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)
diff --git a/OpenDirect.v2.1.final.md b/OpenDirect.v2.1.final.md
index 8963cea..32f189c 100644
--- a/OpenDirect.v2.1.final.md
+++ b/OpenDirect.v2.1.final.md
@@ -334,6 +334,7 @@ _Notes: The user may update a line only if it’s in the Draft state. If the lin
|**frequencyinterval**|Defines the frequency cap intervals that the API supports. The frequency interval specifies the units in which the frequency count is expressed. For example, if a line’s frequency count is 2 and interval is Day, display the ad to the same user a Max 2 times in the same calendar day.|enum (Day, Month, Week, Hour, LineDuration)
|**reservedexpirydate** |The date and time that the reserved inventory will expire. If the line is reserved, the expiry date must be set.|string (date-time)
|**targeting**|The creative assigned to the LINE resource is display when the line includes user segments and the delivery engine can determine whether the user matches the specified segments.|[AdCOM **Segment** object](https://github.com/InteractiveAdvertisingBureau/AdCOM/blob/master/AdCOM%20v1.0%20FINAL.md#object_segment) array |
+|**providerdata**|The ProviderData object is used for buyers to detail structured information that may be used to identify their order in a seller's system using their own IDs or references. |object|
|**pmp** | | |
|**ext**|Optional vendor-specific extensions. |ext object|
_* required_
@@ -358,6 +359,28 @@ Mesages are used for communication between a buyer are a seller around an Order
|**replywebhook** |URI which is called when there is a reply to this message. URI is called with a PUT request containing the new MessageId in a JSON object. |string _(1024)_
|**ext**|Optional vendor-specific extensions. |ext object|
_* required_
+
+## Object: OOHbject
+
+OpenDirect (and OpenRTB) trades with real time Audience impressions, whereas Out-Of-Home media can be sold in the wider dimensions of time, share of time, location and audience.
+
+OOH Media physically manifests itself as display of the advert on a frame at a defined location and time which then gives an audience in the vicinity of that event an opportunity to see the advertising.
+
+The OOHbject object is used to discover and target the multidimensional aspect of OOH media.
+
+| Attribute | Description | Type |
+| ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------ |
+| Name | The key objects for describing OOH media campaigns and products are: The frequency interval specifies the units in which the frequency count is expressed. For example, if a line’s frequency count is 2 and interval is Day, display the ad to the same user a Max 2 times in the same calendar day.|enum (Day, Month, Week, Hour, LineDuration)
|**reservedexpirydate** |The date and time that the reserved inventory will expire. If the line is reserved, the expiry date must be set.|string (date-time)
|**targeting**|The creative assigned to the LINE resource is display when the line includes user segments and the delivery engine can determine whether the user matches the specified segments.|[AdCOM **Segment** object](https://github.com/InteractiveAdvertisingBureau/AdCOM/blob/master/AdCOM%20v1.0%20FINAL.md#object_segment) array |
+|**targeting**|The segments used to target users and determine product availability.| OOHbject array |
|**providerdata**|The ProviderData object is used for buyers to detail structured information that may be used to identify their order in a seller's system using their own IDs or references. |object|
|**pmp** | | |
|**ext**|Optional vendor-specific extensions. |ext object|
From c01abd044d1f8f1ee0a129a325270bb6089625a3 Mon Sep 17 00:00:00 2001
From: "Knitting.Media" <60264355+knittingmedia@users.noreply.github.com>
Date: Wed, 14 Jun 2023 15:20:12 +0100
Subject: [PATCH 010/105] Update OpenDirect.v2.1.final.md
Line targeting update (with OOHbject)
---
OpenDirect.v2.1.final.md | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/OpenDirect.v2.1.final.md b/OpenDirect.v2.1.final.md
index 39b9a5e..f50fd04 100644
--- a/OpenDirect.v2.1.final.md
+++ b/OpenDirect.v2.1.final.md
@@ -334,8 +334,7 @@ _Notes: The user may update a line only if it’s in the Draft state. If the lin
|**frequencycount** |The maximum number of times that a unique user must see ads from this line during the specified interval (see FrequencyInterval).|integer
|**frequencyinterval**|Defines the frequency cap intervals that the API supports. The frequency interval specifies the units in which the frequency count is expressed. For example, if a line’s frequency count is 2 and interval is Day, display the ad to the same user a Max 2 times in the same calendar day.|enum (Day, Month, Week, Hour, LineDuration)
|**reservedexpirydate** |The date and time that the reserved inventory will expire. If the line is reserved, the expiry date must be set.|string (date-time)
-|**targeting**|The creative assigned to the LINE resource is display when the line includes user segments and the delivery engine can determine whether the user matches the specified segments.|[AdCOM **Segment** object](https://github.com/InteractiveAdvertisingBureau/AdCOM/blob/master/AdCOM%20v1.0%20FINAL.md#object_segment) array |
-|**targeting**|The segments used to target users and determine product availability.| OOHbject array |
+|**targeting**|Array of objects used to determine product availability.| OOHbject array |
|**providerdata**|The ProviderData object is used for buyers to detail structured information that may be used to identify their order in a seller's system using their own IDs or references. |object|
|**pmp** | | |
|**ext**|Optional vendor-specific extensions. |ext object|
From 4ff16b8acb824e74ae78276b886b6d97900b3d6b Mon Sep 17 00:00:00 2001
From: "Knitting.Media" <60264355+knittingmedia@users.noreply.github.com>
Date: Wed, 14 Jun 2023 15:30:57 +0100
Subject: [PATCH 011/105] Update OpenDirect.v2.1.final.md
Adding OOH targeting to the Assignment object
---
OpenDirect.v2.1.final.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/OpenDirect.v2.1.final.md b/OpenDirect.v2.1.final.md
index f50fd04..56e6ba5 100644
--- a/OpenDirect.v2.1.final.md
+++ b/OpenDirect.v2.1.final.md
@@ -253,6 +253,7 @@ Notes: The assignment must fail if the following are true.
|**placementid***|The ID of the placement that will display the creative.|string _(36)_ |
|**status**|A value that determines whether the creative serves. The status may not transition from Inactive to Active.|enum (Active, Inactive)
|**weight** |Determines how much the creative is displayed relative to the other creative assigned to the same line. To provide even rotation, do not specify a weight. If weight is specified, all assignments that specify the same line must specify a weight and the weight of all the assignments must add up to 100. If the weight of all assignments does not add up to 100, even rotation is applied. Assignments with heavier weight get proportionally more rotation compared to those with lesser weight. For example, if the line has 2 creative, A and B, assigned with the same dates, and A has weight 25 and B has weight 75, B will serve three times as often as A.| integer (1-100)
+|**targeting**|Object that assigns creative to play at the right place at the right time |OOHbject array|
|**ext**|Optional vendor-specific extensions. |ext object|
_* required_
From a37c199c831869aed070d7023398ca100a6f1f30 Mon Sep 17 00:00:00 2001
From: "Knitting.Media" <60264355+knittingmedia@users.noreply.github.com>
Date: Wed, 14 Jun 2023 15:38:24 +0100
Subject: [PATCH 012/105] Update OpenDirect.v2.1.final.md
Changed previous 'targeting' name to 'segments'
---
OpenDirect.v2.1.final.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/OpenDirect.v2.1.final.md b/OpenDirect.v2.1.final.md
index 56e6ba5..2e136b7 100644
--- a/OpenDirect.v2.1.final.md
+++ b/OpenDirect.v2.1.final.md
@@ -335,6 +335,7 @@ _Notes: The user may update a line only if it’s in the Draft state. If the lin
|**frequencycount** |The maximum number of times that a unique user must see ads from this line during the specified interval (see FrequencyInterval).|integer
|**frequencyinterval**|Defines the frequency cap intervals that the API supports. The frequency interval specifies the units in which the frequency count is expressed. For example, if a line’s frequency count is 2 and interval is Day, display the ad to the same user a Max 2 times in the same calendar day.|enum (Day, Month, Week, Hour, LineDuration)
|**reservedexpirydate** |The date and time that the reserved inventory will expire. If the line is reserved, the expiry date must be set.|string (date-time)
+|**segments**|The creative assigned to the LINE resource is display when the line includes user segments and the delivery engine can determine whether the user matches the specified segments.|[AdCOM **Segment** object](https://github.com/InteractiveAdvertisingBureau/AdCOM/blob/master/AdCOM%20v1.0%20FINAL.md#object_segment) array |
|**targeting**|Array of objects used to determine product availability.| OOHbject array |
|**providerdata**|The ProviderData object is used for buyers to detail structured information that may be used to identify their order in a seller's system using their own IDs or references. |object|
|**pmp** | | |
From 4b1af527d48e39997a099821efa1f45d126a0e37 Mon Sep 17 00:00:00 2001
From: "Knitting.Media" <60264355+knittingmedia@users.noreply.github.com>
Date: Thu, 15 Jun 2023 14:25:13 +0100
Subject: [PATCH 013/105] ProductTargeting update for review
---
OpenDirect.v2.1.final.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/OpenDirect.v2.1.final.md b/OpenDirect.v2.1.final.md
index 2e136b7..625166e 100644
--- a/OpenDirect.v2.1.final.md
+++ b/OpenDirect.v2.1.final.md
@@ -335,8 +335,8 @@ _Notes: The user may update a line only if it’s in the Draft state. If the lin
|**frequencycount** |The maximum number of times that a unique user must see ads from this line during the specified interval (see FrequencyInterval).|integer
|**frequencyinterval**|Defines the frequency cap intervals that the API supports. The frequency interval specifies the units in which the frequency count is expressed. For example, if a line’s frequency count is 2 and interval is Day, display the ad to the same user a Max 2 times in the same calendar day.|enum (Day, Month, Week, Hour, LineDuration)
|**reservedexpirydate** |The date and time that the reserved inventory will expire. If the line is reserved, the expiry date must be set.|string (date-time)
-|**segments**|The creative assigned to the LINE resource is display when the line includes user segments and the delivery engine can determine whether the user matches the specified segments.|[AdCOM **Segment** object](https://github.com/InteractiveAdvertisingBureau/AdCOM/blob/master/AdCOM%20v1.0%20FINAL.md#object_segment) array |
-|**targeting**|Array of objects used to determine product availability.| OOHbject array |
+|**targeting**|The creative assigned to the LINE resource is display when the line includes user segments and the delivery engine can determine whether the user matches the specified segments.|[AdCOM **Segment** object](https://github.com/InteractiveAdvertisingBureau/AdCOM/blob/master/AdCOM%20v1.0%20FINAL.md#object_segment) array |
+|**producttargeting**|Array of objects used to determine product availability.| OOHbject? producttarget? array |
|**providerdata**|The ProviderData object is used for buyers to detail structured information that may be used to identify their order in a seller's system using their own IDs or references. |object|
|**pmp** | | |
|**ext**|Optional vendor-specific extensions. |ext object|
From 37bf061165be087add80287eb5954fb42cfe0b9b Mon Sep 17 00:00:00 2001
From: "Knitting.Media" <60264355+knittingmedia@users.noreply.github.com>
Date: Mon, 19 Jun 2023 14:48:36 +0100
Subject: [PATCH 014/105] OOHbject renamed producttargeting
---
OpenDirect.v2.1.final.md | 46 ++++++++++++++++++++--------------------
1 file changed, 23 insertions(+), 23 deletions(-)
diff --git a/OpenDirect.v2.1.final.md b/OpenDirect.v2.1.final.md
index 625166e..1532e10 100644
--- a/OpenDirect.v2.1.final.md
+++ b/OpenDirect.v2.1.final.md
@@ -38,7 +38,7 @@ OpenDirect Specification the IAB Tech Lab is licensed under a Creative Commons A
- [Object: Creative](#object_creative)
- [Object: Line](#object_line)
- [Object: Message](#object_message)
- - [Object: OOHbject](#object_oohbject)
+ - [Object: ProductTargeting](#object_producttargeting)
- [Object: Order](#object_order)
- [Object: Organization](#object_organization)
- [Object: Placement](#object_placement)
@@ -336,7 +336,7 @@ _Notes: The user may update a line only if it’s in the Draft state. If the lin
|**frequencyinterval**|Defines the frequency cap intervals that the API supports. The frequency interval specifies the units in which the frequency count is expressed. For example, if a line’s frequency count is 2 and interval is Day, display the ad to the same user a Max 2 times in the same calendar day.|enum (Day, Month, Week, Hour, LineDuration)
|**reservedexpirydate** |The date and time that the reserved inventory will expire. If the line is reserved, the expiry date must be set.|string (date-time)
|**targeting**|The creative assigned to the LINE resource is display when the line includes user segments and the delivery engine can determine whether the user matches the specified segments.|[AdCOM **Segment** object](https://github.com/InteractiveAdvertisingBureau/AdCOM/blob/master/AdCOM%20v1.0%20FINAL.md#object_segment) array |
-|**producttargeting**|Array of objects used to determine product availability.| OOHbject? producttarget? array |
+|**producttargeting**|Array of objects used to determine product availability.|producttarget array |
|**providerdata**|The ProviderData object is used for buyers to detail structured information that may be used to identify their order in a seller's system using their own IDs or references. |object|
|**pmp** | | |
|**ext**|Optional vendor-specific extensions. |ext object|
@@ -363,27 +363,27 @@ Mesages are used for communication between a buyer are a seller around an Order
|**ext**|Optional vendor-specific extensions. |ext object|
_* required_
-## Object: OOHbject
+## Object: ProductTargeting
-OpenDirect (and OpenRTB) trades with real time Audience impressions, whereas Out-Of-Home media can be sold in the wider dimensions of time, share of time, location and audience.
+OpenDirect (and OpenRTB) trades with real time Audience impressions, whereas physical media such as Out-Of-Home can be sold in the wider dimensions of time, share of time, location and audience.
-OOH Media physically manifests itself as display of the advert on a frame at a defined location and time which then gives an audience in the vicinity of that event an opportunity to see the advertising.
+Physical media manifests itself as display of the advert on a 'frame' at a defined location and time which then gives an audience in the vicinity of that event an opportunity to see the advertising.
-The OOHbject object is used to discover and target the multidimensional aspect of OOH media.
+The producttargeting object is used to discover and target the real-life dimensional aspect of physical media.
| Attribute | Description | Type |
| ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------ |
-| Name | The key objects for describing OOH media campaigns and products are: A value of TRUE means the inventory is only available as a package. A value of FALSE allows the buyer to select specific items from inventory.|boolean
|**preferredbillingmethod** |The preferred billing method for this order. The default is Electronic. If the billing contact is not specified in the order, the billing contact comes from buyer’s list of contacts.|enum (Electronic, Postal)
+|**providerdata**|The ProviderData object is used for buyers to detail structured information that may be used to identify their order in a seller's system using their own IDs or references. |object|
+|**advertiserbrand***|identification of the brand being advertised by the advertiser organisation |object|
|**startdate** |The date and time that the order will start. The start date is directional and may be updated by the publisher to match the earliest start date found in the order’s list of lines. If the time is missing, 12:00 AM is assumed. When creating the order, the date and time must be greater than or equal to now. Start dates that have past may not be updated.|string (date-time)
|**enddate** |The date and time that the order will end. The end date is directional and may be updated by the publisher to match the latest end date found in the order’s lines. If the time is missing, 11:59:59 PM is assumed. The end date must be later than the start date. End dates that have past cannot be updated.|string (date-time)
|**orderexpirydate**|The date and time for when the order expires. Publisher will only hold inventory up until the date and time indicated.|string (date-time)
From bb782fc5dd81035a7f01aeb06d226ab0d8dbaf5c Mon Sep 17 00:00:00 2001
From: "Knitting.Media" <60264355+knittingmedia@users.noreply.github.com>
Date: Mon, 19 Jun 2023 15:19:14 +0100
Subject: [PATCH 019/105] added organizationtype to Organization object
---
OpenDirect.v2.1.final.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/OpenDirect.v2.1.final.md b/OpenDirect.v2.1.final.md
index 3449589..9ceab37 100644
--- a/OpenDirect.v2.1.final.md
+++ b/OpenDirect.v2.1.final.md
@@ -452,6 +452,7 @@ A publisher may also create an organization for itself for the purpose of reques
|**name*** |The organization’s display name. Cannot be an empty string. Must be unique. |string _(120)_
|**phone** |The organization’s phone number. |string _(20)_
|**status*** |A value that indicates the current state of the approval process. The approval process confirms the organization’s identity. |enum (Pending, Approved, Disapproved, Limited)
+|**organizationtype***| The core activity that an organisation undertakes as a business e.g. advertiser, OOH Specialist or Media Agency| enum (Advertiser, Buyer, Agency) |
|**url** |A URL to the organization’s website. |string _(1024)_
|**ext**|Optional vendor-specific extensions. |ext object|
_* required_
From f1e3dd950b5ab95e8d4614d833ead507cbc70276 Mon Sep 17 00:00:00 2001
From: "Knitting.Media" <60264355+knittingmedia@users.noreply.github.com>
Date: Tue, 20 Jun 2023 11:58:52 +0100
Subject: [PATCH 020/105] Update Product Object
---
OpenDirect.v2.1.final.md | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/OpenDirect.v2.1.final.md b/OpenDirect.v2.1.final.md
index 9ceab37..b925eac 100644
--- a/OpenDirect.v2.1.final.md
+++ b/OpenDirect.v2.1.final.md
@@ -500,9 +500,14 @@ A Product resource identifies anything from an ad placement to a Run of Network
|**retirementaate** |The date and time, in UTC, that the product may be removed from the bookable inventory.|string (date-time)
|**tz** |The time zone that the product runs in.|string
|**url** |A URL to the specification that describes the creative requirements.|string
-|**context** | | [AdCOM **Context** Object](https://github.com/InteractiveAdvertisingBureau/AdCOM/blob/master/AdCOM%20v1.0%20FINAL.md#object_context)|
-|**source** ||< The status may not transition from Inactive to Active.|enum (Active, Inactive)
|**weight** |Determines how much the creative is displayed relative to the other creative assigned to the same line. To provide even rotation, do not specify a weight. If weight is specified, all assignments that specify the same line must specify a weight and the weight of all the assignments must add up to 100. If the weight of all assignments does not add up to 100, even rotation is applied. Assignments with heavier weight get proportionally more rotation compared to those with lesser weight. For example, if the line has 2 creative, A and B, assigned with the same dates, and A has weight 25 and B has weight 75, B will serve three times as often as A.| integer (1-100)
-|**targeting**|Object that assigns creative to play at the right place at the right time |OOHbject array|
+|**producttargeting**|Object that assigns creative to play at the right place at the right time |producttargeting array|
|**ext**|Optional vendor-specific extensions. |ext object|
_* required_
From c4cb3a0d821e971757bf61bdaac3a720ca178a0c Mon Sep 17 00:00:00 2001
From: "Knitting.Media" <60264355+knittingmedia@users.noreply.github.com>
Date: Thu, 22 Jun 2023 14:29:22 +0100
Subject: [PATCH 024/105] Can we think of a better word for thirdpartyid for
account
---
OpenDirect.v2.1.final.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/OpenDirect.v2.1.final.md b/OpenDirect.v2.1.final.md
index aa7b98d..9b8f554 100644
--- a/OpenDirect.v2.1.final.md
+++ b/OpenDirect.v2.1.final.md
@@ -208,7 +208,7 @@ The Account owns the orders and creative.
|**id*** | A system-generated opaque ID that uniquely identifies this resource.| string _(36)_ |
|**advertiserid***|An Id that identifies the organization that is acting as the advertiser. Advertiser ID may be generated by the buyer (agency) or by the publisher if the advertiser is also the buyer. An advertiser that is representing itself must have an AdvertiserId and BuyerId that match.|string _(36)_ |
|**buyerid*** |An Id that identifies the organization that is acting as the buyer. The Publisher generates the BuyerId. If the advertiser is performing their own buys, AdvertiserId and BuyerId must be the same.|string _(36)_ |
-|**thirdpartyid** |An ID that identifies the organization upon who's behalf an Order is being placed (e.g. a group media agency).|string _(36)_ |
+|**(thirdparty)id** |An ID that identifies the organization upon who's behalf an Order is being placed (e.g. a group media agency).|string _(36)_ |
|**name***|The name of the account. Used for display purposes. |string _(255)_ |
|**status** | A value that indicates the current state of the Account. The following are the possible values. Advertiser ID may be generated by the buyer (agency) or by the publisher if the advertiser is also the buyer. An advertiser that is representing itself must have an AdvertiserId and BuyerId that match.|string _(36)_ |
|**buyerid*** |An Id that identifies the organization that is acting as the buyer. The Publisher generates the BuyerId. If the advertiser is performing their own buys, AdvertiserId and BuyerId must be the same.|string _(36)_ |
-|**(thirdparty)id** |An ID that identifies the organization upon who's behalf an Order is being placed (e.g. a group media agency).|string _(36)_ |
+|**intermediaryid** |An ID that identifies the organization upon who's behalf an Order is being placed (e.g. a group media agency).|string _(36)_ |
|**name***|The name of the account. Used for display purposes. |string _(255)_ |
|**status** | A value that indicates the current state of the Account. The following are the possible values. The approval process confirms the organization’s identity. |enum (Pending, Approved, Disapproved, Limited)
|**organizationtype***| The core activity that an organisation undertakes as a business e.g. advertiser, OOH Specialist or Media Agency| enum (Advertiser, Buyer, Agency) |
+| **eids** | array of extended ids (EID) that detail third party datasources and ids that may be referenced to identify the organization to the buyer | Array |
|**url** |A URL to the organization’s website. |string _(1024)_
|**ext**|Optional vendor-specific extensions. |ext object|
_* required_
From f9b2aca5cda086fe77f139da6c360a6084dbeb84 Mon Sep 17 00:00:00 2001
From: "Knitting.Media" <60264355+knittingmedia@users.noreply.github.com>
Date: Thu, 22 Jun 2023 15:00:00 +0100
Subject: [PATCH 027/105] Added Intermediary to the OpenDirect users list
---
OpenDirect.v2.1.final.md | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/OpenDirect.v2.1.final.md b/OpenDirect.v2.1.final.md
index 1758856..fe580fe 100644
--- a/OpenDirect.v2.1.final.md
+++ b/OpenDirect.v2.1.final.md
@@ -188,6 +188,7 @@ OpenDirect users include:
* **Organization:** All organizations that work with the publisher must obtain an Organization ID, whether they are a buyer, or a brand advertiser.
* **Buyer:** The buyer is the organization that places orders and usually represents an agency acting on behalf of the advertiser, or the advertiser that places orders directly. If the buyer represents advertisers, the buyer must obtain formal consent for acting on behalf of the advertiser and provide proof of that consent to the publisher.
* **Advertisers:** Advertisers represent the brands that purchase publisher inventory for advertising their brands. An advertiser may also be a buyer, but if the advertiser works with a buyer, the advertiser must provide formal consent to allow the buyer to act on its behalf. The Advertiser ID can be used to set up advertiser accounts in an agency or publisher’s OpenDirect system.
+* **Intermediary:** An intermidiary is a non-advertiser organization upon who's behalf an order is being placed (e.g. a group media agency).
# SPECIFICATION
@@ -225,7 +226,7 @@ Ad Unit contains exactly one AdCOM Ad Specification
|**id***|An Id to uniquely identify this Ad Unit within the product|string _(36)_|
|**name** |A name to identify this Ad Unit |string _(255)_ |
|**spec*** |The technical specifications of this Ad Unit|[AdCOM **Placement** object](https://github.com/InteractiveAdvertisingBureau/AdCOM/blob/master/AdCOM%20v1.0%20FINAL.md#object_placement)
-|
+
_* required_
From 075f6c46aaecb58cf2c64722c8bb26e9f39b9557 Mon Sep 17 00:00:00 2001
From: "Knitting.Media" <60264355+knittingmedia@users.noreply.github.com>
Date: Mon, 3 Jul 2023 14:13:30 +0100
Subject: [PATCH 028/105] Updated Path:Accounts examples
---
OpenDirect.v2.1.final.md | 49 ++++++++++++++++++++++++++--------------
1 file changed, 32 insertions(+), 17 deletions(-)
diff --git a/OpenDirect.v2.1.final.md b/OpenDirect.v2.1.final.md
index fe580fe..a417f42 100644
--- a/OpenDirect.v2.1.final.md
+++ b/OpenDirect.v2.1.final.md
@@ -812,6 +812,7 @@ AccessToken: Uses ISO-4217 currency codes|string _(3_)
|**budget** |The order’s estimated budget. The budget is directional; it is not used to limit the amount of money that the order spends. To determine the projected spend based on quantity, aggregate the Cost property for each line of the order.|number
-|**orderstatus*** |Specifies the Status of the Order.|enum (PENDING, APPROVED, REJECTED)
+|**orderstatus*** |Specifies the Status of the Order.|enum (PENDING, OPTIONED, APPROVED, REJECTED)
|**packageonly** |Identifies whether the order is only available as a package or if specific items can be separated from the inventory. A value of TRUE means the inventory is only available as a package. A value of FALSE allows the buyer to select specific items from inventory.|boolean
|**preferredbillingmethod** |The preferred billing method for this order. The default is Electronic. If the billing contact is not specified in the order, the billing contact comes from buyer’s list of contacts.|enum (Electronic, Postal)
|**providerdata**|The ProviderData object is used for buyers to detail structured information that may be used to identify their order in a seller's system using their own IDs or references. |object|
@@ -1687,7 +1687,28 @@ HTTP/1.1 200 OK Content-Type: application/json Content-Length: 187
"orderstatus":"PENDING",
"preferredbillingmethod":"Electronic",
"startdate":"2014-11-24T06:00:00.000Z"
- }
+ },
+ {
+ "id":"1235873",
+ "accountid":"23873345",
+ "publisherid":"7987654",
+ "brand":"Four Candles",
+ "budget":100000,
+ "currency":"USD",
+ "enddate":"2014-12-24T18:00:00.000Z",
+ "name":"Two Ronnies Trading",
+ "orderstatus":"APPROVED",
+ "preferredbillingmethod":"Electronic",
+ "startdate":"2014-11-24T06:00:00.000Z"
+ "providerdata": {
+ "campaignid":"A00123",
+ "campaignname":"Goodnight From Him",
+ "ponumber":"PO80X",
+ "salesorderreference":"SO678",
+ "barterorganisationid":"BO808",
+ "other":{}
+ }
+
]
}
```
@@ -1770,7 +1791,7 @@ The response must support pagination. See Paging Query Parameters.
#### Verbs
-* **GET**: (optional) Gets a list of orders that match the specified filter criteria. The user may use OData expressions with the following Order properties:
+* **GET**: (optional) Gets a list of orders that match the specified filter criteria. The user may use expressions with the following Order properties:
* accountid
* publisherid
* orderstatus
From a29eb7c9112f86d5545927bcbd8ebfb297b086f5 Mon Sep 17 00:00:00 2001
From: "Knitting.Media" <60264355+knittingmedia@users.noreply.github.com>
Date: Tue, 4 Jul 2023 12:18:01 +0100
Subject: [PATCH 031/105] Update Path Order Line Example
---
OpenDirect.v2.1.final.md | 670 ++++++++++++++++++++++++++-------------
1 file changed, 451 insertions(+), 219 deletions(-)
diff --git a/OpenDirect.v2.1.final.md b/OpenDirect.v2.1.final.md
index 15dbb0f..045b759 100644
--- a/OpenDirect.v2.1.final.md
+++ b/OpenDirect.v2.1.final.md
@@ -400,7 +400,7 @@ To specify the individual line item details of the order, use the [LINE](#object
|**brand** |A descriptive name for the brand being advertised. |string _(25)_
|**currency*** |The publisher may enforce that all lines of the order specify products that use the same currency. Uses ISO-4217 currency codes|string _(3_)
|**budget** |The order’s estimated budget. The budget is directional; it is not used to limit the amount of money that the order spends. To determine the projected spend based on quantity, aggregate the Cost property for each line of the order.|number
-|**orderstatus*** |Specifies the Status of the Order.|enum (PENDING, OPTIONED, APPROVED, REJECTED)
+|**orderstatus*** |Specifies the Status of the Order.|enum (PENDING, APPROVED, REJECTED)
|**packageonly** |Identifies whether the order is only available as a package or if specific items can be separated from the inventory. A value of TRUE means the inventory is only available as a package. A value of FALSE allows the buyer to select specific items from inventory.|boolean
|**preferredbillingmethod** |The preferred billing method for this order. The default is Electronic. If the billing contact is not specified in the order, the billing contact comes from buyer’s list of contacts.|enum (Electronic, Postal)
|**providerdata**|The ProviderData object is used for buyers to detail structured information that may be used to identify their order in a seller's system using their own IDs or references. |object|
@@ -1707,8 +1707,8 @@ HTTP/1.1 200 OK Content-Type: application/json Content-Length: 187
"salesorderreference":"SO678",
"barterorganisationid":"BO808",
"other":{}
- }
-
+ }
+ }
]
}
```
@@ -1865,30 +1865,52 @@ POST https:// A value of TRUE allows lines to be booked without creative assigned. Default value is FALSE and prevents lines from being booked when no creative is assigned.|boolean
|**currency*** |Identifies the currency for BasePrice and MinSpend. Using ,ISO-4217 currency code|string _(3)_
|**baseprice*** |The product’s base retail price; this is not the rate card price. The actual price may be more if targeting is specified.|number
-|**deliverytype** |Defines the possible types of delivery.|<<_opendirect_product_deliverytype,deliverytype>>
+|**deliverytype** |Defines the possible types of delivery. The ranges should be of the form: Thousands, Tens of Thousands, Hundreds of Thousands, and so on.|string
|**domain** |Common definition for a domain name.| string _(1024)_
|**icon** |URL to a thumbnail icon of the product. May be used to display next to the product in the product catalog. Publishers should support icons that are 150x150 or less. The maximum size is 10 KB.|string _(1024)_
@@ -484,6 +484,7 @@ A Product resource identifies anything from an ad placement to a Run of Network
|**source** |This object describes the nature and behavior of the entity that is the source of the bid request upstream from the exchange. The primary purpose of this object is to define post-auction or upstream decisioning when the exchange itself does not control the final decision. A common example of this is header bidding, but it can also apply to upstream server entities such as another RTB exchange, a mediation platform, or an ad server combines direct campaigns with 3rd party demand in decisioning.|[OpenRTB Source](https://github.com/InteractiveAdvertisingBureau/openrtb2.x/blob/main/2.6.md#3222---object-segment-)
|**pmp** |This object is the private marketplace container for direct deals between buyers and sellers that may pertain to this Product|[OpenRTB PMP](https://github.com/InteractiveAdvertisingBureau/openrtb2.x/blob/main/2.6.md#3211---object-pmp-)
|**producttargeting** | Array of producttargeting objects used to describe the product inventory and sales rules | producttargeting object |
+|**availsgroupby** | Array of producttargeting objects that describe the grouped fields that that the Availability data can be returned in | producttargeting object |
|**reservedexpirytime** | Defines the day of the week and time of day that represents the cut off point for expiry of a Line for the Product when it is “reserved”. | Date |
|**advertiseridaccess**| List of AdvertiserIDs with access to this Product. NULL = all accounts can access this product. | Array |
|**buyeridaccess**| List of BuyerIDs with access to this Product. NULL = all accounts can access this product. | Array |
@@ -2872,7 +2873,7 @@ HTTP/1.1 200 OK Content-Type: application/json Content-Length: 5899
"ratetype":"CPM",
"currency":"USD",
"baseprice":25.00,
- "deliveryyype":"Guaranteed",
+ "deliveryyype":"guaranteed",
"domain":"mydomain.com",
"estdailyavails":"Hundreds of Thousands",
"icon":"http:// Cannot be an empty string. Must be unique. |string _(120)_
|**phone** |The organization’s phone number. |string _(20)_
|**status*** |A value that indicates the current state of the approval process. The approval process confirms the organization’s identity. |enum (Pending, Approved, Disapproved, Limited)
-|**organizationtype***| The core activity that an organisation undertakes as a business e.g. advertiser, OOH Specialist or Media Agency| enum (Advertiser, Buyer, Agency) |
+|**organizationtype***| The core activity that an organisation undertakes as a business e.g. Advertiser, Intermediary or Agency| enum (advertiser, intermediary, agency) |
| **eids** | array of extended ids (EID) that detail third party datasources and ids that may be referenced to identify the organization to the buyer | Array |
|**url** |A URL to the organization’s website. |string _(1024)_
|**ext**|Optional vendor-specific extensions. |ext object|
@@ -1688,6 +1688,24 @@ AccessToken:
• Inventory: What a media owner / publisher sells in terms of Audience or Frames.
• Delivery: How adverts are displayed from a start and end time, and the share of that display time.
• Distribution: How the adverts are distributed across the times and locations booked by audience and/or investment.
• Investment: How the campaign is quantified for trading purposes (Fixes price, Cost Per Thousand Audience, Cost Per Frame).
• Prohibitions: Information about any brand safety prohibitions that will affect the playout of certain brand types in certain locations e.g. fast food prohibitions on certain locations. | enum (Inventory, Delivery, Distribution, Investment, Prohibitions) |
+| Type | How the OOHbject is being quantified:
• Frames
• Audience
• Investment | enum (Frames, Audience, Investment, Total) |
+| DataSource | The identification and inclusion of third party data sources into the OOHpenDirect schema, which both buyside and sell side may use to describe and discover their available Inventory, location and audiences in accordance with the third party schema | String (255) |
+| Target | Description of the OOHbject Metric | String (255) |
+| TargetValues | Array of one or more values | Array |
+| Selectable | Defines whether a Buyer can select from the given list of TargetValues or whether the targetValues are fixed | Boolean |
+| Count | Count of TargetValues | number |
+| Minimum | Defines the minimum number of TargetValues that must be selected | number |
+| Maximum | Defines the maximum number of TargetValues that must be selected | number |
+| Increment | Defines the increments that are permitted for the targeting values | number |
+| Default | Defines the default TargetValue(s) that are selected if the Buyer does not specify any TargetValue(s) or the target is not selectable | String (255) or Number |
## Object: Order
From 99a808345f954c80878ae3d2b05addd5316ae644 Mon Sep 17 00:00:00 2001
From: "Knitting.Media" <60264355+knittingmedia@users.noreply.github.com>
Date: Wed, 14 Jun 2023 14:59:03 +0100
Subject: [PATCH 009/105] Update OpenDirect.v2.1.final.md
Updated Line Object
---
OpenDirect.v2.1.final.md | 2 ++
1 file changed, 2 insertions(+)
diff --git a/OpenDirect.v2.1.final.md b/OpenDirect.v2.1.final.md
index 32f189c..39b9a5e 100644
--- a/OpenDirect.v2.1.final.md
+++ b/OpenDirect.v2.1.final.md
@@ -38,6 +38,7 @@ OpenDirect Specification the IAB Tech Lab is licensed under a Creative Commons A
- [Object: Creative](#object_creative)
- [Object: Line](#object_line)
- [Object: Message](#object_message)
+ - [Object: OOHbject](#object_oohbject)
- [Object: Order](#object_order)
- [Object: Organization](#object_organization)
- [Object: Placement](#object_placement)
@@ -334,6 +335,7 @@ _Notes: The user may update a line only if it’s in the Draft state. If the lin
|**frequencyinterval**|Defines the frequency cap intervals that the API supports.
• Inventory: What a media owner / publisher sells in terms of Audience or Frames.
• Delivery: How adverts are displayed from a start and end time, and the share of that display time.
• Distribution: How the adverts are distributed across the times and locations booked by audience and/or investment.
• Investment: How the campaign is quantified for trading purposes (Fixes price, Cost Per Thousand Audience, Cost Per Frame).
• Prohibitions: Information about any brand safety prohibitions that will affect the playout of certain brand types in certain locations e.g. fast food prohibitions on certain locations. | enum (Inventory, Delivery, Distribution, Investment, Prohibitions) |
-| Type | How the OOHbject is being quantified:
• Frames
• Audience
• Investment | enum (Frames, Audience, Investment, Total) |
-| DataSource | The identification and inclusion of third party data sources into the OOHpenDirect schema, which both buyside and sell side may use to describe and discover their available Inventory, location and audiences in accordance with the third party schema | String (255) |
-| Target | Description of the OOHbject Metric | String (255) |
-| TargetValues | Array of one or more values | Array |
-| Selectable | Defines whether a Buyer can select from the given list of TargetValues or whether the targetValues are fixed | Boolean |
-| Count | Count of TargetValues | number |
-| Minimum | Defines the minimum number of TargetValues that must be selected | number |
-| Maximum | Defines the maximum number of TargetValues that must be selected | number |
-| Increment | Defines the increments that are permitted for the targeting values | number |
-| Default | Defines the default TargetValue(s) that are selected if the Buyer does not specify any TargetValue(s) or the target is not selectable | String (255) or Number |
+| name | The key objects for describing physical media campaigns and products are:
• Inventory: What a media owner / publisher sells in terms of Audience or Frames.
• Delivery: How adverts are displayed from a start and end time, and the share of that display time.
• Distribution: How the adverts are distributed across the times and locations booked by audience and/or investment.
• Investment: How the campaign is quantified for trading purposes (Fixes price, Cost Per Thousand Audience, Cost Per Frame).
• Prohibitions: Information about any brand safety prohibitions that will affect the playout of certain brand types in certain locations e.g. fast food prohibitions on certain locations. | enum (Inventory, Delivery, Distribution, Investment, Prohibitions) |
+| type | How the producttargeting is being quantified:
• Frames
• Audience
• Investment | enum (Frames, Audience, Investment, Total) |
+| datasource | The identification and inclusion of third party data sources into the schema, which both buyside and sell side may use to describe and discover their available Inventory, location and audiences in accordance with the third party schema | String (255) |
+| target | Description of the producttargeting Metric | String (255) |
+| targetvalues | Array of one or more values | Array |
+| selectable | Defines whether a Buyer can select from the given list of targetvalues or whether the targetvalues are fixed | Boolean |
+| count | Count of targetvalues | number |
+| minimum | Defines the minimum number of targetvalues that must be selected | number |
+| maximum | Defines the maximum number of targetvalues that must be selected | number |
+| increment | Defines the increments that are permitted for the targeting values | number |
+| default | Defines the default targetvalues(s) that are selected if the Buyer does not specify any TargetValue(s) or the target is not selectable | String (255) or Number |
## Object: Order
@@ -495,12 +495,12 @@ It is proposed that a Seller should publish such commercial rules in a text file
| Attribute | Description | Type |
| -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------ |
-| CampaignId | Provided by the Buyer to uniquely identify the Advertising Campaign for which the Order is being placed | String (255) |
-| CampaignName | A descriptive name provided by the Buyer which is associated with the Advertising Campaign for which the Order is being placed | String (255) |
-| PoNumber | Provided by Buyer as a reference to be used by Buyers for any offline contact related to the Order | String (255) |
-| SalesOrderReference | Provided by the Media Owner as a reference to be used by Buyers for any offline contact related to the Order | String (255) |
-| BarterOrganizationId | The OrganizationID of a Barter Company can be added here to flag a Barter transaction | String (255) |
-| Other | An opaque CLOB of provider-defined data. Providers may use this field as needed (for example, to store an ID that correlates this object with resources within their system). Note that any provider that edits this object may override the data in this field. The data should include a marker that you can identify to ensure the data is yours. | CLOB (10000) |
+| campaignid | Provided by the Buyer to uniquely identify the Advertising Campaign for which the Order is being placed | String (255) |
+| campaignname | A descriptive name provided by the Buyer which is associated with the Advertising Campaign for which the Order is being placed | String (255) |
+| ponumber | Provided by Buyer as a reference to be used by Buyers for any offline contact related to the Order | String (255) |
+| salesorderreference | Provided by the Media Owner as a reference to be used by Buyers for any offline contact related to the Order | String (255) |
+| barterorganizationid | The OrganizationID of a Barter Company can be added here to flag a Barter transaction | String (255) |
+| other | An opaque CLOB of provider-defined data. Providers may use this field as needed (for example, to store an ID that correlates this object with resources within their system). Note that any provider that edits this object may override the data in this field. The data should include a marker that you can identify to ensure the data is yours. | CLOB (10000) |
## Object: Stats
From 25dfe5974608c8516c3e39717bfb3c80a427fc8f Mon Sep 17 00:00:00 2001
From: "Knitting.Media" <60264355+knittingmedia@users.noreply.github.com>
Date: Mon, 19 Jun 2023 14:52:59 +0100
Subject: [PATCH 015/105] Added Status to Account
---
OpenDirect.v2.1.final.md | 2 ++
1 file changed, 2 insertions(+)
diff --git a/OpenDirect.v2.1.final.md b/OpenDirect.v2.1.final.md
index 1532e10..c9c2bfb 100644
--- a/OpenDirect.v2.1.final.md
+++ b/OpenDirect.v2.1.final.md
@@ -207,7 +207,9 @@ The Account owns the orders and creative.
|**buyerid*** |An Id that identifies the organization that is acting as the buyer. The Publisher generates the BuyerId. If the advertiser is performing their own buys, AdvertiserId and BuyerId must be the same.|string _(36)_ |
|**thirdpartyid** |An ID that identifies the organization upon who's behalf an Order is being placed (e.g. a group media agency).|string _(36)_ |
|**name***|The name of the account. Used for display purposes. |string _(255)_ |
+|**status** | A value that indicates the current state of the Account. The following are the possible values.
• Pending – The account is yet to be approved; however, the buyer may create a draft order and have the ability to reserve this order at the publishers discretion.
• Approved – The account is approved and can be used for trading.
• Disapproved – The account’s identity could not be verified. The account may not create and book orders.
| enum (Pending, Approved, Disapproved)|
|**ext**|Optional vendor-specific extensions. |ext object|
+
_* required_
From 01496a00acf5b5fbf5adb7cc0b0eee5223a60d14 Mon Sep 17 00:00:00 2001
From: "Knitting.Media" <60264355+knittingmedia@users.noreply.github.com>
Date: Mon, 19 Jun 2023 15:02:31 +0100
Subject: [PATCH 016/105] Added AdvertiserBrand object
---
OpenDirect.v2.1.final.md | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/OpenDirect.v2.1.final.md b/OpenDirect.v2.1.final.md
index c9c2bfb..0afdf4c 100644
--- a/OpenDirect.v2.1.final.md
+++ b/OpenDirect.v2.1.final.md
@@ -32,6 +32,7 @@ OpenDirect Specification the IAB Tech Lab is licensed under a Creative Commons A
- [Object: Account](#object_account)
- [Object: AdUnit](#object_adunit)
- [Object: Address](#object_address)
+ - [Object: AdvertiserBrand](#object_advertiserbrand)
- [Object: Assignment](#object_assignment)
- [Object: ChangeRequest](#object_changerequest)
- [Object: Contact](#object_contact)
@@ -223,8 +224,10 @@ Ad Unit contains exactly one AdCOM Ad Specification
|**name** |A name to identify this Ad Unit |string _(255)_ |
|**spec*** |The technical specifications of this Ad Unit|[AdCOM **Placement** object](https://github.com/InteractiveAdvertisingBureau/AdCOM/blob/master/AdCOM%20v1.0%20FINAL.md#object_placement)
|
+
_* required_
+
## Object: Address
The address object is used to provide values for the [ORGANIZATION](#object:_organization) resource.
@@ -238,9 +241,22 @@ The address object is used to provide values for the [ORGANIZATION](#object:_org
|**addressline2** |The optional second line of the address. |string _(255)_ |
|**postalcode**|The postal or ZIP code for the address. |string _(15)_ |
|**state** |The state or province for the address. |string _(36)_ |
+
_* required_
+## Object: AdvertiserBrand
+
+Defines the details of a Brand associated with an organization
+
+| Attribute | Description | Type |
+| -------------------- | --------------------------------------------------------------- | ------------ |
+| **id*** | A system-generated opaque ID that uniquely identifies the brand | String (255) |
+| **name*** | The brand's display name | String (255) |
+| **organizationid*** | The ID of the organization that owns the brand | String (36) |
+| eids | array of extended ids (EID) that detail third party datasources and ids that may be referenced to identify the AdvertiderBrand to the buyer | Array |
+
+
## Object: Assignment
Defines an Assignment resource. An Assignment associates a creative with a line of the order. A creative may be assigned to one or more lines and a line may be assigned one or more creative.
From 1916e9d772807ec3b1b295077d58796763d1457f Mon Sep 17 00:00:00 2001
From: "Knitting.Media" <60264355+knittingmedia@users.noreply.github.com>
Date: Mon, 19 Jun 2023 15:06:31 +0100
Subject: [PATCH 017/105] Added EID and TPID objects
---
OpenDirect.v2.1.final.md | 66 +++++++++++++++++++++++++++++++++++++++-
1 file changed, 65 insertions(+), 1 deletion(-)
diff --git a/OpenDirect.v2.1.final.md b/OpenDirect.v2.1.final.md
index 0afdf4c..530bb9f 100644
--- a/OpenDirect.v2.1.final.md
+++ b/OpenDirect.v2.1.final.md
@@ -46,6 +46,8 @@ OpenDirect Specification the IAB Tech Lab is licensed under a Creative Commons A
- [Object: Product](#object_product)
- [Object: ProviderData](#object_providerdata)
- [Object: Stats](#object_stats)
+ - [Object: EID](#object_eid)
+ - [Object: TPID](#object_tpid)
- [Collection Objects](#collection_objects)
- [General Support Requirements](#general_support_requirements)
- [Authentication](#authentication)
@@ -254,7 +256,7 @@ Defines the details of a Brand associated with an organization
| **id*** | A system-generated opaque ID that uniquely identifies the brand | String (255) |
| **name*** | The brand's display name | String (255) |
| **organizationid*** | The ID of the organization that owns the brand | String (36) |
-| eids | array of extended ids (EID) that detail third party datasources and ids that may be referenced to identify the AdvertiderBrand to the buyer | Array |
+| **eids** | array of extended ids (EID) that detail third party datasources and ids that may be referenced to identify the AdvertiderBrand to the buyer | Array |
## Object: Assignment
@@ -534,6 +536,68 @@ The Stats resource contains reporting data about a Line.
|**spend**|The amount spent to date. | number
+## Object: EID
+
+Extended identifiers support in the OpenDirect specification allows buyers to use third party identifiers in ther trading process. This object can contain one or more TPIDs from a single source or a technology provider. The publisher should ensure that business agreements allow for the sending of this data.
+
+
+
+
+
+
+## Object: TPID
+
+This object contains a single third party identifier provided as part of extended identifiers. The publisher should ensure that business agreements allow for the sending of this data.
+
+
+
+
+ Attribute
+ Type
+ Description
+
+
+
+ source
string
+ Source or technology provider responsible for the set of included IDs. Expressed as a top-level domain.
+
+
+
+ name
string
+ Name of Source or technology provider responsible for the set of included IDs.
+
+
+
+ tpids
object array
+ Array of third party IDs
+ TPID
objects from the given source. Refer to 3.11 Extended Identifier UIDs
+
+
+ ext
object
+ Placeholder for exchange-specific extensions to OpenDirect.
+
+
+
+
+
+
# Collection Objects
For GET calls that return a collection of resources, such as /accounts/{id}/orders, the response must be an object that contains an array of the requested resources. The array must be named according to the type of resource it contains. The following table identifies the property name that must be used for each collection call.
From 9dfde75effb03f61e2b409210095fb897d78e269 Mon Sep 17 00:00:00 2001
From: "Knitting.Media" <60264355+knittingmedia@users.noreply.github.com>
Date: Mon, 19 Jun 2023 15:13:37 +0100
Subject: [PATCH 018/105] advertiserbrand and providerdata added to Order
object
---
OpenDirect.v2.1.final.md | 2 ++
1 file changed, 2 insertions(+)
diff --git a/OpenDirect.v2.1.final.md b/OpenDirect.v2.1.final.md
index 530bb9f..3449589 100644
--- a/OpenDirect.v2.1.final.md
+++ b/OpenDirect.v2.1.final.md
@@ -424,6 +424,8 @@ To specify the individual line item details of the order, use the [LINE](#object
|**orderstatus*** |Specifies the Status of the Order.|enum (PENDING, APPROVED, REJECTED)
|**packageonly** |Identifies whether the order is only available as a package or if specific items can be separated from the inventory.
+
+ Attribute
+ Type
+ Description
+
+
+
+ id
string
+ The identifier for the Third Party.
+
+
+
+ ext
object
+ Placeholder for specific extensions to this object.
+
+
+
• Inventory: What a media owner / publisher sells in terms of Audience or Frames.
• Delivery: How adverts are displayed from a start and end time, and the share of that display time.
• Distribution: How the adverts are distributed across the times and locations booked by audience and/or investment.
• Investment: How the campaign is quantified for trading purposes (Fixes price, Cost Per Thousand Audience, Cost Per Frame).
• Prohibitions: Information about any brand safety prohibitions that will affect the playout of certain brand types in certain locations e.g. fast food prohibitions on certain locations. | enum (Inventory, Delivery, Distribution, Investment, Prohibitions) |
-| type | How the producttargeting is being quantified:
• Frames
• Audience
• Investment | enum (Frames, Audience, Investment, Total) |
-| datasource | The identification and inclusion of third party data sources into the schema, which both buyside and sell side may use to describe and discover their available Inventory, location and audiences in accordance with the third party schema | String (255) |
-| target | Description of the producttargeting Metric | String (255) |
-| targetvalues | Array of one or more values | Array |
-| selectable | Defines whether a Buyer can select from the given list of targetvalues or whether the targetvalues are fixed | Boolean |
-| count | Count of targetvalues | number |
-| minimum | Defines the minimum number of targetvalues that must be selected | number |
-| maximum | Defines the maximum number of targetvalues that must be selected | number |
-| increment | Defines the increments that are permitted for the targeting values | number |
-| default | Defines the default targetvalues(s) that are selected if the Buyer does not specify any TargetValue(s) or the target is not selectable | String (255) or Number |
-
## Object: Order
The Order resource specifies the plan’s start and end dates, estimated budget, currency, and preferred billing method for all line items in the order.
@@ -510,7 +488,31 @@ A Product resource identifies anything from an ad placement to a Run of Network
|**thirdpartyidaccess**| List of ThirdPartyIDs with access to this Product. NULL = all accounts can access this product. | Array |
|**ext**|Optional vendor-specific extensions. |ext object|
_* required_
+
+## Object: ProductTargeting
+OpenDirect (and OpenRTB) trades with real time Audience impressions, whereas physical media such as Out-Of-Home can be sold in the wider dimensions of time, share of time, location and audience.
+
+Physical media manifests itself as display of the advert on a 'frame' at a defined location and time which then gives an audience in the vicinity of that event an opportunity to see the advertising.
+
+The producttargeting object is used to discover and target the real-life dimensional aspect of physical media.
+
+| Attribute | Description | Type |
+| ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------ |
+| name | The key objects for describing physical media campaigns and products are:
• Inventory: What a media owner / publisher sells in terms of Audience or Frames.
• Delivery: How adverts are displayed from a start and end time, and the share of that display time.
• Distribution: How the adverts are distributed across the times and locations booked by audience and/or investment.
• Investment: How the campaign is quantified for trading purposes (Fixes price, Cost Per Thousand Audience, Cost Per Frame).
• Prohibitions: Information about any brand safety prohibitions that will affect the playout of certain brand types in certain locations e.g. fast food prohibitions on certain locations. | enum (Inventory, Delivery, Distribution, Investment, Prohibitions) |
+| type | How the producttargeting is being quantified:
• Frames
• Audience
• Investment | enum (Frames, Audience, Investment, Total) |
+| datasource | The identification and inclusion of third party data sources into the schema, which both buyside and sell side may use to describe and discover their available Inventory, location and audiences in accordance with the third party schema | String (255) |
+| target | Description of the producttargeting Metric | String (255) |
+| targetvalues | Array of one or more values | Array |
+| selectable | Defines whether a Buyer can select from the given list of targetvalues or whether the targetvalues are fixed | Boolean |
+| count | Count of targetvalues | number |
+| minimum | Defines the minimum number of targetvalues that must be selected | number |
+| maximum | Defines the maximum number of targetvalues that must be selected | number |
+| increment | Defines the increments that are permitted for the targeting values | number |
+| default | Defines the default targetvalues(s) that are selected if the Buyer does not specify any TargetValue(s) or the target is not selectable | String (255) or Number |
+
+
+
## Object: ProviderData
The ProviderData object is used for Buyers to detail information that may be used to identify their order in a Seller's system using their own IDs or references. This would be mainly used for manually identifying orders in the event of the automated process needing manual intervention.
From e2a7704a8d537f154d9e49577f928a53d19df645 Mon Sep 17 00:00:00 2001
From: "Knitting.Media" <60264355+knittingmedia@users.noreply.github.com>
Date: Tue, 20 Jun 2023 12:11:20 +0100
Subject: [PATCH 022/105] Update Stats Object
---
OpenDirect.v2.1.final.md | 14 +++++++++++---
1 file changed, 11 insertions(+), 3 deletions(-)
diff --git a/OpenDirect.v2.1.final.md b/OpenDirect.v2.1.final.md
index b1ec167..553605f 100644
--- a/OpenDirect.v2.1.final.md
+++ b/OpenDirect.v2.1.final.md
@@ -540,11 +540,19 @@ The Stats resource contains reporting data about a Line.
|Attribute|Description|Type|
|---|---|---|
|**reportdate**|A system-generated opaque ID that uniquely identifies this resource.|string _datetime_ |
-|**impressions:**| **The number of impressions served to date.The value must be zero if no impressions have been served | integer
-|**clicks**|**The number of clicks to date. The value must be zero if no clicks have occurred.| integer
+|**impressions**| The number of impressions served to date.The value must be zero if no impressions have been served | integer
+|**clicks**|The number of clicks to date. The value must be zero if no clicks have occurred.| integer
|**ctr**|The click through rate to date. The formula to calculate CTR is (clicks / impressions) x 100 | number
|**spend**|The amount spent to date. | number
-
+|**accountid** | The Account the Stats are for | string (36) |
+|**orderid** | The Order the Stats are for | string (36) |
+|**lineid** | The Orderline the Stats are for | string (36) |
+|**reportstarttime** | The date report will start. if left blank, it will revert to the LineID start date | ISO-8601 |
+|**reportendtime** | The date report will end. if left blank, it will revert to the LineID end date | ISO-8601 |
+|**reportfields** | Array fields that are to be included in the Stats report | array of enum (StartTime, EndTime, SpotLength, ShareOfTime, FrameReference, FrameID, CreativeID, BookedPlays, DeliveredPlays, Delivery) |
+|**timegranularity** | The time granularity of the Stats report | enum (All, Week, Day, Hour, Spot) |
+|**reportformat**| requests the rerport output as a Verbose or Non-Verbose data format | enum (Verbose, NonVerbose) |
+|**webhook**| URI of the webhook to respond to | string (1024) |
## Object: EID
From 2ca4717b927a149cb071a9f0592970ae3ca662e5 Mon Sep 17 00:00:00 2001
From: "Knitting.Media" <60264355+knittingmedia@users.noreply.github.com>
Date: Wed, 21 Jun 2023 09:50:24 +0100
Subject: [PATCH 023/105] Updated Assignment object with ProductTargeting
object array
---
OpenDirect.v2.1.final.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/OpenDirect.v2.1.final.md b/OpenDirect.v2.1.final.md
index 553605f..aa7b98d 100644
--- a/OpenDirect.v2.1.final.md
+++ b/OpenDirect.v2.1.final.md
@@ -273,7 +273,7 @@ Notes: The assignment must fail if the following are true.
|**placementid***|The ID of the placement that will display the creative.|string _(36)_ |
|**status**|A value that determines whether the creative serves.
• Pending – The account is yet to be approved; however, the buyer may create a draft order and have the ability to reserve this order at the publishers discretion.
• Approved – The account is approved and can be used for trading.
• Disapproved – The account’s identity could not be verified. The account may not create and book orders.
| enum (Pending, Approved, Disapproved)|
|**ext**|Optional vendor-specific extensions. |ext object|
From 763ab7f11ae6b038ee13787c783008154f8cb858 Mon Sep 17 00:00:00 2001
From: "Knitting.Media" <60264355+knittingmedia@users.noreply.github.com>
Date: Thu, 22 Jun 2023 14:46:43 +0100
Subject: [PATCH 025/105] Account object thirdpartyid field changed to
intermediaryid
---
OpenDirect.v2.1.final.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/OpenDirect.v2.1.final.md b/OpenDirect.v2.1.final.md
index 9b8f554..1424c04 100644
--- a/OpenDirect.v2.1.final.md
+++ b/OpenDirect.v2.1.final.md
@@ -208,7 +208,7 @@ The Account owns the orders and creative.
|**id*** | A system-generated opaque ID that uniquely identifies this resource.| string _(36)_ |
|**advertiserid***|An Id that identifies the organization that is acting as the advertiser.
• Pending – The account is yet to be approved; however, the buyer may create a draft order and have the ability to reserve this order at the publishers discretion.
• Approved – The account is approved and can be used for trading.
• Disapproved – The account’s identity could not be verified. The account may not create and book orders.
| enum (Pending, Approved, Disapproved)|
|**ext**|Optional vendor-specific extensions. |ext object|
From def66bb193d0bb38320e6ca6690968e09d8572cc Mon Sep 17 00:00:00 2001
From: "Knitting.Media" <60264355+knittingmedia@users.noreply.github.com>
Date: Thu, 22 Jun 2023 14:50:30 +0100
Subject: [PATCH 026/105] Added EIDS field to the Organization object
---
OpenDirect.v2.1.final.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/OpenDirect.v2.1.final.md b/OpenDirect.v2.1.final.md
index 1424c04..1758856 100644
--- a/OpenDirect.v2.1.final.md
+++ b/OpenDirect.v2.1.final.md
@@ -431,6 +431,7 @@ A publisher may also create an organization for itself for the purpose of reques
|**phone** |The organization’s phone number. |string _(20)_
|**status*** |A value that indicates the current state of the approval process.
• Exclusive – 100% share of voice.
• Guaranteed – Guaranteed delivery of all booked display and/or impressions
• Non-Guaranteed - Non-Guaranteed delivery of all booked display and/or impressions
| enum (exclusive, guaranteed, non-guaranteed)
|**estdailyavails** |An estimated range of available daily impressions.
| String |
+| **reason** | State the reason if Partially Available or Unavailable from the list
| String |
+| **comment** | Free text for an availability comment | String |
+| **context** | Array of ProductTargeting objects describing the context of any Partially Available or Unavailable status e.g. this could be a frame that is causing a duplication error | Object |
+| **producttargeting** | Array of ProductTargeting objects describing the inventory that is at Available, Partially Available or Unavailable status | Object |
## Object: ProductTargeting
@@ -3372,163 +3392,163 @@ HTTP/1.1 200 OK Content-Type: application/json Content-Length: 5899
{
"avails": [
{
- "Currency": "GBP",
- "ProductId": "456366",
- "Availability": [
+ "currency": "GBP",
+ "productid": "456366",
+ "productavailability": [
{
- "Status": "Available",
- "Reason": "",
- "Comment": "",
- "Context": [],
- "Targeting": [
+ "status": "available",
+ "reason": "",
+ "comment": "",
+ "context": [],
+ "producttargeting": [
[
{
- "Name": "Inventory",
- "Type": "Frames",
- "DataSource": "Space",
- "Target": "frame_id",
- "TargetValues": [
+ "name": "inventory",
+ "type": "frames",
+ "datasource": "SPACE",
+ "target": "frame_id",
+ "targetvalues": [
"1234931339"
]
},
{
- "Name": "Delivery",
- "Type": "Frames",
- "DataSource": "ShareOfDisplay",
- "Target": "ShareOfTime",
- "TargetValues": [
+ "name": "delivery",
+ "type": "frames",
+ "dataSource": "shareofdisplay",
+ "Target": "shareoftime",
+ "targetvalues": [
"20"
]
},
{
- "Name": "Inventory",
- "Type": "Audience",
- "DataSource": "Metrics",
- "Target": "Impacts",
- "TargetValues": [
+ "name": "inventory",
+ "type": "audience",
+ "datasource": "metrics",
+ "target": "impacts",
+ "targetvalues": [
"15000"
]
},
{
- "Name": "Investment",
- "Type": "Frames",
- "DataSource": "GBP",
- "Target": "Fixed",
- "TargetValues": [
+ "name": "investment",
+ "type": "frames",
+ "datasource": "GBP",
+ "target": "fixed",
+ "targetvalues": [
"150"
]
}
],
[
{
- "Name": "Inventory",
- "Type": "Frames",
- "DataSource": "Space",
- "Target": "frame_id",
- "TargetValues": [
+ "name": "inventory",
+ "type": "frames",
+ "datasource": "SPACE",
+ "target": "frame_id",
+ "targetvalues": [
"1235190735"
]
},
{
- "Name": "Delivery",
- "Type": "Frames",
- "DataSource": "ShareOfDisplay",
- "Target": "ShareOfTime",
- "TargetValues": [
+ "name": "delivery",
+ "type": "frames",
+ "dataSource": "shareofdisplay",
+ "Target": "shareoftime",
+ "targetvalues": [
"20"
]
},
{
- "Name": "Inventory",
- "Type": "Audience",
- "DataSource": "Metrics",
- "Target": "Impacts",
- "TargetValues": [
+ "name": "inventory",
+ "type": "audience",
+ "datasource": "metrics",
+ "target": "impacts",
+ "targetvalues": [
"25000"
]
},
{
- "Name": "Investment",
- "Type": "Frames",
- "DataSource": "GBP",
- "Target": "Fixed",
- "TargetValues": [
+ "name": "investment",
+ "type": "frames",
+ "datasource": "GBP",
+ "target": "fixed",
+ "targetvalues": [
"250"
]
}
],
[
{
- "Name": "Inventory",
- "Type": "Frames",
- "DataSource": "Space",
- "Target": "frame_id",
- "TargetValues": [
+ "name": "inventory",
+ "type": "frames",
+ "datasource": "SPACE",
+ "target": "frame_id",
+ "targetvalues": [
"1234931338"
]
},
{
- "Name": "Delivery",
- "Type": "Frames",
- "DataSource": "ShareOfDisplay",
- "Target": "ShareOfTime",
- "TargetValues": [
+ "name": "delivery",
+ "type": "frames",
+ "dataSource": "shareofdisplay",
+ "Target": "shareoftime",
+ "targetvalues": [
"20"
]
},
{
- "Name": "Inventory",
- "Type": "Audience",
- "DataSource": "Metrics",
- "Target": "Impacts",
- "TargetValues": [
+ "name": "inventory",
+ "type": "audience",
+ "datasource": "metrics",
+ "target": "impacts",
+ "targetvalues": [
"10000"
]
},
{
- "Name": "Investment",
- "Type": "Frames",
- "DataSource": "GBP",
- "Target": "Fixed",
- "TargetValues": [
+ "name": "investment",
+ "type": "frames",
+ "datasource": "GBP",
+ "target": "fixed",
+ "targetvalues": [
"100"
]
}
],
[
{
- "Name": "Inventory",
- "Type": "Frames",
- "DataSource": "Space",
- "Target": "frame_id",
- "TargetValues": [
+ "name": "inventory",
+ "type": "frames",
+ "datasource": "SPACE",
+ "target": "frame_id",
+ "targetvalues": [
"1235191547"
]
},
{
- "Name": "Delivery",
- "Type": "Frames",
- "DataSource": "ShareOfDisplay",
- "Target": "ShareOfTime",
- "TargetValues": [
+ "name": "delivery",
+ "type": "frames",
+ "dataSource": "shareofdisplay",
+ "Target": "shareoftime",
+ "targetvalues": [
"20"
]
},
{
- "Name": "Inventory",
- "Type": "Audience",
- "DataSource": "Metrics",
- "Target": "Impacts",
- "TargetValues": [
+ "name": "inventory",
+ "type": "audience",
+ "datasource": "metrics",
+ "target": "impacts",
+ "targetvalues": [
"30000"
]
},
{
- "Name": "Investment",
- "Type": "Frames",
- "DataSource": "GBP",
- "Target": "Fixed",
- "TargetValues": [
+ "name": "investment",
+ "type": "frames",
+ "datasource": "GBP",
+ "target": "fixed",
+ "targetvalues": [
"300"
]
}
@@ -3536,7 +3556,7 @@ HTTP/1.1 200 OK Content-Type: application/json Content-Length: 5899
]
}
],
- "Price": 800
+ "price": 800
}
]
}
From fa540533f40f261e86d632fc96268c8e2cef3617 Mon Sep 17 00:00:00 2001
From: "Knitting.Media" <60264355+knittingmedia@users.noreply.github.com>
Date: Tue, 4 Jul 2023 16:00:50 +0100
Subject: [PATCH 039/105] Update Index to Include new Avails objects
---
OpenDirect.v2.1.final.md | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/OpenDirect.v2.1.final.md b/OpenDirect.v2.1.final.md
index 02d12cd..11748b3 100644
--- a/OpenDirect.v2.1.final.md
+++ b/OpenDirect.v2.1.final.md
@@ -44,6 +44,10 @@ OpenDirect Specification the IAB Tech Lab is licensed under a Creative Commons A
- [Object: Organization](#object_organization)
- [Object: Placement](#object_placement)
- [Object: Product](#object_product)
+ - [Object: ProductsAvailsSearch](#object_productavailssearch)
+ - [Object: Avails](#object_avails)
+ - [Object: ProductAvailability](#object_productavailability)
+ - [Object: ProductTargeting](#object_producttargeting)
- [Object: ProviderData](#object_providerdata)
- [Object: Stats](#object_stats)
- [Object: EID](#object_eid)
From a92633a64d9d9cf412a3c80dd392823b9c8a7b65 Mon Sep 17 00:00:00 2001
From: "Knitting.Media" <60264355+knittingmedia@users.noreply.github.com>
Date: Tue, 4 Jul 2023 16:04:52 +0100
Subject: [PATCH 040/105] Update Avails table fix
---
OpenDirect.v2.1.final.md | 9 ++-------
1 file changed, 2 insertions(+), 7 deletions(-)
diff --git a/OpenDirect.v2.1.final.md b/OpenDirect.v2.1.final.md
index 11748b3..4218427 100644
--- a/OpenDirect.v2.1.final.md
+++ b/OpenDirect.v2.1.final.md
@@ -516,7 +516,7 @@ Defines search criteria used for requesting product availability and pricing wit
| **enddate** | The desired end date for inventory delivery | ISO-8601 |
-## Object: ProductAvails
+## Object: Avails
Defines the response to a request for product availability and pricing information at product Level
@@ -524,12 +524,7 @@ Defines the response to a request for product availability and pricing informati
| ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------- |
| **productid** | ID that identifies the product for which availability and pricing information is provided | String(36) |
| **accountid** | The ID of the account that identifies the buyer, advertiser and any other stakeholders. | String(36) |
-| **availability** | The quantity available for booking for the specified date range. Availability for a given date range may vary.
-In order for products to be returned in a PRODUCT AVAILS SEARCH, product availability must be equal to or less than the value provided in the Quantity property of the PRODUCT AVAILS SEARCH object.
-
-For example, if Quantity is set to 500,000 in PRODUCT AVAILS SEARCH, impression availability for the product must be at least 500,000. However, if only 250,000 impressions are available, the product is not returned.
-
-Publishers may set an artificial limit on the maximum number of available impressions. If the quantity field in PRODUCT AVAILS SEARCH is not provided, all products matching other criteria are returned showing maximum availability. | Integer |
+| **availability** | The quantity available for booking for the specified date range. Availability for a given date range may vary. In order for products to be returned in a PRODUCT AVAILS SEARCH, product availability must be equal to or less than the value provided in the Quantity property of the PRODUCT AVAILS SEARCH object. For example, if Quantity is set to 500,000 in PRODUCT AVAILS SEARCH, impression availability for the product must be at least 500,000. However, if only 250,000 impressions are available, the product is not returned. Publishers may set an artificial limit on the maximum number of available impressions. If the quantity field in PRODUCT AVAILS SEARCH is not provided, all products matching other criteria are returned showing maximum availability. | Integer |
| **productavailability** | An object that groups the inventory availbility into Available, Partially Available and Unavailable arrays of ProductTargeting objects | productavailability Object |
| **currency** | The currency used to specify Price. Currency is set for the PRODUCT resource specified in section 2.7 and uses CURRENCY reference data specified in section 4.6. | String (3) \[ISO-4217\] |
| **pric**e | The product’s price based on OOHbject Targeting | Decimal |
From dc31b6f8c58b6b53234beab0ac68d791a79dd5ef Mon Sep 17 00:00:00 2001
From: "Knitting.Media" <60264355+knittingmedia@users.noreply.github.com>
Date: Tue, 4 Jul 2023 16:07:43 +0100
Subject: [PATCH 041/105] Corrected the pricing field in the avails object
---
OpenDirect.v2.1.final.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/OpenDirect.v2.1.final.md b/OpenDirect.v2.1.final.md
index 4218427..c45e40f 100644
--- a/OpenDirect.v2.1.final.md
+++ b/OpenDirect.v2.1.final.md
@@ -527,7 +527,7 @@ Defines the response to a request for product availability and pricing informati
| **availability** | The quantity available for booking for the specified date range. Availability for a given date range may vary. In order for products to be returned in a PRODUCT AVAILS SEARCH, product availability must be equal to or less than the value provided in the Quantity property of the PRODUCT AVAILS SEARCH object. For example, if Quantity is set to 500,000 in PRODUCT AVAILS SEARCH, impression availability for the product must be at least 500,000. However, if only 250,000 impressions are available, the product is not returned. Publishers may set an artificial limit on the maximum number of available impressions. If the quantity field in PRODUCT AVAILS SEARCH is not provided, all products matching other criteria are returned showing maximum availability. | Integer |
| **productavailability** | An object that groups the inventory availbility into Available, Partially Available and Unavailable arrays of ProductTargeting objects | productavailability Object |
| **currency** | The currency used to specify Price. Currency is set for the PRODUCT resource specified in section 2.7 and uses CURRENCY reference data specified in section 4.6. | String (3) \[ISO-4217\] |
-| **pric**e | The product’s price based on OOHbject Targeting | Decimal |
+| **pric**e | The product’s price | Decimal |
| **startdate** | The requested start date for inventory delivery | ISO-8601 |
| **enddate** | The requested end date for inventory delivery | ISO-8601 |
From 0defe3aa9c9f7540054caebbdd1507015dcb287d Mon Sep 17 00:00:00 2001
From: "Knitting.Media" <60264355+knittingmedia@users.noreply.github.com>
Date: Wed, 5 Jul 2023 12:31:16 +0100
Subject: [PATCH 042/105] Update Stats Object and Examples
---
OpenDirect.v2.1.final.md | 109 ++++++++++++++++++++++++++++++++++-----
1 file changed, 95 insertions(+), 14 deletions(-)
diff --git a/OpenDirect.v2.1.final.md b/OpenDirect.v2.1.final.md
index c45e40f..5b69910 100644
--- a/OpenDirect.v2.1.final.md
+++ b/OpenDirect.v2.1.final.md
@@ -599,15 +599,19 @@ The Stats resource contains reporting data about a Line.
|**clicks**|The number of clicks to date. The value must be zero if no clicks have occurred.| integer
|**ctr**|The click through rate to date. The formula to calculate CTR is (clicks / impressions) x 100 | number
|**spend**|The amount spent to date. | number
-|**accountid** | The Account the Stats are for | string (36) |
-|**orderid** | The Order the Stats are for | string (36) |
-|**lineid** | The Orderline the Stats are for | string (36) |
-|**reportstarttime** | The date report will start. if left blank, it will revert to the LineID start date | ISO-8601 |
-|**reportendtime** | The date report will end. if left blank, it will revert to the LineID end date | ISO-8601 |
-|**reportfields** | Array fields that are to be included in the Stats report | array of enum (StartTime, EndTime, SpotLength, ShareOfTime, FrameReference, FrameID, CreativeID, BookedPlays, DeliveredPlays, Delivery) |
-|**timegranularity** | The time granularity of the Stats report | enum (All, Week, Day, Hour, Spot) |
-|**reportformat**| requests the rerport output as a Verbose or Non-Verbose data format | enum (Verbose, NonVerbose) |
-|**webhook**| URI of the webhook to respond to | string (1024) |
+|**frame_id** | The Publisher Frame ID | String (128) |
+|**player_ref** | The MAC Address or other reference uniquely identifying a digital player or frame | Max length 32 characters |
+|**spot_start_utc** | The UTC start time of the spot. | ISO-8601 |
+|**spot_start_tz** | Time zone offset for the spot start time (e.g. +01:00 for BST; Z or :00:00 can be used for GMT.) | ±hh:mm
Z |
+|**spot_end_utc** | The UTC end time of the spot. | ISO-8601 |
+|**spot_end_tz** | Time zone offset for the spot end time. (e.g. +01:00 for BST; Z or :00:00 can be used for GMT.) | ±hh:mm
Z |
+|**spot_length** | Spot Length in milliseconds. | number |
+|**share_of_time** | Share of time. This must be provided for scrollers, but its presence is not policed by Playout. Media Owners must determine when this must be supplied. | number (decimal) |
+|**creative_id** | Media Owner-defined creative identifier. | String (64) |
+|**creative_name** | Creative title, to assist with reporting. Usually a filename. | String (128) |
+|**third_party_creative_ref** | Creative reference provided by a third-party such as the creative agency. This might be a URL or a GUID, for example. | String (128) |
+|**creative_trigger_event** | The creative trigger event, indicating what prompted the given creative to be used. | String (64) |
+|**media_owner_playout_ref** | Media Owner-defined reference representing this record. For the Media Owner, this should uniquely identify this record across all time. (Note that records supplied by other Media Owners may happen to use the same ID however.) | String (48) |
## Object: EID
@@ -1674,7 +1678,7 @@ Adds an Order or gets a list of orders that the user has access to. The response
An advertiser or agency may add orders to accounts that they own. In addition; an agency may add orders to accounts that they manage on behalf of advertisers.
For advertisers, the list will include only orders that they own. For agencies, the list will include the orders that they own and the orders that belong to accounts that they manage on behalf of advertisers.
-#### Example POST Request
+#### Example POST Request
```json
POST https://
/organizations?$filter | organizations | Organization |
+| /advertiserbrands
/advertiserbrands?$filter | advertiserbrands | AdvertiserBrand |
| /accounts
/accounts?$filter | accounts | Account |
| /accounts/{id}/assignments
/accounts/{id}/assignments?$filter | assignments | Assignment |
| /accounts/{id}/creatives
/accounts/{id}/creatives?$filter | creatives | Creative_Assignment |
From 4b5cd1bf77a03ee4c997f5bc67e38f5a63815333 Mon Sep 17 00:00:00 2001
From: "Knitting.Media" <60264355+knittingmedia@users.noreply.github.com>
Date: Fri, 7 Jul 2023 15:02:28 +0100
Subject: [PATCH 045/105] Added extra images for ProductTargeting explanation
---
images/AppendixB.png | Bin 0 -> 135327 bytes
images/Avails2Orderline.png | Bin 0 -> 254030 bytes
images/Avails2Orderline_old.png | Bin 0 -> 325270 bytes
images/OOHbject_Summary.png | Bin 0 -> 535257 bytes
images/OpenDirectComparison_1_0.png | Bin 0 -> 388594 bytes
images/OpenDirectComparison_1_1_new.png | Bin 0 -> 408099 bytes
images/OpenDirectSummary.png | Bin 0 -> 106942 bytes
images/advertiser_workflow.png | Bin 0 -> 527785 bytes
images/booking_state_ooh.png | Bin 0 -> 244770 bytes
images/change_request.png | Bin 0 -> 653505 bytes
images/change_request_old.png | Bin 0 -> 652651 bytes
images/minimum_resources.png | Bin 0 -> 1417323 bytes
images/name_delivery.png | Bin 0 -> 181804 bytes
images/name_distribution.png | Bin 0 -> 445238 bytes
images/name_inventory.png | Bin 0 -> 548036 bytes
images/name_investment.png | Bin 0 -> 73817 bytes
images/name_prohibitions.png | Bin 0 -> 99868 bytes
images/publisher_workflow_ooh.png | Bin 0 -> 285239 bytes
images/resource_model_ooh.png | Bin 0 -> 581096 bytes
images/time_array.png | Bin 0 -> 195958 bytes
20 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 images/AppendixB.png
create mode 100644 images/Avails2Orderline.png
create mode 100644 images/Avails2Orderline_old.png
create mode 100644 images/OOHbject_Summary.png
create mode 100644 images/OpenDirectComparison_1_0.png
create mode 100644 images/OpenDirectComparison_1_1_new.png
create mode 100644 images/OpenDirectSummary.png
create mode 100644 images/advertiser_workflow.png
create mode 100644 images/booking_state_ooh.png
create mode 100644 images/change_request.png
create mode 100644 images/change_request_old.png
create mode 100644 images/minimum_resources.png
create mode 100644 images/name_delivery.png
create mode 100644 images/name_distribution.png
create mode 100644 images/name_inventory.png
create mode 100644 images/name_investment.png
create mode 100644 images/name_prohibitions.png
create mode 100644 images/publisher_workflow_ooh.png
create mode 100644 images/resource_model_ooh.png
create mode 100644 images/time_array.png
diff --git a/images/AppendixB.png b/images/AppendixB.png
new file mode 100644
index 0000000000000000000000000000000000000000..d3543c66014816806174fbcf144074c732a5cfda
GIT binary patch
literal 135327
zcmXt=Wl$V#uyA+T;2wgzyIXK~hXmK)0fNKg3&9fH-625G;O_43?#|*4AMd^Q`?0e%
zQ&Ur;J>93zGrv@oWl)g_kN^Mxs+_E(IsgC)1^|Er2ypL9lw{?I-v5Bk>N4Vh@-d>r
z_ZdV7SsiBp0Eha&A5c!63JL&-0^}sczJP%z8L;VdQds@_pIJ5zeng)Ah?XXhlo!Ro
zi19>~REPZ_`Q_w;q;1ScNlfen)qJrg3H7G!BKNkd%KdJ{flal3zk8zbt7lVFH+KtP
zf$C-;g_Gf%;N@owN+N_vQY{!5m~T|ftTD-(fKkVz1#3h^WbVhm~xm6VBoVEL&EXcy8sld`a>E$H%_}lgL7qiN{+c;
zk;el{M5ISAw=~OF#)th@zc=3!WRFIXq_#Kb*Y#B&VI#knn}MdA)8+ZMxvxG^guLZ~
zFW1wFyvEkOzp=GS?Pr|s-^x{U0$QM5$g$iua|12#=p;;}-cbK96@~_xey<)NzZ%e~
zn1Jxr2xlz2sdVGrn%8bWsb4(5>ycy|;Z2yIq1w5@>AB=Zoc#D733Ktcpv&E9=bhF5
zwnQdt=QQA#0$C9L)rfwpuojKbQwSH`69oDkTE0H`cIGh`{_m)lU}zqcC}-u+f_%Em
zna=i|;>}u5yr%G}M>Ux3tg2wN#G0wLef()8G4rmKNv _K7en#J>fp6(5teNi(M7tj6mN9NU!7FEpVi%OEB)=96%oj{{gdZsdLyVhkCtuIOz
zr^;+gIv^uvf4|uf%GTSh;XAFtrU}^cuF|rZ0b|{Z0%9OmlFa5uy#jgVrJKv89*Qbm
za=;&XKSe{~wmC*TDiPMxdO6B_!80e4&&?y!Y8B&sACt;SVMJ0p%v#$Uj4as08v-$mjfoDM4L<5E?xF*Q(cu_#6=a!{L5*)y(u
zjoQZ(xdYOHZ+^>gzcXz_aKNQR?L@joZF<0CaE3ZGPv1}QJBo##;d*L>)bXSH+OX?R
zlDo~wYo-eZG$r^;g0rz&pN3T%s+f|B(izho!?Tf|Ceu