From 26c5908ec8dd91adedee4fb26a4b3001bd9ff96b Mon Sep 17 00:00:00 2001 From: arnaud Date: Wed, 23 Oct 2024 17:07:06 +0200 Subject: [PATCH] Add metric object to impression From the docs: This object is associated with an impression as an array of metrics. These metrics can offer insight into the impression to assist with decisioning such as average recent viewability, click-through rate, etc. Each metric is identified by its type, reports the value of the metric, and optionally identifies the source or vendor measuring the value. We need it for adx, but i guess we can add it to all SSP since it's standart openrtb --- impression.go | 1 + metric.go | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 metric.go diff --git a/impression.go b/impression.go index 7694f7e..93e6be8 100644 --- a/impression.go +++ b/impression.go @@ -36,6 +36,7 @@ type Impression struct { Exp int `json:"exp,omitempty"` // Advisory as to the number of seconds that may elapse between the auction and the actual impression. IFrameBusters []string `json:"iframebuster,omitempty"` // Array of names for supportediframe busters. Rewarded int `json:"rwdd,omitempty"` // Impression is rewarded, Default: 0 ("1": yes, "0": no) + Metric []Metric `json:"metric,omitempty"` Ext json.RawMessage `json:"ext,omitempty"` } diff --git a/metric.go b/metric.go new file mode 100644 index 0000000..f6171c8 --- /dev/null +++ b/metric.go @@ -0,0 +1,48 @@ +package openrtb + +import "encoding/json" + +// 3.2.5 Object: Metric +// +// This object is associated with an impression as an array of metrics. +// These metrics can offer insight into the impression to assist with decisioning such as average recent viewability, click-through rate, etc. +// Each metric is identified by its type, reports the value of the metric, and optionally identifies the source or vendor measuring the value. +type Metric struct { + + // Attribute: + // type + // Type: + // string; required + // Description: + // Type of metric being presented using exchange curated string + // names which should be published to bidders a priori. + Type string `json:"type"` + + // Attribute: + // value + // Type: + // float; required + // Description: + // Number representing the value of the metric. Probabilities + // must be in the range 0.0 – 1.0. + Value float64 `json:"value,omitempty"` + + // Attribute: + // vendor + // Type: + // string; recommended + // Description: + // Source of the value using exchange curated string names + // which should be published to bidders a priori. If the exchange + // itself is the source versus a third party, “EXCHANGE” is + // recommended. + Vendor string `json:"vendor,omitempty"` + + // Attribute: + // ext + // Type: + // object + // Description: + // Placeholder for exchange-specific extensions to OpenRTB. + Ext json.RawMessage `json:"ext,omitempty"` +}