Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Topics in OpenRTB document: Upgrade suggestions at bottom of .md file #67

Merged
merged 4 commits into from
Jul 15, 2022
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
108 changes: 37 additions & 71 deletions proposals/topics-rtb/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,103 +9,69 @@
| Attributes | Type | Description |
| ------------ | ----------- | ----------- |
| Taxonomy Version | String | Represents the version of the topic’s categories. |
| Classifier Version | String | Represents the version of the classifier used to categorize sites. |
| Model Version | String | Represents the version of the classifier model used to categorize sites. |
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

from live api feedback documented here prebid/Prebid.js#8630 (comment)

| Topic | Integer | Represents the Topics ID from the taxonomy identified by the Taxonomy Version. |

OpenRTB `BidRequest.user.data` can be used to represent Topics.
- `data.id` will have a hardcoded string “`chrome_topics_api`” representing Topics API as the data source
- `data.name` will not be filled.
- `data.name` will have the domain that called the Topics API as the data source
- `data.id` will not be filled.
- `data.ext` will contain an object with the following fields:

| Attributes | Type | Description |
| ------------ | ----------- | ----------- |
| `segtax` | Integer | A taxonomy enumerated in the [segtax extension](https://github.com/InteractiveAdvertisingBureau/openrtb/blob/master/extensions/community_extensions/segtax.md) |
| `segclass` | String | Classifier version, as provided by the browser |

OpenRTB `segtax` 600 indicates `taxonomy_version` 1. New Topics taxonomy versions will receive new IDs in the ["Vendor specific Taxonomies" list](https://github.com/InteractiveAdvertisingBureau/openrtb/blob/master/extensions/community_extensions/segtax.md#approved-vendor-specific-taxonomies) based on the existing process, optionally from a pre-allocated block.

The `data.segment` array will contain a list of Topics available in the browser to an advertising exchange. Each element in the `segment` array can hold a single topic. The order of topics in the segment array is not specified. The array should not contain duplicate topics.
- `segment.id` will be the topic ID.
- `segment.name` will **not** be set
- `segment.value` will **not** be set
- `segment.ext` will contain an object with the following fields:

| Attributes | Type | Description |
| ------------ | ----------- | ----------- |
| `taxonomy_version` | String | Taxonomy version |
| `classifier_version` | String | Classifier version |


For example, when Chrome returns the following:
- Topic 1:
- Taxonomy Version: `“tax_v1”`
- Classifier Version: `“class_v1”`
- Model Version: `“2206021246”`
- Topic: `“111”`
- Topic 2:
- Taxonomy Version: `“tax_v1”`
- Classifier Version: `“class_v1”`
- Model Version: `“2206021246”`
- Topic: `“222”`
- Topic 3:
- Taxonomy Version: `“tax_v1”`
- Classifier Version: `“class_v1”`
- Model Version: `“2206021247”`
- Topic: `“333”`

The OpenRTB representation can look like the following:
Where in the above return, there are two classifier versions and one taxonomy version. The OpenRTB representation can look like the following:

```
{
...,
"user": {
"data": [
{
"id": "chrome_topics_api",
"segment": [
{
"id": "111",
"ext": {
"taxonomy_version": "tax_v1",
"classifier_version": "class_v1"
}
},
{
"id": "222",
"ext": {
"taxonomy_version": "tax_v1",
"classifier_version": "class_v1"
}
},
{
"id": "333",
"ext": {
"taxonomy_version": "tax_v1",
"classifier_version": "class_v1"
}
}
]
}
]
}
}

```

## Open Questions

- Perhaps the specification should follow the [Segment Taxonomies](https://github.com/InteractiveAdvertisingBureau/openrtb/blob/master/extensions/community_extensions/segtax.md) proposal precisely, as some parties have already begun transmitting this way. Please note the origin trial period taxonomy has already been assigned segtax 600 and additional segtax id's (it is an enum, not a string) are simple to reserve in blocks from the IAB. In this case, `user.data.id` doesn't typically have meaning, `user.data.name` is the entity reported to have chosen audience membership in the segment. In the case of this segment taxonomy, that would be the entity which called the Topics API. New Topics taxonomy versions would receive new IDs in the ["Vendor specific Taxonomies" list](https://github.com/InteractiveAdvertisingBureau/openrtb/blob/master/extensions/community_extensions/segtax.md#approved-vendor-specific-taxonomies) based on the existing process, optionally from a pre-allocated block.


```
{
...,
"user": {
"data": [
{
"name": "apicaller.com", // the entity which called the Topics API
"data":
[{
"name": "apicaller.com",
"ext": {
"segtax": 600,
"segclass": "2206021246"
},
segment: [
{ id: "111" },
patmmccann marked this conversation as resolved.
Show resolved Hide resolved
{ id: "222" }
]
},
{
"name": "apicaller.com",
"ext": {
"segtax": 600
"segclass": "v1" // this is not considered in the Segment Taxonomies / Seller Defined Audiences spec, but seems the appropriate place for it
}
"segment": [
{
"id": "111"
}
]
}
]
}
"segtax": 600,
"segclass": "2206021247"
},
segment: [
{ id: "333" }
]
}]
}
}
```