---
title: "Wrapper for the openrtb2 endpoint that initializes the task local log where we store request"
method: POST
path: "/openrtb2"
tags: ["OpenRTB 2.x"]
---

# Wrapper for the openrtb2 endpoint that initializes the task local log where we store request

`POST /openrtb2`

## Request

- Base URL: `https://e.relay.bid/x/v1`
- URL: `https://e.relay.bid/x/v1/openrtb2`
- Auth: API key in header `x-relay-secret`

Wrapper for the openrtb2 endpoint that initializes the task local log where we store request
and response information.
This version of the endpoint is meant for _unauthenticated_ use, e.g. in a web browser.
Keeping public/authenticated URLs separate should let us better deal with invalid traffic
and maintaining QoS.
Note: we aren't yet doing authentication on the other endpoint.

## Request body

- BidRequest: The top-level bid request object contains a globally unique bid request or auction ID. This id attribute is required as is at least one impression object. Other attributes in this top-level object establish rules and restrictions that apply to all impressions being offered.
  - `allimps` integer, nullable: Flag to indicate if Exchange can verify that the impressions offered represent all of the impressions available in context (e.g., all on the web page, all video spots such as pre/mid/post roll) to support road-blocking. 0 = no or unknown, 1 = yes, the impressions offered represent all that are available.
  - `app` App: This object should be included if the ad supported content is a non-browser application (typically in mobile) as opposed to a website. A bid request must not contain both an App and a Site object. At a minimum, it is useful to provide an App ID or bundle, but this is not strictly required.
    - `bundle` string, nullable: A platform-specific application identifier intended to be unique to the app and independent of the exchange. On Android, this should be a bundle or package name (e.g., com.foo.mygame). On iOS, it is typically a numeric ID.
    - `cat` string[], nullable: Array of IAB content categories of the app.
    - `content` Content: This object describes the content in which the impression will appear, which may be syndicated or nonsyndicated content. This object may be useful when syndicated content contains impressions and does not necessarily match the publisher’s general content. The exchange might or might not have knowledge of the page where the content is running, as a result of the syndication method. For example might be a video impression embedded in an iframe on an unknown web property or device.
      - `album` string, nullable
      - `artist` string, nullable
      - `cat` string[], nullable: Array of IAB content categories that describe the content producer.
      - `contentrating` string, nullable
      - `context` integer, nullable
      - `data` Data[], nullable: Additional content data.
        - `ext` unknown
        - `id` string, nullable
        - `name` string, nullable
        - `segment` Segment[], nullable
          - `ext` unknown
          - `id` string, nullable
          - `name` string, nullable
          - `value` string, nullable
      - `embeddable` integer, nullable
      - `episode` integer, nullable
      - `ext` unknown
      - `genre` string, nullable: Genre that best describes the content (e.g., rock, pop, etc).
      - `id` string, nullable
      - `isrc` string, nullable
      - `keywords` string, nullable
      - `language` string, nullable: Content language using ISO-639-1-alpha-2.
      - `livestream` integer, nullable
      - `prodq` integer, nullable
      - `producer` Producer: This object defines the producer of the content in which the ad will be shown. This is particularly useful when the content is syndicated and may be distributed through different publishers and thus when the producer and publisher are not necessarily the same entity.
        - `cat` string[], nullable
        - `domain` string, nullable
        - `ext` unknown
        - `id` string, nullable
        - `name` string, nullable
      - `qagmediarating` integer, nullable
      - `season` string, nullable
      - `series` string, nullable: Content series
      - `sourcerelationship` integer, nullable
      - `title` string, nullable: Content title
      - `url` string, nullable
      - `userrating` string, nullable
    - `domain` string, nullable: Domain of the app (e.g., “mygame.foo.com”).
    - `ext` unknown
    - `id` string, nullable: Exchange-specific app ID.
    - `keywords` string, nullable: Comma separated list of keywords about the app.
    - `name` string, nullable: App name (may be aliased at the publisher’s request).
    - `pagecat` string[], nullable: Array of IAB content categories that describe the current page or view of the app.
    - `paid` integer, nullable: 0 = app is free, 1 = the app is a paid version.
    - `privacypolicy` integer, nullable: Indicates if the site has a privacy policy, where 0 = no, 1 = yes.
    - `publisher` Publisher: This object describes the publisher of the media in which the ad will be displayed. The publisher is typically the seller in an OpenRTB transaction.
      - `cat` string[], nullable: Array of IAB content categories that describe the publisher.
      - `domain` string, nullable: Highest level domain of the publisher (e.g., “publisher.com”).
      - `ext` unknown
      - `id` union: Index asked us if we could "de-string" the `Publisher.id` while troubleshooting fill for Blockthrough. This deviates from the spec and even Index's previous implementations with other customers. For the serde macro see: https://serde.rs/enum-representations.html#untagged
        - string
        - integer
      - `name` string, nullable: Publisher name (may be aliased at the publisher’s request).
    - `sectioncat` string[], nullable: Array of IAB content categories that describe the current section of the app.
    - `storeurl` string, nullable: App store URL for an installed app; for IQG 2.1 compliance
    - `ver` string, nullable: Application version.
  - `at` integer, nullable: Auction type, where 1 = First Price, 2 = Second Price Plus. Exchange-specific auction types can be defined using values greater than 500.
  - `badv` string[], nullable: Block list of advertisers by their domains (e.g., “ford.com”).
  - `bapp` string[], nullable: Block list of applications by their platform-specific exchangeindependent application identifiers. On Android, these should be bundle or package names (e.g., com.foo.mygame). On iOS, these are numeric IDs.
  - `bcat` string[], nullable: Blocked advertiser categories using the IAB content categories.
  - `bseat` string[], nullable: Block list of buyer seats (e.g., advertisers, agencies) restricted from bidding on this impression. IDs of seats and knowledge of the buyer’s customers to which they refer must be coordinated between bidders and the exchange a priori. At most, only one of wseat and bseat should be used in the same request. Omission of both implies no seat restrictions.
  - `cur` string[], nullable: Array of allowed currencies for bids on this bid request using ISO-4217 alpha codes. Recommended only if the exchange accepts multiple currencies.
  - `device` Device: This object provides information pertaining to the device through which the user is interacting. Device information includes its hardware, platform, location, and carrier data. The device can refer to a mobile handset, a desktop computer, set top box, or other digital device.
    - `carrier` string, nullable
    - `connectiontype` integer, nullable
    - `devicetype` integer, nullable
    - `didmd5` string, nullable
    - `didsha1` string, nullable
    - `dnt` integer, nullable
    - `dpidmd5` string, nullable
    - `dpidsha1` string, nullable
    - `ext` unknown
    - `flashver` string, nullable
    - `geo` Geo: This object encapsulates various methods for specifying a geographic location. When subordinate to a Device object, it indicates the location of the device which can also be interpreted as the user’s current location. When subordinate to a User object, it indicates the location of the user’s home base (i.e., not necessarily their current location). The lat/lon attributes should only be passed if they conform to the accuracy depicted in the type attribute. For example, the centroid of a geographic region such as postal code should not be passed.
      - `accuracy` integer, nullable: Estimated location accuracy in meters; recommended when lat/lon are specified and derived from a device’s location services (i.e., type = 1). Note that this is the accuracy as reported from the device. Consult OS specific documentation (e.g., Android, iOS) for exact interpretation.
      - `city` string, nullable: City using United Nations Code for Trade & Transport Locations.
      - `country` string, nullable: Country code using ISO-3166-1-alpha-3.
      - `ext` unknown
      - `ipservice` integer, nullable: Service or provider used to determine geolocation from IP address if applicable (i.e., type = 2).
      - `lastfix` integer, nullable: Number of seconds since this geolocation fix was established. Note that devices may cache location data across multiple fetches. Ideally, this value should be from the time the actual fix was taken.
      - `lat` number, double, nullable: Latitude from -90.0 to +90.0, where negative is south.
      - `lon` number, double, nullable: Longitude from -180.0 to +180.0, where negative is west.
      - `metro` string, nullable: Google metro code; similar to but not exactly Nielsen DMAs.
      - `region` string, nullable: Region code using ISO-3166-2; 2-letter state code if USA.
      - `regionfips104` string, nullable: Region of a country using FIPS 10-4 notation. While OpenRTB supports this attribute, it has been withdrawn by NIST in 2008.
      - `type` integer, nullable: Source of location data; recommended when passing lat/lon.
      - `utcoffset` integer, nullable: Local time as the number +/- of minutes from UTC.
      - `zip` string, nullable: Zip or postal code.
    - `geofetch` integer, nullable
    - `h` integer, nullable
    - `hwv` string, nullable
    - `ifa` string, nullable
    - `ip` string, nullable
    - `ipv6` string, nullable
    - `js` integer, nullable
    - `language` string, nullable
    - `lmt` integer, nullable
    - `macmd5` string, nullable
    - `macsha1` string, nullable
    - `make` string, nullable
    - `mccmnc` string, nullable
    - `model` string, nullable
    - `os` string, nullable
    - `osv` string, nullable
    - `ppi` integer, nullable
    - `pxratio` number, double, nullable
    - `ua` string, nullable
    - `w` integer, nullable
  - `ext` BidRequestExt
    - `a0x` A0xBidRequestExt: A0x specific BidRequest level extensions
      - `info` unknown
  - `id` string, required: Unique ID of the bid request, provided by the exchange.
  - `imp` Imp[], required: Array of Imp objects representing the impressions offered.
    - `audio` Audio
      - `api` integer[], nullable
      - `battr` integer[], nullable
      - `companionad` Banner[], nullable
        - `api` integer[], nullable: List of supported API frameworks for this impression. If an API is not explicitly listed, it is assumed not to be supported.
        - `battr` CreativeAttribute[], nullable: Blocked creative attributes.
        - `btype` BannerAdType[], nullable: Blocked banner ad types.
        - `expdir` ExpandableDirection[], nullable: Directions in which the banner may expand.
        - `ext` unknown
        - `format` Format[], nullable: Array of format objects representing the banner sizes permitted. If none are specified, then use of the h and w attributes is highly recommended.
          - `ext` unknown
          - `h` integer, nullable
          - `hratio` integer, nullable
          - `w` integer, nullable
          - `wmin` integer, nullable
          - `wratio` integer, nullable
        - `h` integer, nullable: Exact height in device independent pixels (DIPS); recommended if no format objects are specified.
        - `id` string, nullable: Unique identifier for this banner object. Recommended when Banner objects are used with a Video object to represent an array of companion ads. Values usually start at 1 and increase with each object; should be unique within an impression.
        - `mimes` string[], nullable: Content MIME types supported. Popular MIME types may include “application/x-shockwave-flash”, “image/jpg”, and “image/gif”.
        - `pos` 'Unknown' | 'AboveTheFold' | 'ScreenDependent' | 'BelowTheFold' | 'Header' | 'Footer' | 'Sidebar' | 'FullScreen'
        - `topframe` integer, nullable: Indicates if the banner is in the top frame as opposed to an iframe, where 0 = no, 1 = yes.
        - `vcm` integer, nullable: Relevant only for Banner objects used with a Video object in an array of companion ads. Indicates the companion banner rendering mode relative to the associated video, where 0 = concurrent, 1 = end-card.
        - `w` integer, nullable: Exact width in device independent pixels (DIPS); recommended if no format objects are specified.
      - `companiontype` integer[], nullable
      - `delivery` integer[], nullable
      - `ext` unknown
      - `feed` integer, nullable
      - `maxbitrate` integer, nullable
      - `maxduration` integer, nullable
      - `maxextended` integer, nullable
      - `maxseq` integer, nullable
      - `mimes` string[], required
      - `minbitrate` integer, nullable
      - `minduration` integer, nullable
      - `nvol` integer, nullable
      - `protocols` integer[], nullable
      - `sequence` integer, nullable
      - `startdelay` integer, nullable
      - `stitched` integer, nullable
    - `banner` Banner: This object represents the most general type of impression. Although the term “banner” may have very specific meaning in other contexts, here it can be many things including a simple static image, an expandable ad unit, or even in-banner video (refer to the Video object in Section 3.2.7 for the more generalized and full featured video ad units). An array of Banner objects can also appear within the Video to describe optional companion ads defined in the VAST specification.
      - `api` integer[], nullable: List of supported API frameworks for this impression. If an API is not explicitly listed, it is assumed not to be supported.
      - `battr` CreativeAttribute[], nullable: Blocked creative attributes.
      - `btype` BannerAdType[], nullable: Blocked banner ad types.
      - `expdir` ExpandableDirection[], nullable: Directions in which the banner may expand.
      - `ext` unknown
      - `format` Format[], nullable: Array of format objects representing the banner sizes permitted. If none are specified, then use of the h and w attributes is highly recommended.
        - `ext` unknown
        - `h` integer, nullable
        - `hratio` integer, nullable
        - `w` integer, nullable
        - `wmin` integer, nullable
        - `wratio` integer, nullable
      - `h` integer, nullable: Exact height in device independent pixels (DIPS); recommended if no format objects are specified.
      - `id` string, nullable: Unique identifier for this banner object. Recommended when Banner objects are used with a Video object to represent an array of companion ads. Values usually start at 1 and increase with each object; should be unique within an impression.
      - `mimes` string[], nullable: Content MIME types supported. Popular MIME types may include “application/x-shockwave-flash”, “image/jpg”, and “image/gif”.
      - `pos` 'Unknown' | 'AboveTheFold' | 'ScreenDependent' | 'BelowTheFold' | 'Header' | 'Footer' | 'Sidebar' | 'FullScreen'
      - `topframe` integer, nullable: Indicates if the banner is in the top frame as opposed to an iframe, where 0 = no, 1 = yes.
      - `vcm` integer, nullable: Relevant only for Banner objects used with a Video object in an array of companion ads. Indicates the companion banner rendering mode relative to the associated video, where 0 = concurrent, 1 = end-card.
      - `w` integer, nullable: Exact width in device independent pixels (DIPS); recommended if no format objects are specified.
    - `bidfloor` number, double, nullable
    - `bidfloorcur` string, nullable
    - `clickbrowser` integer, nullable
    - `displaymanager` string, nullable
    - `displaymanagerver` string, nullable
    - `exp` integer, nullable
    - `ext` ImpExt
      - `a0x` A0xImpExt: A0x specific extensions found in the Imp object.
        - `bidders` object, nullable
        - `meta` unknown
    - `id` string, required
    - `iframebuster` string[], nullable
    - `instl` integer, nullable
    - `metric` Metric[], nullable
      - `ext` unknown
      - `type` string, required: Type of metric being presented using exchange curated string names which should be published to bidders a priori.
      - `value` number, double, required: Number representing the value of the metric. Probabilities must be in the range 0.0 – 1.0.
      - `vendor` string, nullable: 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.
    - `native` Native
      - `api` integer[], nullable
      - `battr` integer[], nullable
      - `ext` unknown
      - `request` string, required
      - `ver` string, nullable
    - `pmp` Pmp: This object is the private marketplace container for direct deals between buyers and sellers that man pertain to this impression. The actual deals are represented as a collection of Deal objects.
      - `deals` Deal[], nullable: Array of Deal objects that convey the specific deals applicable to this impression.
        - `at` integer, nullable
        - `bidfloor` number, double, nullable
        - `bidfloorcur` string, nullable
        - `ext` unknown
        - `id` string, required
        - `wadomain` string[], nullable
        - `wseat` string[], nullable
      - `ext` unknown
      - `private_auction` integer, nullable: Indicator of auction eligibility to seats named in the Direct Deals object, where 0 = all bids are accepted, 1 = bids are restricted to the deals specified and the terms thereof.
    - `qty` Qty: A means of passing a multiplier in the bid request, representing the total quantity of impressions for adverts that display to more than one person. A programmatic impression is often referred to as a ‘spot’ in digital out-of-home and CTV, with an impression being a unique member of the audience viewing it. Therefore, a standard means of passing a multiplier in the bid request, representing the total quantity of impressions, is required. This object includes the impression multiplier, and describes the source of the multiplier value.
      - `ext` unknown
      - `multiplier` number, double, required: The quantity of billable events which will be deemed to have occurred if this item is purchased. For example, a DOOH opportunity may be considered to be 14.2 impressions. Equivalent to qtyflt in OpenRTB 3.0.
      - `sourcetype` integer, nullable: The source type of the quantity measurement, ie. publisher. Refer to the list https://github.com/InteractiveAdvertisingBureau/AdCOM/blob/master/AdCOM%20v1.0%20FINAL.md#list-multiplier-measurement-source-types-
      - `vendor` string, nullable: The top level business domain name of the measurement vendor providing the quantity measurement.
    - `secure` integer, nullable
    - `tagid` string, nullable
    - `video` Video
      - `api` integer[], nullable
      - `battr` integer[], nullable
      - `boxingallowed` integer, nullable
      - `companionad` Banner[], nullable
        - `api` integer[], nullable: List of supported API frameworks for this impression. If an API is not explicitly listed, it is assumed not to be supported.
        - `battr` CreativeAttribute[], nullable: Blocked creative attributes.
        - `btype` BannerAdType[], nullable: Blocked banner ad types.
        - `expdir` ExpandableDirection[], nullable: Directions in which the banner may expand.
        - `ext` unknown
        - `format` Format[], nullable: Array of format objects representing the banner sizes permitted. If none are specified, then use of the h and w attributes is highly recommended.
          - `ext` unknown
          - `h` integer, nullable
          - `hratio` integer, nullable
          - `w` integer, nullable
          - `wmin` integer, nullable
          - `wratio` integer, nullable
        - `h` integer, nullable: Exact height in device independent pixels (DIPS); recommended if no format objects are specified.
        - `id` string, nullable: Unique identifier for this banner object. Recommended when Banner objects are used with a Video object to represent an array of companion ads. Values usually start at 1 and increase with each object; should be unique within an impression.
        - `mimes` string[], nullable: Content MIME types supported. Popular MIME types may include “application/x-shockwave-flash”, “image/jpg”, and “image/gif”.
        - `pos` 'Unknown' | 'AboveTheFold' | 'ScreenDependent' | 'BelowTheFold' | 'Header' | 'Footer' | 'Sidebar' | 'FullScreen'
        - `topframe` integer, nullable: Indicates if the banner is in the top frame as opposed to an iframe, where 0 = no, 1 = yes.
        - `vcm` integer, nullable: Relevant only for Banner objects used with a Video object in an array of companion ads. Indicates the companion banner rendering mode relative to the associated video, where 0 = concurrent, 1 = end-card.
        - `w` integer, nullable: Exact width in device independent pixels (DIPS); recommended if no format objects are specified.
      - `companiontype` integer[], nullable
      - `delivery` integer[], nullable
      - `ext` unknown
      - `h` integer, nullable
      - `linearity` integer, nullable
      - `maxbitrate` integer, nullable
      - `maxduration` integer, nullable
      - `maxextended` integer, nullable
      - `mimes` string[], required
      - `minbitrate` integer, nullable
      - `minduration` integer, nullable
      - `placement` integer, nullable
      - `playbackend` integer, nullable
      - `playbackmethod` integer[], nullable
      - `pos` integer, nullable
      - `protocols` integer[], nullable
      - `sequence` integer, nullable
      - `skip` integer, nullable
      - `skipafter` integer, nullable
      - `skipmin` integer, nullable
      - `startdelay` integer, nullable
      - `w` integer, nullable
  - `regs` Regs
    - `coppa` integer, nullable: Flag indicating if this request is subject to the COPPA regulations established by the USA FTC, where 0 = no, 1 = yes.
    - `ext` RegsExt, nullable
      - `gdpr` integer, nullable: Is this request subject to GDPR compliance? 0 = No, 1 = Yes
      - `us_privacy` string, nullable: US Privacy String (CCPA)
  - `site` Site: This object should be included if the ad supported content is a website as opposed to a non-browser application. A bid request must not contain both a Site and an App object. At a minimum, it is useful to provide a site ID or page URL, but this is not strictly required.
    - `cat` string[], nullable: Array of IAB content categories of the site.
    - `content` Content: This object describes the content in which the impression will appear, which may be syndicated or nonsyndicated content. This object may be useful when syndicated content contains impressions and does not necessarily match the publisher’s general content. The exchange might or might not have knowledge of the page where the content is running, as a result of the syndication method. For example might be a video impression embedded in an iframe on an unknown web property or device.
      - `album` string, nullable
      - `artist` string, nullable
      - `cat` string[], nullable: Array of IAB content categories that describe the content producer.
      - `contentrating` string, nullable
      - `context` integer, nullable
      - `data` Data[], nullable: Additional content data.
        - `ext` unknown
        - `id` string, nullable
        - `name` string, nullable
        - `segment` Segment[], nullable
          - `ext` unknown
          - `id` string, nullable
          - `name` string, nullable
          - `value` string, nullable
      - `embeddable` integer, nullable
      - `episode` integer, nullable
      - `ext` unknown
      - `genre` string, nullable: Genre that best describes the content (e.g., rock, pop, etc).
      - `id` string, nullable
      - `isrc` string, nullable
      - `keywords` string, nullable
      - `language` string, nullable: Content language using ISO-639-1-alpha-2.
      - `livestream` integer, nullable
      - `prodq` integer, nullable
      - `producer` Producer: This object defines the producer of the content in which the ad will be shown. This is particularly useful when the content is syndicated and may be distributed through different publishers and thus when the producer and publisher are not necessarily the same entity.
        - `cat` string[], nullable
        - `domain` string, nullable
        - `ext` unknown
        - `id` string, nullable
        - `name` string, nullable
      - `qagmediarating` integer, nullable
      - `season` string, nullable
      - `series` string, nullable: Content series
      - `sourcerelationship` integer, nullable
      - `title` string, nullable: Content title
      - `url` string, nullable
      - `userrating` string, nullable
    - `domain` string, nullable: Domain of the site (e.g., “mysite.foo.com”).
    - `ext` unknown
    - `id` string, nullable: Exchange-specific site ID.
    - `keywords` string, nullable: Comma separated list of keywords about the site.
    - `mobile` integer, nullable: Indicates if the site has been programmed to optimize layout when viewed on mobile devices, where 0 = no, 1 = yes.
    - `name` string, nullable: Site name (may be aliased at the publisher’s request).
    - `page` string, nullable: URL of the page where the impression will be shown.
    - `pagecat` string[], nullable: Array of IAB content categories that describe the current page or view of the site.
    - `privacypolicy` integer, nullable: Indicates if the site has a privacy policy, where 0 = no, 1 = yes.
    - `publisher` Publisher: This object describes the publisher of the media in which the ad will be displayed. The publisher is typically the seller in an OpenRTB transaction.
      - `cat` string[], nullable: Array of IAB content categories that describe the publisher.
      - `domain` string, nullable: Highest level domain of the publisher (e.g., “publisher.com”).
      - `ext` unknown
      - `id` union: Index asked us if we could "de-string" the `Publisher.id` while troubleshooting fill for Blockthrough. This deviates from the spec and even Index's previous implementations with other customers. For the serde macro see: https://serde.rs/enum-representations.html#untagged
        - string
        - integer
      - `name` string, nullable: Publisher name (may be aliased at the publisher’s request).
    - `ref` string, nullable: Referrer URL that caused navigation to the current page.
    - `search` string, nullable: Search string that caused navigation to the current page.
    - `sectioncat` string[], nullable: Array of IAB content categories that describe the current section of the site.
  - `source` Source
    - `ext` SourceExt
      - `schain` SupplyChain
        - `complete` integer, required: Flag indicating whether the chain contains all nodes involved in the transaction leading back to the owner of the site, app or other medium of the inventory, where 0 = no, 1 = yes.
        - `ext` unknown
        - `nodes` SupplyChainNode[], required: Array of SupplyChainNode objects in the order of the chain. In a complete supply chain, the first node represents the initial advertising system and seller ID involved in the transaction, i.e. the owner of the site, app, or other medium. In an incomplete supply chain, it represents the first known node. The last node represents the entity sending this bid request.
          - `asi` string, required: The canonical domain name of the SSP, Exchange, Header Wrapper, etc system that bidders connect to. This may be the operational domain of the system, if that is different than the parent corporate domain, to facilitate WHOIS and reverse IP lookups to establish clear ownership of the delegate system. This should be the same value as used to identify sellers in an ads.txt file if one exists.
          - `domain` string, nullable: The business domain name of the entity represented by this node. This value is optional and should NOT be included if it exists in the advertising system’s sellers.json file.
          - `ext` unknown
          - `hp` integer, required: Indicates whether this node will be involved in the flow of payment for the inventory. When set to 1, the advertising system in the asi field pays the seller in the sid field, who is responsible for paying the previous node in the chain. When set to 0, this node is not involved in the flow of payment for the inventory. For version 1.0 of SupplyChain, this property should always be 1. It is explicitly required to be included as it is expected that future versions of the specification will introduce non-payment handling nodes. Implementers should ensure that they support this field and propagate it onwards when constructing SupplyChain objects in bid requests sent to a downstream advertising system.
          - `name` string, nullable: The name of the company (the legal entity) that is paid for inventory transacted under the given seller_id. This value is optional and should NOT be included if it exists in the advertising system’s sellers.json file.
          - `rid` string, nullable: The OpenRTB RequestId of the request as issued by this seller.
          - `sid` string, required: The identifier associated with the seller or reseller account within the advertising system. This must contain the same value used in transactions (i.e. OpenRTB bid requests) in the field specified by the SSP/exchange. Typically, in OpenRTB, this is publisher.id. For OpenDirect it is typically the publisher’s organization ID.Should be limited to 64 characters in length.
        - `ver` string, required: Version of the supply chain specification in use, in the format of “major.minor”. For example, for version 1.0 of the spec, use the string “1.0”.
    - `fd` integer, nullable: Entity responsible for the final impression sale decision, where 0 = exchange, 1 = upstream source.
    - `pchain` string, nullable: Payment ID chain string containing embedded syntax described in the TAG Payment ID Protocol v1.0.
    - `tid` string, nullable: Transaction ID that must be common across all participants in this bid request (e.g., potentially multiple exchanges).
  - `test` integer, nullable: Indicator of test mode in which auctions are not billable, where 0 = live mode, 1 = test mode.
  - `tmax` integer, nullable: Maximum time in milliseconds the exchange allows for bids to be received including Internet latency to avoid timeout. This value supersedes any a priori guidance from the exchange.
  - `user` User: This object contains information known or derived about the human user of the device (i.e., the audience for advertising). The user id is an exchange artifact and may be subject to rotation or other privacy policies. However, this user ID must be stable long enough to serve reasonably as the basis for frequency capping and retargeting.
    - `buyeruid` string, nullable: Buyer-specific ID for the user as mapped by the exchange for the buyer. At least one of buyeruid or id is recommended.
    - `customdata` string, nullable: Optional feature to pass bidder data that was set in the exchange’s cookie. The string must be in base85 cookie safe characters and be in any format. Proper JSON encoding must be used to include “escaped” quotation marks.
    - `data` Data[], nullable: Additional user data. Each Data object represents a different data source.
      - `ext` unknown
      - `id` string, nullable
      - `name` string, nullable
      - `segment` Segment[], nullable
        - `ext` unknown
        - `id` string, nullable
        - `name` string, nullable
        - `value` string, nullable
    - `ext` UserExt
      - `a0x` A0xUserExt
        - `bidders` object, nullable
      - `consent` string, nullable: GDPR consent string
    - `gender` string, nullable: Gender, where “M” = male, “F” = female, “O” = known to be other (i.e., omitted is unknown).
    - `geo` Geo: This object encapsulates various methods for specifying a geographic location. When subordinate to a Device object, it indicates the location of the device which can also be interpreted as the user’s current location. When subordinate to a User object, it indicates the location of the user’s home base (i.e., not necessarily their current location). The lat/lon attributes should only be passed if they conform to the accuracy depicted in the type attribute. For example, the centroid of a geographic region such as postal code should not be passed.
      - `accuracy` integer, nullable: Estimated location accuracy in meters; recommended when lat/lon are specified and derived from a device’s location services (i.e., type = 1). Note that this is the accuracy as reported from the device. Consult OS specific documentation (e.g., Android, iOS) for exact interpretation.
      - `city` string, nullable: City using United Nations Code for Trade & Transport Locations.
      - `country` string, nullable: Country code using ISO-3166-1-alpha-3.
      - `ext` unknown
      - `ipservice` integer, nullable: Service or provider used to determine geolocation from IP address if applicable (i.e., type = 2).
      - `lastfix` integer, nullable: Number of seconds since this geolocation fix was established. Note that devices may cache location data across multiple fetches. Ideally, this value should be from the time the actual fix was taken.
      - `lat` number, double, nullable: Latitude from -90.0 to +90.0, where negative is south.
      - `lon` number, double, nullable: Longitude from -180.0 to +180.0, where negative is west.
      - `metro` string, nullable: Google metro code; similar to but not exactly Nielsen DMAs.
      - `region` string, nullable: Region code using ISO-3166-2; 2-letter state code if USA.
      - `regionfips104` string, nullable: Region of a country using FIPS 10-4 notation. While OpenRTB supports this attribute, it has been withdrawn by NIST in 2008.
      - `type` integer, nullable: Source of location data; recommended when passing lat/lon.
      - `utcoffset` integer, nullable: Local time as the number +/- of minutes from UTC.
      - `zip` string, nullable: Zip or postal code.
    - `id` string, nullable: Exchange-specific ID for the user. At least one of id or buyeruid is recommended.
    - `keywords` string, nullable: Comma separated list of keywords, interests, or intent.
    - `yob` integer, nullable: Year of birth as a 4-digit integer.
  - `wlang` string[], nullable: White list of languages for creatives using ISO-639-1-alpha-2. Omission implies no specific restrictions, but buyers would be advised to consider language attribute in the Device and/or Content objects if available.
  - `wseat` string[], nullable: White list of buyer seats (e.g., advertisers, agencies) allowed to bid on this impression. IDs of seats and knowledge of the buyer’s customers to which they refer must be coordinated between bidders and the exchange a priori. At most, only one of wseat and bseat should be used in the same request. Omission of both implies no seat restrictions.

