diff --git a/extensions/2.x_official_extensions/opja.md b/extensions/2.x_official_extensions/opja.md new file mode 100644 index 00000000..0c6a07e8 --- /dev/null +++ b/extensions/2.x_official_extensions/opja.md @@ -0,0 +1,49 @@ +### Open Private Join & Activation (OPJA) + +**Goal**: + +The goal is to support a protocol for sending [OPJA](https://iabtechlab.com/blog/wp-content/uploads/2023/06/Open-Private-Join-Activation_Version_1.011.pdf) encrypted matching labels using OpenRTB 2.x. + +**Requested Changes**: + +Addition to **User Extension** Object + +### Details + +Open Private Join & Activation (OPJA) is a protocol for enabling two parties to privately generate activation matches. +OPJA uses advanced cryptographic techniques to keep private data securely encrypted throughout all steps of the bid process. +Note, it is assumed that parties will collaborate with the appropriate regulatory agencies and vendor(s) to ensure compliance. + +A new field under `BidRequest->user->ext` is specified which is named `ojpa`. +It is an array of objects describing match jobs, each could be generated by one or more matching vendors. + +Below we describe each field within each match job object: + +| Key | Type | Description | +| ------------------- | ---------------- | ------------------------------------------- | +| name | String | A hostname uniquely identifying the matching system used | +| matches | Array of Objects | An array of objects containing encrypted matching labels | +| matches[].id | String | The alphanumeric match transaction ID which is unique to each match job row (maximum 16 characters) | +| matches[].el | String | The base64 encoded encrypted label which can be used to determine a match (maximum 36 characters with padding) | + +Example Request + +``` +{ + "user": { + "ext": { + "opja": [ + { + "name": "matching-system-operator.com", + "matches": [ + { + "id": "0ujzPyRiIA", + "el": "YmFjb25zdHJpcHM=" + } + ] + } + ] + } + } +} +```