## Response `200`

Bid received.

- BidResponseOpenApi: This object is the top-level bid response object (i.e., the unnamed outer JSON object). The id attribute is a reflection of the bid request ID for logging purposes. Similarly, bidid is an optional response tracking ID for bidders. If specified, it can be included in the subsequent win notice call if the bidder wins. At least one seatbid object is required, which contains at least one bid for an impression. Other attributes are optional. To express a “no-bid”, the options are to return an empty response with HTTP 204. Alternately if the bidder wishes to convey to the exchange a reason for not bidding, just a BidResponse object is returned with a reason code in the nbr attribute.
  - `bidid` string, nullable: Bidder generated response ID to assist with logging/tracking.
  - `cur` string, nullable: Bid currency using ISO-4217 alpha codes.
  - `customdata` string, nullable: Optional feature to allow a bidder to set data in the exchange’s cookie. The string must be in base85 cookie safe characters and be in any format. Proper JSON encoding must be used to include “escaped” quotation marks.
  - `ext` unknown
  - `id` string, required: ID of the bid request to which this is a response.
  - `nbr` integer, nullable: Reason for not bidding.
  - `seatbid` SeatBid[], nullable: Array of seatbid objects; 1+ required if a bid is to be made.
    - `bid` Bid[], required: Array of 1+ Bid objects each related to an impression. Multiple bids can relate to the same impression.
      - `adid` string, nullable: ID of a preloaded ad to be served if the bid wins.
      - `adm` string, nullable: Optional means of conveying ad markup in case the bid wins; supersedes the win notice if markup is included in both. Substitution macros may be included.
      - `adomain` string[], nullable: Advertiser domain for block list checking (e.g., “ford.com”). This can be an array of for the case of rotating creatives. Exchanges can mandate that only one domain is allowed.
      - `api` integer, nullable: API required by the markup if applicable.
      - `attr` CreativeAttribute[], nullable: Set of attributes describing the creative.
      - `bundle` string, nullable: A platform-specific application identifier intended to be unique to the app and independent of the exchange. On Android, this should be a bundle or package name (e.g., com.foo.mygame). On iOS, it is a numeric ID.
      - `burl` string, nullable: Billing notice URL called by the exchange when a winning bid becomes billable based on exchange-specific business policy (e.g., typically delivered, viewed, etc.). Substitution macros may be included.
      - `cat` string[], nullable: IAB content categories of the creative.
      - `cid` string, nullable: Campaign ID to assist with ad quality checking; the collection of creatives for which iurl should be representative.
      - `crid` union: Contrary to IAB spec, Audiohook passes an integer in the `crid` field * For the serde macro see: https://serde.rs/enum-representations.html#untagged
        - string
        - integer
      - `dealid` string, nullable: Reference to the deal.id from the bid request if this bid pertains to a private marketplace direct deal.
      - `exp` integer, nullable: Advisory as to the number of seconds the bidder is willing to wait between the auction and the actual impression.
      - `ext` unknown
      - `h` integer, nullable: Height of the creative in device independent pixels (DIPS).
      - `hratio` integer, nullable: Relative height of the creative when expressing size as a ratio. Required for Flex Ads.
      - `id` string, required: Bidder generated bid ID to assist with logging/tracking.
      - `impid` string, required: ID of the Imp object in the related bid request.
      - `iurl` string, nullable: URL without cache-busting to an image that is representative of the content of the campaign for ad quality/safety checking.
      - `language` string, nullable: Language of the creative using ISO-639-1-alpha-2. The nonstandard code “xx” may also be used if the creative has no linguistic content (e.g., a banner with just a company logo).
      - `lurl` string, nullable: Loss notice URL called by the exchange when a bid is known to have been lost. Substitution macros (Section 4.4) may be included. Exchange-specific policy may preclude support for loss notices or the disclosure of winning clearing prices resulting in ${AUCTION_PRICE} macros being removed (i.e., replaced with a zero-length string).
      - `nurl` string, nullable: Win notice URL called by the exchange if the bid wins (not necessarily indicative of a delivered, viewed, or billable ad); optional means of serving ad markup. Substitution macros may be included in both the URL and optionally returned markup.
      - `price` number, double, required: Bid price expressed as CPM although the actual transaction is for a unit impression only. Note that while the type indicates float, integer math is highly recommended when handling currencies (e.g., BigDecimal in Java).
      - `protocol` integer, nullable: Video response protocol of the markup if applicable.
      - `qagmediarating` integer, nullable: Creative media rating per IQG guidelines.
      - `tactic` string, nullable: Tactic ID to enable buyers to label bids for reporting to the exchange the tactic through which their bid was submitted. The specific usage and meaning of the tactic ID should be communicated between buyer and exchanges a priori.
      - `w` integer, nullable: Width of the creative in device independent pixels (DIPS).
      - `wratio` integer, nullable: Relative width of the creative when expressing size as a ratio. Required for Flex Ads.
    - `ext` unknown
    - `group` integer, nullable: 0 = impressions can be won individually; 1 = impressions must be won or lost as a group.
    - `seat` string, nullable: ID of the buyer seat (e.g., advertiser, agency) on whose behalf this bid is made.

---

[API](https://skmtc.dev/kevel/apis/relay-exchange-api.md) - [All operations](https://skmtc.dev/kevel/apis/relay-exchange-api/llms.txt) - [OpenAPI document](https://skmtc.dev/kevel/apis/relay-exchange-api/revisions/e4e7f4317dba?raw)
