All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.adgear.anoa.test.ad_exchange.LogEventAvro Maven / Gradle / Ivy

There is a newer version: 3.1.2
Show newest version
/**
 * Autogenerated by Avro
 * 
 * DO NOT EDIT DIRECTLY
 */
package com.adgear.anoa.test.ad_exchange;

/** Log event for real-time bidding ad exchange client. */
@org.apache.avro.specific.AvroGenerated
final public class LogEventAvro extends org.apache.avro.specific.SpecificRecordBase {

  /** Log event unique identifier. */
  java.nio.ByteBuffer uuid;
  /** Log event timestamp, in milliseconds from epoch. */
  long timestamp;
  /** Log event type. */
  com.adgear.anoa.test.ad_exchange.LogEventTypeAvro type;
  open_rtb.BidRequestAvro request;
  /** Bid response submitted to the real-time bidding ad exchange. */
  open_rtb.BidResponseAvro response;
  /** Log event custom properties. */
  java.util.HashMap properties;

  private boolean _frozen = false;

  /** Default constructor, does not initialize fields to their default values from the schema. Only use this if you know what you are doing. */
  public LogEventAvro() {}

  public LogEventAvro freeze() {
    _frozen = true;
    request.freeze();
    response.freeze();
    return this;
  }

  @Override
  public org.apache.avro.Schema getSchema() { return SCHEMA$; }

  // Used by DatumWriter. Applications should not call.
  @Override
  public java.lang.Object get(int field$) {
    switch (field$) {
      case 0: return uuid;
      case 1: return timestamp;
      case 2: return type;
      case 3: return request;
      case 4: return response;
      case 5: return properties;
      default: throw new org.apache.avro.AvroRuntimeException("Bad index");
    }
  }

  /** Writes record to Avro Encoder. */
  public void encode(org.apache.avro.io.Encoder _encoder) throws java.io.IOException {
    _encoder.writeBytes(uuid);
    _encoder.writeLong(timestamp);
    _encoder.writeEnum(type.ordinal());
    request.encode(_encoder);
    response.encode(_encoder);
    _encoder.writeMapStart(); _encoder.setItemCount(properties.size()); for (java.util.Map.Entry e : properties.entrySet()) { _encoder.writeString(e.getKey());_encoder.writeString(e.getValue()); } _encoder.writeMapEnd(); 
  }

  // Used by DatumReader.  Applications should not call.
  @Override
  @SuppressWarnings(value="unchecked")
  public void put(int field$, java.lang.Object value$) {
    if (_frozen) {
      throw new org.apache.avro.AvroRuntimeException("this Anoa SpecificRecord instance has already been frozen.");
    }
    switch (field$) {
      case 0: uuid = (java.nio.ByteBuffer) value$; break;
      case 1: timestamp = (long) value$; break;
      case 2: type = (com.adgear.anoa.test.ad_exchange.LogEventTypeAvro) value$; break;
      case 3: request = (open_rtb.BidRequestAvro) value$; break;
      case 4: response = (open_rtb.BidResponseAvro) value$; break;
      case 5: properties = (java.util.HashMap) value$; break;
    default: throw new org.apache.avro.AvroRuntimeException("Bad index");
    }
  }

  /** Reads record from Avro Decoder. */
  public LogEventAvro decode(org.apache.avro.io.Decoder _decoder) throws java.io.IOException {
    if (_frozen) {
      throw new org.apache.avro.AvroRuntimeException("this Anoa SpecificRecord instance has already been frozen.");
    }
    uuid = _decoder.readBytes(uuid);
    timestamp = _decoder.readLong();
    type = com.adgear.anoa.test.ad_exchange.LogEventTypeAvro.values()[_decoder.readEnum()];
    request = java.util.Optional.ofNullable(request).orElseGet(open_rtb.BidRequestAvro::new).decode(_decoder);
    response = java.util.Optional.ofNullable(response).orElseGet(open_rtb.BidResponseAvro::new).decode(_decoder);
    long _i5 = _decoder.readMapStart(); properties = new java.util.HashMap<>((int) _i5); for(; _i5 != 0; _i5 = _decoder.mapNext()) { for (long _j5= 0; _j5 < _i5; _j5++) { properties.put(_decoder.readString(null), _decoder.readString(null)); } }
    return freeze();
  }

  /**
   * RecordBuilder for Avro instances.
   */
  static public class Builder extends org.apache.avro.specific.SpecificRecordBuilderBase implements org.apache.avro.data.RecordBuilder {

    private java.nio.ByteBuffer uuid;
    private long timestamp;
    private com.adgear.anoa.test.ad_exchange.LogEventTypeAvro type;
    private open_rtb.BidRequestAvro request;
    private open_rtb.BidResponseAvro response;
    private java.util.HashMap properties;

    public Builder() {
      super(LogEventAvro.SCHEMA$);
    }

    public Builder(LogEventAvro.Builder other) {
      super(other);
      if (isValidValue(fields()[0], other.uuid)) {
        this.uuid = data().deepCopy(fields()[0].schema(), other.uuid);
        fieldSetFlags()[0] = true;
      }
      if (isValidValue(fields()[1], other.timestamp)) {
        this.timestamp = data().deepCopy(fields()[1].schema(), other.timestamp);
        fieldSetFlags()[1] = true;
      }
      if (isValidValue(fields()[2], other.type)) {
        this.type = data().deepCopy(fields()[2].schema(), other.type);
        fieldSetFlags()[2] = true;
      }
      if (isValidValue(fields()[3], other.request)) {
        this.request = data().deepCopy(fields()[3].schema(), other.request);
        fieldSetFlags()[3] = true;
      }
      if (isValidValue(fields()[4], other.response)) {
        this.response = data().deepCopy(fields()[4].schema(), other.response);
        fieldSetFlags()[4] = true;
      }
      if (isValidValue(fields()[5], other.properties)) {
        this.properties = data().deepCopy(fields()[5].schema(), other.properties);
        fieldSetFlags()[5] = true;
      }
    }

    public Builder(LogEventAvro other) {
      super(LogEventAvro.SCHEMA$);
      if (isValidValue(fields()[0], other.uuid)) {
        this.uuid = data().deepCopy(fields()[0].schema(), other.uuid);
        fieldSetFlags()[0] = true;
      }
      if (isValidValue(fields()[1], other.timestamp)) {
        this.timestamp = data().deepCopy(fields()[1].schema(), other.timestamp);
        fieldSetFlags()[1] = true;
      }
      if (isValidValue(fields()[2], other.type)) {
        this.type = data().deepCopy(fields()[2].schema(), other.type);
        fieldSetFlags()[2] = true;
      }
      if (isValidValue(fields()[3], other.request)) {
        this.request = data().deepCopy(fields()[3].schema(), other.request);
        fieldSetFlags()[3] = true;
      }
      if (isValidValue(fields()[4], other.response)) {
        this.response = data().deepCopy(fields()[4].schema(), other.response);
        fieldSetFlags()[4] = true;
      }
      if (isValidValue(fields()[5], other.properties)) {
        this.properties = data().deepCopy(fields()[5].schema(), other.properties);
        fieldSetFlags()[5] = true;
      }
    }

    /** Gets the value of the 'uuid' field. */
    public java.nio.ByteBuffer getUuid() {
      return uuid;
    }

    /** Sets the value of the 'uuid' field. */
    public LogEventAvro.Builder setUuid(java.nio.ByteBuffer value) {
      validate(fields()[0], value);
      this.uuid = value;
      fieldSetFlags()[0] = true;
      return this;
    }

    /** Checks whether the 'uuid' field has been set. */
    public boolean hasUuid() {
      return fieldSetFlags()[0];
    }

    /** Clears the value of the 'uuid' field. */
    public LogEventAvro.Builder clearUuid() {
      uuid = null;
      fieldSetFlags()[0] = false;
      return this;
    }

    /** Gets the value of the 'timestamp' field. */
    public long getTimestamp() {
      return timestamp;
    }

    /** Sets the value of the 'timestamp' field. */
    public LogEventAvro.Builder setTimestamp(long value) {
      validate(fields()[1], value);
      this.timestamp = value;
      fieldSetFlags()[1] = true;
      return this;
    }

    /** Checks whether the 'timestamp' field has been set. */
    public boolean hasTimestamp() {
      return fieldSetFlags()[1];
    }

    /** Clears the value of the 'timestamp' field. */
    public LogEventAvro.Builder clearTimestamp() {
      fieldSetFlags()[1] = false;
      return this;
    }

    /** Gets the value of the 'type' field. */
    public com.adgear.anoa.test.ad_exchange.LogEventTypeAvro getType() {
      return type;
    }

    /** Sets the value of the 'type' field. */
    public LogEventAvro.Builder setType(com.adgear.anoa.test.ad_exchange.LogEventTypeAvro value) {
      validate(fields()[2], value);
      this.type = value;
      fieldSetFlags()[2] = true;
      return this;
    }

    /** Checks whether the 'type' field has been set. */
    public boolean hasType() {
      return fieldSetFlags()[2];
    }

    /** Clears the value of the 'type' field. */
    public LogEventAvro.Builder clearType() {
      type = null;
      fieldSetFlags()[2] = false;
      return this;
    }

    /** Gets the value of the 'request' field. */
    public open_rtb.BidRequestAvro getRequest() {
      return request;
    }

    /** Sets the value of the 'request' field. */
    public LogEventAvro.Builder setRequest(open_rtb.BidRequestAvro value) {
      validate(fields()[3], value);
      this.request = value;
      fieldSetFlags()[3] = true;
      return this;
    }

    /** Checks whether the 'request' field has been set. */
    public boolean hasRequest() {
      return fieldSetFlags()[3];
    }

    /** Clears the value of the 'request' field. */
    public LogEventAvro.Builder clearRequest() {
      request = null;
      fieldSetFlags()[3] = false;
      return this;
    }

    /** Gets the value of the 'response' field. */
    public open_rtb.BidResponseAvro getResponse() {
      return response;
    }

    /** Sets the value of the 'response' field. */
    public LogEventAvro.Builder setResponse(open_rtb.BidResponseAvro value) {
      validate(fields()[4], value);
      this.response = value;
      fieldSetFlags()[4] = true;
      return this;
    }

    /** Checks whether the 'response' field has been set. */
    public boolean hasResponse() {
      return fieldSetFlags()[4];
    }

    /** Clears the value of the 'response' field. */
    public LogEventAvro.Builder clearResponse() {
      response = null;
      fieldSetFlags()[4] = false;
      return this;
    }

    /** Gets the value of the 'properties' field. */
    public java.util.HashMap getProperties() {
      return properties;
    }

    /** Sets the value of the 'properties' field. */
    public LogEventAvro.Builder setProperties(java.util.HashMap value) {
      validate(fields()[5], value);
      this.properties = value;
      fieldSetFlags()[5] = true;
      return this;
    }

    /** Checks whether the 'properties' field has been set. */
    public boolean hasProperties() {
      return fieldSetFlags()[5];
    }

    /** Clears the value of the 'properties' field. */
    public LogEventAvro.Builder clearProperties() {
      properties = null;
      fieldSetFlags()[5] = false;
      return this;
    }

    @Override
    public LogEventAvro build() {
      final LogEventAvro record;
      try {
        record = new LogEventAvro();
        record.uuid = fieldSetFlags()[0] ? this.uuid : (java.nio.ByteBuffer) defaultValue(fields()[0]);
        record.timestamp = fieldSetFlags()[1] ? this.timestamp : (long) defaultValue(fields()[1]);
        record.type = fieldSetFlags()[2] ? this.type : (com.adgear.anoa.test.ad_exchange.LogEventTypeAvro) defaultValue(fields()[2]);
        record.request = fieldSetFlags()[3] ? this.request : (open_rtb.BidRequestAvro) defaultValue(fields()[3]);
        record.response = fieldSetFlags()[4] ? this.response : (open_rtb.BidResponseAvro) defaultValue(fields()[4]);
        record.properties = fieldSetFlags()[5] ? this.properties : (java.util.HashMap) defaultValue(fields()[5]);
      } catch (Exception e) {
        throw new org.apache.avro.AvroRuntimeException(e);
      }
      return record.freeze();
    }
  }

  /** Creates a new LogEventAvro RecordBuilder. */
  static public LogEventAvro.Builder newBuilder() {
    return new LogEventAvro.Builder();
  }

  /** Creates a new LogEventAvro RecordBuilder by copying an existing LogEventAvro.Builder instance. */
  static public LogEventAvro.Builder newBuilder(LogEventAvro.Builder other) {
    return new LogEventAvro.Builder(other);
  }

  /** Creates a new LogEventAvro RecordBuilder by copying an existing LogEventAvro instance. */
  static public LogEventAvro.Builder newBuilder(LogEventAvro other) {
    return new LogEventAvro.Builder(other);
  }

  /** Returns Avro record schema. */
  static public org.apache.avro.Schema getClassSchema() { return SCHEMA$; }

  static public final org.apache.avro.Schema SCHEMA$ = new org.apache.avro.Schema.Parser().parse("{\"type\":\"record\",\"name\":\"LogEventAvro\",\"namespace\":\"com.adgear.anoa.test.ad_exchange\",\"doc\":\"Log event for real-time bidding ad exchange client.\",\"fields\":[{\"name\":\"uuid\",\"type\":\"bytes\",\"doc\":\"Log event unique identifier.\",\"default\":\"\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\",\"ordinal_\":1},{\"name\":\"timestamp\",\"type\":{\"type\":\"long\",\"min\":0},\"doc\":\"Log event timestamp, in milliseconds from epoch.\",\"default\":0,\"ordinal_\":2},{\"name\":\"type\",\"type\":{\"type\":\"enum\",\"name\":\"LogEventTypeAvro\",\"symbols\":[\"UNKNOWN_LOG_EVENT_TYPE\",\"REQUEST\",\"RESPONSE\",\"ERROR\"]},\"doc\":\"Log event type.\",\"default\":\"UNKNOWN_LOG_EVENT_TYPE\",\"ordinal_\":3},{\"name\":\"request\",\"type\":{\"type\":\"record\",\"name\":\"BidRequestAvro\",\"namespace\":\"open_rtb\",\"doc\":\"3.3.1 Bid Request Object\\nThe top-level bid request object contains a globally unique bid request or auction ID. This “id” attribute is required as is at least one “imp” (i.e., impression) object. Other attributes are optional since an exchange may establish default values.\",\"fields\":[{\"name\":\"id\",\"type\":\"string\",\"doc\":\"Unique ID of the bid request, provided by the exchange.\",\"default\":\"\",\"ordinal_\":1},{\"name\":\"imp\",\"type\":{\"type\":\"array\",\"items\":{\"type\":\"record\",\"name\":\"ImpressionAvro\",\"doc\":\"3.3.2 Impression Object\\nThe “imp” object describes the ad position or impression being auctioned. A single bid request can include multiple “imp” objects, a use case for which might be an exchange that supports selling all ad positions on a given page as a bundle. Each “imp” object has a required ID so that bids can reference them individually. An exchange can also conduct private auctions by restricting involvement to specific subsets of seats within bidders.\",\"fields\":[{\"name\":\"id\",\"type\":\"string\",\"doc\":\"A unique identifier for this impression within the context of the bid request (typically, value starts with 1, and increments up to n for n impressions).\",\"default\":\"\",\"ordinal_\":1},{\"name\":\"banner\",\"type\":{\"type\":\"record\",\"name\":\"BannerAvro\",\"doc\":\"3.3.3 Banner Object\\nThe “banner” object _must_ be included directly in the impression object if the impression offered for auction is display or rich media, or it may be _optionally_ embedded in the video object to describe the companion banners available for the linear or non-linear video ad. The banner object may include a unique identifier; this can be useful if these IDs can be leveraged in the VAST response to dictate placement of the companion creatives when multiple companion ad opportunities of the same size are available on a page.\",\"fields\":[{\"name\":\"w\",\"type\":{\"type\":\"int\",\"max\":4294967295,\"min\":0},\"doc\":\"Width of the impression in pixels. Since some ad types are not restricted by size this field is not required, but it’s highly recommended that this information be included when possible.\",\"default\":0,\"ordinal_\":1},{\"name\":\"h\",\"type\":{\"type\":\"int\",\"max\":4294967295,\"min\":0},\"doc\":\"Height of the impression in pixels. Since some ad types are not restricted by size this field is not required, but it’s highly recommended that this information be included when possible.\",\"default\":0,\"ordinal_\":2},{\"name\":\"wmax\",\"type\":{\"type\":\"int\",\"max\":4294967295,\"min\":0},\"doc\":\"Maximum width of the impression in pixels. If included, it indicates that a range of sizes is allowed with this maximum width and \\\"w\\\" is taken as recommended. If not included, then \\\"w\\\" should be considered an exact requirement.\",\"default\":0,\"ordinal_\":3},{\"name\":\"hmax\",\"type\":{\"type\":\"int\",\"max\":4294967295,\"min\":0},\"doc\":\"Maximum height of the impression in pixels. If included, it indicates that a range of sizes is allowed with this maximum height and \\\"h\\\" is taken as recommended. If not included, then \\\"h\\\" should be considered an exact requirement.\",\"default\":0,\"ordinal_\":4},{\"name\":\"wmin\",\"type\":{\"type\":\"int\",\"max\":4294967295,\"min\":0},\"doc\":\"Minimum width of the impression in pixels. If included, it indicates that a range of sizes is allowed with this minimum width and \\\"w\\\" is taken as recommended. If not included, then \\\"w\\\" should be considered an exact requirement.\",\"default\":0,\"ordinal_\":5},{\"name\":\"hmin\",\"type\":{\"type\":\"int\",\"max\":4294967295,\"min\":0},\"doc\":\"Minimum height of the impression in pixels. If included, it indicates that a range of sizes is allowed with this minimum height and \\\"h\\\" is taken as recommended. If not included, then \\\"h\\\" should be considered an exact requirement.\",\"default\":0,\"ordinal_\":6},{\"name\":\"id\",\"type\":\"string\",\"doc\":\"Unique identifier for this banner object. Useful for tracking multiple banner objects (e.g., in companion banner array). Usually starts with 1, increasing with each object. Combination of impression id banner object should be unique.\",\"default\":\"\",\"ordinal_\":7},{\"name\":\"pos\",\"type\":{\"type\":\"int\",\"max\":255,\"min\":0},\"doc\":\"Ad Position. Use Table 6.5\",\"default\":0,\"ordinal_\":8},{\"name\":\"btype\",\"type\":{\"type\":\"array\",\"items\":{\"type\":\"int\",\"max\":255,\"min\":0}},\"doc\":\"Blocked creative types. See Table 6.2 Banner Ad Types. If blank, assume all types are allowed.\",\"default\":[],\"ordinal_\":9},{\"name\":\"battr\",\"type\":{\"type\":\"array\",\"items\":{\"type\":\"int\",\"max\":65535,\"min\":0}},\"doc\":\"Blocked creative attributes. See Table 6.3 Creative Attributes. If blank assume all types are allowed.\",\"default\":[],\"ordinal_\":10},{\"name\":\"mimes\",\"type\":{\"type\":\"array\",\"items\":\"string\"},\"doc\":\"Whitelist of content MIME types supported. Popular MIME types include, but are not limited to “image/jpg”, “image/gif” and “application/x-shockwave-flash”.\",\"default\":[],\"ordinal_\":11},{\"name\":\"topframe\",\"type\":{\"type\":\"int\",\"max\":1,\"min\":0},\"doc\":\"Specify if the banner is delivered in the top frame or in an iframe. “0” means it is not in the top frame, and “1” means that it is.\",\"default\":0,\"ordinal_\":12},{\"name\":\"expdir\",\"type\":{\"type\":\"array\",\"items\":{\"type\":\"int\",\"max\":255,\"min\":0}},\"doc\":\"Specify properties for an expandable ad. See Table 6.11 Expandable Direction for possible values.\",\"default\":[],\"ordinal_\":13},{\"name\":\"api\",\"type\":{\"type\":\"array\",\"items\":{\"type\":\"int\",\"max\":255,\"min\":0}},\"doc\":\"List of supported API frameworks for this banner. (See Table 6.4 API Frameworks). If an API is not explicitly listed it is assumed not to be supported.\",\"default\":[],\"ordinal_\":14}]},\"doc\":\"A reference to a banner object. Either a banner or video object (or both if the impression could be either) must be included in an impression object. See Banner Object.\",\"default\":{},\"ordinal_\":2},{\"name\":\"video\",\"type\":{\"type\":\"record\",\"name\":\"VideoAvro\",\"doc\":\"3.3.4 Video Object\\nThe “video” object _must_ be included directly in the impression object if the impression offered for auction is an in-stream video ad opportunity.\\nNote that for the video object, many of the fields are non-essential for a minimally viable exchange interfaces. These parameters do not necessarily need to be specified to the bidder, if they are always the same for all impression, of if the exchange chooses not to supply the additional information to the bidder.\",\"fields\":[{\"name\":\"mimes\",\"type\":{\"type\":\"array\",\"items\":\"string\"},\"doc\":\"Content MIME types supported. Popular MIME types include, but are not limited to “video/x-ms- wmv” for Windows Media, and “video/x-flv” for Flash Video.\",\"default\":[],\"ordinal_\":1},{\"name\":\"minduration\",\"type\":{\"type\":\"int\",\"max\":2147483647,\"min\":-1},\"doc\":\"Minimum video ad duration in seconds.\",\"default\":-1,\"ordinal_\":2},{\"name\":\"maxduration\",\"type\":{\"type\":\"int\",\"max\":2147483647,\"min\":-1},\"doc\":\"Maximum video ad duration in seconds.\",\"default\":-1,\"ordinal_\":3},{\"name\":\"protocol\",\"type\":{\"type\":\"int\",\"max\":255,\"min\":0},\"doc\":\"Video bid response protocols. See Table 6.7 Video Bid Response Protocols for a list of possible values. NOTE: Use “protocols” when multiple protocols are supported. Its use is also highly recommended even for one since this “protocol” attribute is likely to be deprecated in a future version.\\n      At least one supported protocol must be specified in either the “protocol” or “protocols” attribute.\",\"default\":0,\"ordinal_\":4},{\"name\":\"protocols\",\"type\":{\"type\":\"array\",\"items\":{\"type\":\"int\",\"max\":255,\"min\":0}},\"doc\":\"Video bid response protocol","s. See Table 6.7 Video Bid Response Protocols for a list of possible values.\\n      At least one supported protocol must be specified in either the “protocol” or “protocols” attribute.\",\"default\":[],\"ordinal_\":5},{\"name\":\"w\",\"type\":{\"type\":\"int\",\"max\":4294967295,\"min\":0},\"doc\":\"Width of the player in pixels. This field is not required, but it’s highly recommended that this information be included.\",\"default\":0,\"ordinal_\":6},{\"name\":\"h\",\"type\":{\"type\":\"int\",\"max\":4294967295,\"min\":0},\"doc\":\"Height of the player in pixels. This field is not required, but it’s highly recommended that this information be included.\",\"default\":0,\"ordinal_\":7},{\"name\":\"startdelay\",\"type\":{\"type\":\"int\",\"max\":127,\"min\":-128},\"doc\":\"Indicates the start delay in seconds for preroll, midroll, or postroll ad placement. See Table 6.9 Video Start Delay for generic placement values.\",\"default\":0,\"ordinal_\":8},{\"name\":\"linearity\",\"type\":{\"type\":\"int\",\"max\":255,\"min\":0},\"doc\":\"Indicates whether the ad impression must be linear, non- linear or can be of any type (field not set). See Table 6.6 Video Linearity for a list of the possible values and recommended bidder interpretation.\",\"default\":0,\"ordinal_\":9},{\"name\":\"sequence\",\"type\":{\"type\":\"int\",\"max\":65535,\"min\":0},\"doc\":\"If multiple ad impressions are offered in the same bid request, the sequence number will allow for the coordinated delivery of multiple creatives.\",\"default\":1,\"ordinal_\":10},{\"name\":\"battr\",\"type\":{\"type\":\"array\",\"items\":{\"type\":\"int\",\"max\":255,\"min\":0}},\"doc\":\"Blocked creative attributes. See Table 6.3 Creative Attributes. If blank assume all types are allowed.\",\"default\":[],\"ordinal_\":11},{\"name\":\"maxextended\",\"type\":{\"type\":\"int\",\"max\":2147483647,\"min\":-1},\"doc\":\"Maximum extended video ad duration, if extension is allowed. If blank or 0, extension is not allowed. If -1, extension is allowed, and there is no time limit imposed. If greater than 0, then the value represents the number of seconds of extended play supported beyond the maxduration value.\",\"default\":0,\"ordinal_\":12},{\"name\":\"minbitrate\",\"type\":{\"type\":\"int\",\"max\":4294967295,\"min\":0},\"doc\":\"Minimum bit rate in Kbps. Exchange may set this dynamically, or universally across their set of publishers.\",\"default\":0,\"ordinal_\":13},{\"name\":\"maxbitrate\",\"type\":{\"type\":\"int\",\"max\":4294967295,\"min\":0},\"doc\":\"Maximum bit rate in Kbps. Exchange may set this dynamically, or universally across their set of publishers.\",\"default\":0,\"ordinal_\":14},{\"name\":\"boxingallowed\",\"type\":{\"type\":\"int\",\"max\":1,\"min\":0},\"doc\":\"If exchange publisher has rules preventing letter boxing of 4x3 content to play in a 16x9 window, then this should be set to false. Default setting is true, which assumes that boxing of content to fit into a window is allowed. “1” indicates boxing is allowed. “0” indicates it is not allowed.\",\"default\":1,\"ordinal_\":15},{\"name\":\"playbackmethod\",\"type\":{\"type\":\"array\",\"items\":{\"type\":\"int\",\"max\":255,\"min\":0}},\"doc\":\"List of allowed playback methods. If blank, assume that all are allowed. See Table 6.8 Video Playback Methods for a list of possible values.\",\"default\":[],\"ordinal_\":16},{\"name\":\"deliverymethod\",\"type\":{\"type\":\"array\",\"items\":{\"type\":\"int\",\"max\":255,\"min\":0}},\"doc\":\"List of supported delivery methods (streaming, progressive). If blank, assume all are supported. See Table 6.12 Content Delivery Methods for a list of possible values.\",\"default\":[],\"ordinal_\":17},{\"name\":\"pos\",\"type\":{\"type\":\"int\",\"max\":255,\"min\":0},\"doc\":\"Ad Position (see table 6.5). Default: unknown.\",\"default\":0,\"ordinal_\":18},{\"name\":\"companionad\",\"type\":{\"type\":\"array\",\"items\":\"BannerAvro\"},\"doc\":\"If companion ads are available, they can be listed as an array of banner objects. See Banner Object.\",\"default\":[],\"ordinal_\":19},{\"name\":\"api\",\"type\":{\"type\":\"array\",\"items\":{\"type\":\"int\",\"max\":255,\"min\":0}},\"doc\":\"List of supported API frameworks for this impression. (See Table 6.4 API Frameworks). If an API is not explicitly listed it is assumed not to be supported.\",\"default\":[],\"ordinal_\":20},{\"name\":\"vast_companion_type\",\"type\":{\"type\":\"array\",\"items\":{\"type\":\"int\",\"max\":255,\"min\":0}},\"doc\":\"Recommended if companion objects are included. See Table 6.17 VAST Companion Types for a list of possible values.\",\"default\":[],\"ordinal_\":21}]},\"doc\":\"A reference to a video object. Either a banner or video object (or both if the impression could be either) must be included in an impression object. See Video Object.\",\"default\":{},\"ordinal_\":3},{\"name\":\"displaymanager\",\"type\":\"string\",\"doc\":\"Name of ad mediation partner, SDK technology, or native player responsible for rendering ad (typically video or mobile). Used by some ad servers to customize ad code by partner.\",\"default\":\"\",\"ordinal_\":4},{\"name\":\"displaymanagerver\",\"type\":\"string\",\"doc\":\"Version of ad mediation partner, SDK technology, or native player responsible for rendering ad (typically video or mobile). Used by some ad servers to customize ad code by partner.\",\"default\":\"\",\"ordinal_\":5},{\"name\":\"instl\",\"type\":{\"type\":\"int\",\"max\":1,\"min\":0},\"doc\":\"1 if the ad is interstitial or full screen; else 0 (i.e., no).\",\"default\":0,\"ordinal_\":6},{\"name\":\"tagid\",\"type\":\"string\",\"doc\":\"Identifier for specific ad placement or ad tag that was used to initiate the auction. This can be useful for debugging of any issues, or for optimization by the buyer.\",\"default\":\"\",\"ordinal_\":7},{\"name\":\"bidfloor\",\"type\":{\"type\":\"double\",\"min\":0.0},\"doc\":\"Bid floor for this impression (in CPM of bidfloorcur).\",\"default\":0.0,\"ordinal_\":8},{\"name\":\"bidfloorcur\",\"type\":\"string\",\"doc\":\"If bid floor is specified and multiple currencies supported per bid request, then currency should be specified here using ISO-4217 alphabetic codes. Note, this may be different from bid currency returned by bidder, if this is allowed on an exchange.\",\"default\":\"USD\",\"ordinal_\":9},{\"name\":\"secure\",\"type\":{\"type\":\"int\",\"max\":1,\"min\":0},\"doc\":\"Flag to indicate whether the impression requires secure HTTPS URL creative assets and markup. A value of “1” means that the impression requires secure assets. A value of \\\"0\\\" means non-secure assets. If this field is omitted the bidder should interpret the secure state is unknown and assume HTTP is supported.\",\"default\":0,\"ordinal_\":10},{\"name\":\"iframebuster\",\"type\":{\"type\":\"array\",\"items\":\"string\"},\"doc\":\"Array of names for supported iframe busters. Exchange specific.\",\"default\":[],\"ordinal_\":11},{\"name\":\"pmp\",\"type\":{\"type\":\"record\",\"name\":\"PmpAvro\",\"doc\":\"3.3.16 PMP Object\\nThe “pmp” object contains a parent object for usage within the context of private marketplaces and the use of the RTB protocol to execute Direct Deals.\",\"fields\":[{\"name\":\"private_auction\",\"type\":{\"type\":\"int\",\"max\":1,\"min\":0},\"doc\":\"An integer flag indicating that this impression is a private auction eligible only to seats named in the Direct Deals object. (e.g., 1 = bids for this impression are restricted to the deals specified and the terms thereof; 0 = all bids are accepted)\",\"default\":0,\"ordinal_\":1},{\"name\":\"deals\",\"type\":{\"type\":\"array\",\"items\":{\"type\":\"record\",\"name\":\"DealAvro\",\"doc\":\"3.3.17 Direct Deals Object\\nA “deal” object constitutes a deal struck a priori between a buyer and a seller and indicates that this impression is available under the terms of that deal.\",\"fields\":[{\"name\":\"id\",\"type\":\"string\",\"doc\":\"A unique identifier for the direct deal.\",\"default\":\"\",\"ordinal_\":1},{\"name\":\"bidfloor\",\"type\":{\"type\":\"double\",\"min\":0.0},\"doc\":\"Bid floor for this impression (in CPM of bidfloorcur).\",\"default\":0.0,\"ordinal_\":2},{\"name\":\"bidfloorcur\",\"type\":\"string\",\"doc\":\"If bid floor is specified and multiple currencies supported per bid request, then currency should be specified here using ISO- 4217 alphabetic codes. Note, this may be different from bid currency returned by bidder, if this is allowed on an exchange.\",\"default\":\"USD\",\"ordinal_\":3},{\"name\":\"wseat\",\"type\":{\"type\":\"array\",\"items\":\"string\"},\"doc\":\"Array of buyer seats allowed to bid on this Direct Deal. Seats are an optional feature of an exchange. For example, [“4”,”34”,”82”,”45”] indicates that only advertisers using these exchange seats are allowed to bid on this direct deal.\",\"default\":[],\"ordi","nal_\":4},{\"name\":\"wadomain\",\"type\":{\"type\":\"array\",\"items\":\"string\"},\"doc\":\"Array of advertiser domains allowed to bid on this Direct Deal. For example, [“advertiser1.com”,”advertiser2.com”] indicates that only the listed advertisers are allowed to bid on this direct deal.\",\"default\":[],\"ordinal_\":5},{\"name\":\"at\",\"type\":{\"type\":\"int\",\"max\":255,\"min\":0},\"doc\":\"Auction type. If “1”, then first price auction. If “2”, then second price auction. If “3”, the passed bidfloor indicates the apriori agreed upon deal price. Additional auction types can be defined as per the exchange’s business rules.\",\"default\":0,\"ordinal_\":6}]}},\"doc\":\"A collection of “deal” objects encapsulating a list of direct deals eligible for this impression.\",\"default\":[],\"ordinal_\":2}]},\"doc\":\"A reference to the PMP object containing any Deals eligible for the impression object. See the PMP Object definition.\",\"default\":{},\"ordinal_\":12}]}},\"doc\":\"Array of impression objects. Multiple impression auctions may be specified in a single bid request. At least one impression is required for a valid bid request.\",\"default\":[],\"ordinal_\":2},{\"name\":\"site\",\"type\":{\"type\":\"record\",\"name\":\"SiteAvro\",\"doc\":\"3.3.5 Site Object\\nA site object should be included if the ad supported content is part of a website (as opposed to an application). A bid request must not contain both a site object and an app object.\\nThe site object itself and all of its parameters are optional, so default values are not provided. If an optional parameter is not specified, it should be considered unknown. At a minimum, it’s useful to provide a page URL or a site ID, but this is not strictly required.\",\"fields\":[{\"name\":\"id\",\"type\":\"string\",\"doc\":\"Site ID on the exchange.\",\"default\":\"\",\"ordinal_\":1},{\"name\":\"name\",\"type\":\"string\",\"doc\":\"Site name (may be masked at publisher’s request).\",\"default\":\"\",\"ordinal_\":2},{\"name\":\"domain\",\"type\":\"string\",\"doc\":\"Domain of the site, used for advertiser side blocking. For example, “foo.com”.\",\"default\":\"\",\"ordinal_\":3},{\"name\":\"cat\",\"type\":{\"type\":\"array\",\"items\":\"string\"},\"doc\":\"Array of IAB content categories for the overall site. See Table 6.1 Content Categories.\",\"default\":[],\"ordinal_\":4},{\"name\":\"sectioncat\",\"type\":{\"type\":\"array\",\"items\":\"string\"},\"doc\":\"Array of IAB content categories for the current subsection of the site. See Table 6.1 Content Categories.\",\"default\":[],\"ordinal_\":5},{\"name\":\"pagecat\",\"type\":{\"type\":\"array\",\"items\":\"string\"},\"doc\":\"Array of IAB content categories for the current page. See Table 6.1 Content Categories.\",\"default\":[],\"ordinal_\":6},{\"name\":\"page\",\"type\":\"string\",\"doc\":\"URL of the page where the impression will be shown.\",\"default\":\"\",\"ordinal_\":7},{\"name\":\"privacypolicy\",\"type\":{\"type\":\"int\",\"max\":1,\"min\":0},\"doc\":\"Specifies whether the site has a privacy policy. “1” means there is a policy. “0” means there is not.\",\"default\":0,\"ordinal_\":8},{\"name\":\"ref\",\"type\":\"string\",\"doc\":\"Referrer URL that caused navigation to the current page.\",\"default\":\"\",\"ordinal_\":9},{\"name\":\"search\",\"type\":\"string\",\"doc\":\"Search string that caused navigation to the current page.\",\"default\":\"\",\"ordinal_\":10},{\"name\":\"publisher\",\"type\":{\"type\":\"record\",\"name\":\"PublisherAvro\",\"doc\":\"3.3.8 Publisher Object\\nThe publisher object itself and all of its parameters are optional, so default values are not provided. If an optional parameter is not specified, it should be considered unknown.\",\"fields\":[{\"name\":\"id\",\"type\":\"string\",\"doc\":\"Publisher ID on the exchange.\",\"default\":\"\",\"ordinal_\":1},{\"name\":\"name\",\"type\":\"string\",\"doc\":\"Publisher name (may be masked at publisher’s request).\",\"default\":\"\",\"ordinal_\":2},{\"name\":\"cat\",\"type\":{\"type\":\"array\",\"items\":\"string\"},\"doc\":\"Array of IAB content categories for the publisher. See Table 6.1 Content Categories.\",\"default\":[],\"ordinal_\":3},{\"name\":\"domain\",\"type\":\"string\",\"doc\":\"Publisher’s highest level domain name, for example “foopub.com”.\",\"default\":\"\",\"ordinal_\":4}]},\"doc\":\"See Publisher Object.\",\"default\":{},\"ordinal_\":11},{\"name\":\"content\",\"type\":{\"type\":\"record\",\"name\":\"ContentAvro\",\"doc\":\"3.3.7 Content Object\\nThe content object itself and all of its parameters are optional, so default values are not provided. If an optional parameter is not specified, it should be considered unknown. This object describes the content in which the impression will appear (may be syndicated or non- syndicated content).\\nThis object may be useful in the situation where 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, video impressions embedded in an iframe on an unknown web property or device.)\",\"fields\":[{\"name\":\"id\",\"type\":\"string\",\"doc\":\"ID uniquely identifying the content.\",\"default\":\"\",\"ordinal_\":1},{\"name\":\"episode\",\"type\":{\"type\":\"int\",\"max\":4294967295,\"min\":0},\"doc\":\"Content episode number (typically applies to video content).\",\"default\":0,\"ordinal_\":2},{\"name\":\"title\",\"type\":\"string\",\"doc\":\"Content title.\\n           Video examples: “Search Committee” (television) or “A New Hope” (movie) or “Endgame” (made for web)\\n           Non-video example: “Why an Antarctic Glacier Is Melting So Quickly” (Time magazine article)\",\"default\":\"\",\"ordinal_\":3},{\"name\":\"series\",\"type\":\"string\",\"doc\":\"Content series.\\n           Video examples: “The Office” (television) or “Star Wars” (movie) or “Arby ‘N’ The Chief” (made for web)\\n           Non-video example: “Ecocentric” (Time magazine blog)\",\"default\":\"\",\"ordinal_\":4},{\"name\":\"season\",\"type\":\"string\",\"doc\":\"Content season. E.g., “Season 3” (typically applies to video content).\",\"default\":\"\",\"ordinal_\":5},{\"name\":\"url\",\"type\":\"string\",\"doc\":\"Original URL of the content, for buy-side contextualization or review.\",\"default\":\"\",\"ordinal_\":6},{\"name\":\"cat\",\"type\":{\"type\":\"array\",\"items\":\"string\"},\"doc\":\"Array of IAB content categories for the content. See Table 6.1 Content Categories.\",\"default\":[],\"ordinal_\":7},{\"name\":\"videoquality\",\"type\":{\"type\":\"int\",\"max\":255,\"min\":0},\"doc\":\"Video quality per the IAB’s classification. See Table 6.14 Video Quality.\",\"default\":0,\"ordinal_\":8},{\"name\":\"keywords\",\"type\":\"string\",\"doc\":\"Comma separated list of keywords describing the content.\",\"default\":\"\",\"ordinal_\":9},{\"name\":\"contentrating\",\"type\":\"string\",\"doc\":\"Content rating (e.g., MPAA)\",\"default\":\"\",\"ordinal_\":10},{\"name\":\"userrating\",\"type\":\"string\",\"doc\":\"User rating of the content (e.g., number of stars, likes, etc.).\",\"default\":\"\",\"ordinal_\":11},{\"name\":\"context\",\"type\":\"string\",\"doc\":\"Specifies the type of content (game, video, text, etc.). See Table 6.13 Content Context.\",\"default\":\"\",\"ordinal_\":12},{\"name\":\"livestream\",\"type\":{\"type\":\"int\",\"max\":1,\"min\":0},\"doc\":\"Is content live? E.g., live video stream, live blog. “1” means content is live. “0” means it is not live.\",\"default\":0,\"ordinal_\":13},{\"name\":\"sourcerelationship\",\"type\":{\"type\":\"int\",\"max\":1,\"min\":0},\"doc\":\"1 for “direct”; 0 for “indirect”.\",\"default\":0,\"ordinal_\":14},{\"name\":\"producer\",\"type\":{\"type\":\"record\",\"name\":\"ProducerAvro\",\"doc\":\"3.3.9 Producer Object\\nThe producer is useful when content where the ad is shown is syndicated, and may appear on a completely different publisher. The producer object itself and all of its parameters are optional, so default values are not provided. If an optional parameter is not specified, it should be considered unknown. This object is optional, but useful if the content producer is different from the site publisher.\",\"fields\":[{\"name\":\"id\",\"type\":\"string\",\"doc\":\"Content producer or originator ID. Useful if content is syndicated, and may be posted on a site using embed tags.\",\"default\":\"\",\"ordinal_\":1},{\"name\":\"name\",\"type\":\"string\",\"doc\":\"Content producer or originator name (e.g., “Warner Bros”).\",\"default\":\"\",\"ordinal_\":2},{\"name\":\"cat\",\"type\":{\"type\":\"array\",\"items\":\"string\"},\"doc\":\"Array of IAB content categories for the content producer. See Table 6.1 Content Categories.\",\"default\":[],\"ordinal_\":3},{\"name\":\"domain\",\"type\":\"string\",\"doc\":\"URL of the content producer.\",\"default\":\"\",\"ordinal_\":4}]},\"d","oc\":\"See Producer Object.\",\"default\":{},\"ordinal_\":15},{\"name\":\"len\",\"type\":{\"type\":\"int\",\"max\":4294967295,\"min\":0},\"doc\":\"Length of content (appropriate for video or audio) in seconds.\",\"default\":0,\"ordinal_\":16},{\"name\":\"qagmediarating\",\"type\":{\"type\":\"int\",\"max\":255,\"min\":0},\"doc\":\"Media rating of the content, per QAG guidelines. See Table 0 QAG Media Ratings for list of possible values.\",\"default\":0,\"ordinal_\":17},{\"name\":\"embeddable\",\"type\":{\"type\":\"int\",\"max\":1,\"min\":0},\"doc\":\"From QAG Video Addendum. If content can be embedded (such as an embeddable video player) this value should be set to “1”. If content cannot be embedded, then this should be set to “0”.\",\"default\":0,\"ordinal_\":18},{\"name\":\"language\",\"type\":\"string\",\"doc\":\"Language of the content. Use alpha-2/ISO 639-1 codes.\",\"default\":\"\",\"ordinal_\":19}]},\"doc\":\"See Content Object.\",\"default\":{},\"ordinal_\":12},{\"name\":\"keywords\",\"type\":\"string\",\"doc\":\"List of keywords describing this site in a comma separated string.\",\"default\":\"\",\"ordinal_\":13}]},\"doc\":\"See Site Object.\",\"default\":{},\"ordinal_\":3},{\"name\":\"app\",\"type\":{\"type\":\"record\",\"name\":\"AppAvro\",\"doc\":\"3.3.6 App Object\\nAn “app” object should be included if the ad supported content is part of a mobile application (as opposed to a mobile website). A bid request must not contain both an “app” object and a “site” object.\\nThe app object itself and all of its parameters are optional, so default values are not provided. If an optional parameter is not specified, it should be considered unknown. At a minimum, it’s useful to provide an App ID or bundle, but this is not strictly required.\",\"fields\":[{\"name\":\"id\",\"type\":\"string\",\"doc\":\"Application ID on the exchange.\",\"default\":\"\",\"ordinal_\":1},{\"name\":\"name\",\"type\":\"string\",\"doc\":\"Application name (may be masked at publisher’s request).\",\"default\":\"\",\"ordinal_\":2},{\"name\":\"domain\",\"type\":\"string\",\"doc\":\"Domain of the application (e.g., “mygame.foo.com”).\",\"default\":\"\",\"ordinal_\":3},{\"name\":\"cat\",\"type\":{\"type\":\"array\",\"items\":\"string\"},\"doc\":\"Array of IAB content categories for the overall application. See Table 6.1 Content Categories.\",\"default\":[],\"ordinal_\":4},{\"name\":\"sectioncat\",\"type\":{\"type\":\"array\",\"items\":\"string\"},\"doc\":\"Array of IAB content categories for the current subsection of the app. See Table 6.1 Content Categories.\",\"default\":[],\"ordinal_\":5},{\"name\":\"pagecat\",\"type\":{\"type\":\"array\",\"items\":\"string\"},\"doc\":\"Array of IAB content categories for the current page/view of the app. See Table 6.1 Content Categories.\",\"default\":[],\"ordinal_\":6},{\"name\":\"ver\",\"type\":\"string\",\"doc\":\"Application version.\",\"default\":\"\",\"ordinal_\":7},{\"name\":\"bundle\",\"type\":\"string\",\"doc\":\"Application bundle or package name (e.g., com.foo.mygame). This is intended to be a unique ID across multiple exchanges.\",\"default\":\"\",\"ordinal_\":8},{\"name\":\"privacypolicy\",\"type\":{\"type\":\"int\",\"max\":1,\"min\":0},\"doc\":\"Specifies whether the app has a privacy policy. “1” means there is a policy and “0” means there is not.\",\"default\":0,\"ordinal_\":9},{\"name\":\"paid\",\"type\":{\"type\":\"int\",\"max\":1,\"min\":0},\"doc\":\"“1” if the application is a paid version; else “0” (i.e., free).\",\"default\":0,\"ordinal_\":10},{\"name\":\"publisher\",\"type\":\"PublisherAvro\",\"doc\":\"See Publisher Object.\",\"default\":{},\"ordinal_\":11},{\"name\":\"content\",\"type\":\"ContentAvro\",\"doc\":\"See Content Object.\",\"default\":{},\"ordinal_\":12},{\"name\":\"keywords\",\"type\":\"string\",\"doc\":\"List of keywords describing this app in a comma separated string.\",\"default\":\"\",\"ordinal_\":13},{\"name\":\"storeurl\",\"type\":\"string\",\"doc\":\"For QAG 1.5 compliance, an app store URL for an installed app should be passed in the bid request.\",\"default\":\"\",\"ordinal_\":14}]},\"doc\":\"See App Object.\",\"default\":{},\"ordinal_\":4},{\"name\":\"device\",\"type\":{\"type\":\"record\",\"name\":\"DeviceAvro\",\"doc\":\"3.3.10 Device Object\\nThe “device” object provides information pertaining to the device including its hardware, platform, location, and carrier. This device can refer to a mobile handset, a desktop computer, set top box or other digital device.\\nThe device object itself and all of its parameters are optional, so default values are not provided. If an optional parameter is not specified, it should be considered unknown.\\nIn general, the most essential fields are either the IP address (to enable geo-lookup for the bidder), or providing geo information directly in the geo object.\",\"fields\":[{\"name\":\"dnt\",\"type\":{\"type\":\"int\",\"max\":1,\"min\":0},\"doc\":\"If “0”, then do not track Is set to false, if “1”, then do no track is set to true in browser.\",\"default\":0,\"ordinal_\":1},{\"name\":\"ua\",\"type\":\"string\",\"doc\":\"Browser user agent string.\",\"default\":\"\",\"ordinal_\":2},{\"name\":\"ip\",\"type\":\"string\",\"doc\":\"IPv4 address closest to device.\",\"default\":\"\",\"ordinal_\":3},{\"name\":\"geo\",\"type\":{\"type\":\"record\",\"name\":\"GeoAvro\",\"doc\":\"3.3.11 Geo Object\\nThe geo object itself and all of its parameters are optional, so default values are not provided. If an optional parameter is not specified, it should be considered unknown.\\nNote that the Geo Object may appear in one or both the Device Object and the User Object. This is intentional, since the information may be derived from either a device-oriented source (such as IP geo lookup), or by user registration information (for example provided to a publisher through a user registration). If the information is in conflict, it’s up to the bidder to determine which information to use.\",\"fields\":[{\"name\":\"lat\",\"type\":{\"type\":\"float\",\"max\":90.0,\"min\":-90.0,\"mantissa\":23},\"doc\":\"Latitude from -90 to 90. South is negative. This should only be passed if known to be accurate (For example, not the centroid of a postal code).\",\"default\":0.0,\"ordinal_\":1},{\"name\":\"lon\",\"type\":{\"type\":\"float\",\"max\":180.0,\"min\":-180.0,\"mantissa\":23},\"doc\":\"Longitude from -180 to 180. West is negative. This should only be passed if known to be accurate.\",\"default\":0.0,\"ordinal_\":2},{\"name\":\"country\",\"type\":\"string\",\"doc\":\"Country using ISO-3166-1 Alpha-3.\",\"default\":\"\",\"ordinal_\":3},{\"name\":\"region\",\"type\":\"string\",\"doc\":\"Region using ISO 3166-2.\",\"default\":\"\",\"ordinal_\":4},{\"name\":\"regionfips104\",\"type\":\"string\",\"doc\":\"Region of a country using FIPS 10-4 notation (alternative to ISO 3166-2).\",\"default\":\"\",\"ordinal_\":5},{\"name\":\"metro\",\"type\":\"string\",\"doc\":\"Pass the metro code (seehttp://code.google.com/apis/adwords/docs/appendix/metrocodes.html). Metro codes are similar to but not exactly the same as Nielsen DMAs.\",\"default\":\"\",\"ordinal_\":6},{\"name\":\"city\",\"type\":\"string\",\"doc\":\"City using United Nations Code for Trade and Transport Locations (http://www.unece.org/cefact/locode/ser vice/location.htm).\",\"default\":\"\",\"ordinal_\":7},{\"name\":\"zip\",\"type\":\"string\",\"doc\":\"Zip/postal code.\",\"default\":\"\",\"ordinal_\":8},{\"name\":\"type\",\"type\":{\"type\":\"int\",\"max\":255,\"min\":0},\"doc\":\"Indicate the source of the geo data (GPS, IP address, user provided). See Table 6.15 Location Type for a list of potential values. Type should be provided when lat/lon is provided.\",\"default\":0,\"ordinal_\":9}]},\"doc\":\"Geography as derived from the device’s location services (e.g., cell tower triangulation, GPS) or IP address. See Geo Object.\",\"default\":{},\"ordinal_\":4},{\"name\":\"didsha1\",\"type\":\"string\",\"doc\":\"SHA1 hashed device ID; IMEI when available, else MEID or ESN. OpenRTB’s preferred method for device ID hashing is SHA1.\",\"default\":\"\",\"ordinal_\":5},{\"name\":\"didmd5\",\"type\":\"string\",\"doc\":\"MD5 hashed device ID; IMEI when available, else MEID or ESN. Should be interpreted as case insensitive.\",\"default\":\"\",\"ordinal_\":6},{\"name\":\"dpidsha1\",\"type\":\"string\",\"doc\":\"SHA1 hashed platform-specific ID (e.g., Android ID or UDID for iOS). OpenRTB’s preferred method for device ID hash is SHA1.\",\"default\":\"\",\"ordinal_\":7},{\"name\":\"dpidmd5\",\"type\":\"string\",\"doc\":\"MD5 hashed platform-specific ID (e.g., Android ID or UDID for iOS). Should be interpreted as case insensitive.\",\"default\":\"\",\"ordinal_\":8},{\"name\":\"macsha1\",\"type\":\"string\",\"doc\":\"SHA1 hashed MAC address of the device.\",\"default\":\"\",\"ordinal_\":9},{\"name\":\"macmd5\",\"type\":\"string\",\"doc\":\"MD5 hashed MAC address of the device.\",\"default\":\"\",\"ordinal_\":10},{\"name\":\"ipv6\",\"type\":\"string\",\"doc\":\"IP add","ress in IPv6.\",\"default\":\"\",\"ordinal_\":11},{\"name\":\"carrier\",\"type\":\"string\",\"doc\":\"Carrier or ISP derived from the IP address. Should be specified using Mobile Network Code (MNC) http://en.wikipedia.org/wiki/Mobile_Network_Code\",\"default\":\"\",\"ordinal_\":12},{\"name\":\"language\",\"type\":\"string\",\"doc\":\"Browser language; use alpha-2/ISO 639-1 codes.\",\"default\":\"\",\"ordinal_\":13},{\"name\":\"make\",\"type\":\"string\",\"doc\":\"Device make (e.g., “Apple”).\",\"default\":\"\",\"ordinal_\":14},{\"name\":\"model\",\"type\":\"string\",\"doc\":\"Device model (e.g., “iPhone”).\",\"default\":\"\",\"ordinal_\":15},{\"name\":\"os\",\"type\":\"string\",\"doc\":\"Device operating system (e.g., “iOS”).\",\"default\":\"\",\"ordinal_\":16},{\"name\":\"osv\",\"type\":\"string\",\"doc\":\"Device operating system version (e.g., “3.1.2”).\",\"default\":\"\",\"ordinal_\":17},{\"name\":\"js\",\"type\":{\"type\":\"int\",\"max\":1,\"min\":0},\"doc\":\"“1” if the device supports JavaScript; else “0”.\",\"default\":0,\"ordinal_\":18},{\"name\":\"connectiontype\",\"type\":{\"type\":\"int\",\"max\":255,\"min\":0},\"doc\":\"Return the detected data connection type for the device. See Table 6.10 Connection Type.\",\"default\":0,\"ordinal_\":19},{\"name\":\"devicetype\",\"type\":{\"type\":\"int\",\"max\":255,\"min\":0},\"doc\":\"Return the device type being used. See Table 6.16 Device Type.\",\"default\":0,\"ordinal_\":20},{\"name\":\"flashver\",\"type\":\"string\",\"doc\":\"Return the Flash version detected.\",\"default\":\"\",\"ordinal_\":21},{\"name\":\"ifa\",\"type\":\"string\",\"doc\":\"Native identifier for advertisers; an opaque ID assigned by the device or browser for use as an advertising identifier. (e.g. Apple's IFA, Android's Advertising ID, etc)\",\"default\":\"\",\"ordinal_\":22}]},\"doc\":\"See Device Object.\",\"default\":{},\"ordinal_\":5},{\"name\":\"user\",\"type\":{\"type\":\"record\",\"name\":\"UserAvro\",\"doc\":\"3.3.12 User Object\\nThe “user” object contains information known or derived about the human user of the device. Note that the user ID is an exchange artifact (refer to the “device” object for hardware or platform derived IDs) and may be subject to rotation policies. However, this user ID must be stable long enough to serve reasonably as the basis for frequency capping.\\nThe user object itself and all of its parameters are optional, so default values are not provided. If an optional parameter is not specified, it should be considered unknown.\\nIf device ID is used as a proxy for unique user ID, use the device object.\",\"fields\":[{\"name\":\"id\",\"type\":\"string\",\"doc\":\"Unique consumer ID of this user on the exchange.\",\"default\":\"\",\"ordinal_\":1},{\"name\":\"buyeruid\",\"type\":\"string\",\"doc\":\"Buyer’s user ID for this user as mapped by exchange for the buyer. (AdGear cookie)\",\"default\":\"\",\"ordinal_\":2},{\"name\":\"yob\",\"type\":{\"type\":\"int\",\"max\":9999,\"min\":0},\"doc\":\"Year of birth as a 4-digit integer.\",\"default\":0,\"ordinal_\":3},{\"name\":\"gender\",\"type\":\"string\",\"doc\":\"Gender as “M” male, “F” female, “O” Other. (Null indicates unknown).\",\"default\":\"\",\"ordinal_\":4},{\"name\":\"keywords\",\"type\":\"string\",\"doc\":\"Comma separated list of keywords of consumer interests or intent.\",\"default\":\"\",\"ordinal_\":5},{\"name\":\"customdata\",\"type\":\"string\",\"doc\":\"If supported by the exchange, this is custom data that the bidder had stored in the exchange’s cookie. The string may be in base85 cookie safe characters, and be in any format. This may useful for storing user features. Note: Proper JSON encoding must be used to include “escaped” quotation marks.\",\"default\":\"\",\"ordinal_\":6},{\"name\":\"geo\",\"type\":\"GeoAvro\",\"doc\":\"Home geo for the user (e.g., based off of registration data); this is different from the current location of the access device (that is defined by the geo object embedded in the Device Object); see Geo Object.\",\"default\":{},\"ordinal_\":7},{\"name\":\"data\",\"type\":{\"type\":\"array\",\"items\":{\"type\":\"record\",\"name\":\"DataAvro\",\"doc\":\"3.3.13 Data Object\\nThe data and segment objects together allow data about the user to be passed to bidders in the bid request. This data may be from multiple sources (e.g., the exchange itself, third party providers) as specified by the data object ID field. A bid request can mix data objects from multiple providers.\\nThe data object itself and all of its parameters are optional, so default values are not provided. If an optional parameter is not specified, it should be considered unknown.\",\"fields\":[{\"name\":\"id\",\"type\":\"string\",\"doc\":\"Exchange specific ID for the data provider.\",\"default\":\"\",\"ordinal_\":1},{\"name\":\"name\",\"type\":\"string\",\"doc\":\"Data provider name.\",\"default\":\"\",\"ordinal_\":2},{\"name\":\"segment\",\"type\":{\"type\":\"array\",\"items\":{\"type\":\"record\",\"name\":\"SegmentAvro\",\"doc\":\"3.3.14 Segment Object\\nThe data and segment objects together allow data about the user to be passed to bidders in the bid request. Segment objects convey specific units of information from the provider identified in the parent data object.\\nThe segment object itself and all of its parameters are optional, so default values are not provided; if an optional parameter is not specified, it should be considered unknown.\",\"fields\":[{\"name\":\"id\",\"type\":\"string\",\"doc\":\"ID of a data provider’s segment applicable to the user.\",\"default\":\"\",\"ordinal_\":1},{\"name\":\"name\",\"type\":\"string\",\"doc\":\"Name of a data provider’s segment applicable to the user.\",\"default\":\"\",\"ordinal_\":2},{\"name\":\"value\",\"type\":\"string\",\"doc\":\"String representing the value of the segment. The method for transmitting this data should be negotiated offline with the data provider. For example for gender, “male”, or “female”, for age, “30-40”).\",\"default\":\"\",\"ordinal_\":3}]}},\"doc\":\"Array of segment objects.\",\"default\":[],\"ordinal_\":3}]}},\"doc\":\"See Data Object.\",\"default\":[],\"ordinal_\":8}]},\"doc\":\"See User Object.\",\"default\":{},\"ordinal_\":6},{\"name\":\"at\",\"type\":{\"type\":\"int\",\"max\":255,\"min\":0},\"doc\":\"Auction Type. If “1”, then first price auction. If “2”, then second price auction. Additional auction types can be defined as per the exchange’s business rules. Exchange specific rules should be numbered over 500.\",\"default\":2,\"ordinal_\":7},{\"name\":\"tmax\",\"type\":{\"type\":\"int\",\"max\":4294967295,\"min\":0},\"doc\":\"Maximum amount of time in milliseconds to submit a bid (e.g., 120 means the bidder has 120ms to submit a bid before the auction is complete). If this value never changes across an exchange, then the exchange can supply this information offline.\",\"default\":0,\"ordinal_\":8},{\"name\":\"wseat\",\"type\":{\"type\":\"array\",\"items\":\"string\"},\"doc\":\"Array of buyer seats allowed to bid on this auction. Seats are an optional feature of exchange. For example, [“4”,”34”,”82”,”A45”] indicates that only advertisers using these exchange seats are allowed to bid on the impressions in this auction.\",\"default\":[],\"ordinal_\":9},{\"name\":\"allimps\",\"type\":{\"type\":\"int\",\"max\":1,\"min\":0},\"doc\":\"Flag to indicate whether Exchange can verify that all impressions offered represent all of the impressions available in context (e.g., all impressions available on the web page; all impressions available for a video [pre, mid and postroll spots], etc.) to support road-blocking. A true value should only be passed if the exchange is aware of all impressions in context for the publisher. “0” means the exchange cannot verify, and “1” means that all impressions represent all impressions available.\",\"default\":0,\"ordinal_\":10},{\"name\":\"cur\",\"type\":{\"type\":\"array\",\"items\":\"string\"},\"doc\":\"Array of allowed currencies for bids on this bid request using ISO-4217 alphabetic codes. If only one currency is used by the exchange, this parameter is not required.\",\"default\":[],\"ordinal_\":11},{\"name\":\"bcat\",\"type\":{\"type\":\"array\",\"items\":\"string\"},\"doc\":\"Blocked Advertiser Categories. Note that there is no existing categorization / taxonomy of advertiser industries. However, as a substitute exchanges may decide to use IAB categories as an approximation (See Table 6.1 Content Categories)\",\"default\":[],\"ordinal_\":12},{\"name\":\"badv\",\"type\":{\"type\":\"array\",\"items\":\"string\"},\"doc\":\"Array of strings of blocked top-level domains of advertisers. For example, {“company1.com”, “company2.com”}.\",\"default\":[],\"ordinal_\":13},{\"name\":\"regs\",\"type\":{\"type\":\"record\",\"name\":\"RegulationsAvro\",\"doc\":\"3.3.15 Regulations Object\\nThe “regs” object contains any legal, governmental, or indu","stry regulations that apply to the request.\\nThe first regulation added signal whether or not the request falls under the United States Federal Trade Commission’s regulations for the United States Children’s Online Privacy Protection Act (“COPPA”). See the COPPA appendix for details.\\nThe regs object itself and all of its parameters are optional, so default values are not provided. If an optional parameter is not specified, it should be considered unknown.\",\"fields\":[{\"name\":\"coppa\",\"type\":{\"type\":\"int\",\"max\":1,\"min\":0},\"doc\":\"Flag indicating whether or not this request falls under the COPPA regulations established by the USA FTC, where 0 = no, 1 = yes.\",\"default\":0,\"ordinal_\":1}]},\"doc\":\"This object is a container for any legal, governmental or industry regulations in force for the request.\",\"default\":{},\"ordinal_\":14}]},\"default\":{},\"ordinal_\":4},{\"name\":\"response\",\"type\":{\"type\":\"record\",\"name\":\"BidResponseAvro\",\"namespace\":\"open_rtb\",\"doc\":\"4.3.1 Bid Response Object\\nThe top-level bid response object is defined below. 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 a bid on at least one impression. Other attributes are optional since an exchange may establish default values.\\nNo-Bids on all impressions should be indicated as a HTTP 204 response. For no-bids on specific impressions, the bidder should omit these from the bid response.\",\"fields\":[{\"name\":\"id\",\"type\":\"string\",\"doc\":\"ID of the bid request.\",\"default\":\"\",\"ordinal_\":1},{\"name\":\"seatbid\",\"type\":{\"type\":\"array\",\"items\":{\"type\":\"record\",\"name\":\"SeatBidAvro\",\"doc\":\"4.3.2 Seat Bid Object\\nA bid response can contain multiple “seatbid” objects, each on behalf of a different bidder seat. Since a bid request can include multiple impressions, each “seatbid” object can contain multiple bids each pertaining to a different impression on behalf of a seat. Thus, each “bid” object must include the impression ID to which it pertains as well as the bid price. The “group” attribute can be used to specify if a seat is willing to accept any impressions that it can win (default) or if it is only interested in winning any if it can win them all (i.e., all or nothing).\",\"fields\":[{\"name\":\"bid\",\"type\":{\"type\":\"array\",\"items\":{\"type\":\"record\",\"name\":\"BidAvro\",\"doc\":\"4.3.3 Bid Object\\nFor each bid, the “nurl” attribute contains the win notice URL. If the bidder wins the impression, the exchange calls this notice URL a) to inform the bidder of the win and b) to convey certain information using substitution macros (see Section 4.6 Substitution Macros).\\nThe “adomain” attribute can be used to check advertiser block list compliance. The “iurl” attribute can provide a link to an image that is representative of the campaign’s content (irrespective of whether the campaign may have multiple creatives). This enables human review for spotting inappropriate content. The “cid” attribute can be used to block ads that were previously identified as inappropriate; essentially a safety net beyond the block lists. The “crid” attribute can be helpful in reporting creative issues back to bidders. Finally, the “attr” array indicates the creative attributes that describe the ad to be served.\\nBEST PRACTICE: Substitution macros may allow a bidder to use a static notice URL for all of its bids. Thus, exchanges should offer the option of a default notice URL that can be pre- configured per bidder to reduce redundant data transfer.\",\"fields\":[{\"name\":\"id\",\"type\":\"string\",\"doc\":\"ID for the bid object chosen by the bidder for tracking and debugging purposes. Useful when multiple bids are submitted for a single impression for a given seat.\",\"default\":\"\",\"ordinal_\":1},{\"name\":\"impid\",\"type\":\"string\",\"doc\":\"ID of the impression object to which this bid applies.\",\"default\":\"\",\"ordinal_\":2},{\"name\":\"price\",\"type\":{\"type\":\"double\",\"min\":0.0},\"doc\":\"Bid price in CPM. WARNING/Best Practice Note: Although this value is a float, OpenRTB strongly suggests using integer math for accounting to avoid rounding errors.\",\"default\":0.0,\"ordinal_\":3},{\"name\":\"adid\",\"type\":\"string\",\"doc\":\"ID that references the ad to be served if the bid wins.\",\"default\":\"\",\"ordinal_\":4},{\"name\":\"nurl\",\"type\":\"string\",\"doc\":\"Win notice URL. Note that ad markup is also typically, but not necessarily, returned via this URL.\",\"default\":\"\",\"ordinal_\":5},{\"name\":\"adm\",\"type\":\"string\",\"doc\":\"Actual ad markup. XHTML if a response to a banner object, or VAST XML if a response to a video object.\",\"default\":\"\",\"ordinal_\":6},{\"name\":\"adomain\",\"type\":{\"type\":\"array\",\"items\":\"string\"},\"doc\":\"Advertiser’s primary or top-level domain for advertiser checking. This can be a list of domains if there is a rotating creative. However, exchanges may mandate that only one landing domain is allowed.\",\"default\":[],\"ordinal_\":7},{\"name\":\"lurl\",\"type\":\"string\",\"doc\":\"Sample image URL (without cache busting) for content checking.\",\"default\":\"\",\"ordinal_\":8},{\"name\":\"cid\",\"type\":\"string\",\"doc\":\"Campaign ID or similar that appears within the ad markup.\",\"default\":\"\",\"ordinal_\":9},{\"name\":\"crid\",\"type\":\"string\",\"doc\":\"Creative ID for reporting content issues or defects. This could also be used as a reference to a creative ID that is posted with an exchange.\",\"default\":\"\",\"ordinal_\":10},{\"name\":\"attr\",\"type\":{\"type\":\"array\",\"items\":{\"type\":\"int\",\"max\":255,\"min\":0}},\"doc\":\"Array of creative attributes. See Table 6.3 Creative Attributes.\",\"default\":[],\"ordinal_\":11},{\"name\":\"dealid\",\"type\":\"string\",\"doc\":\"A unique identifier for the direct deal associated with the bid. If the bid is associated and in response to a dealid in the request object it is _required_ in the response object.\",\"default\":\"\",\"ordinal_\":12},{\"name\":\"w\",\"type\":{\"type\":\"int\",\"max\":4294967295,\"min\":0},\"doc\":\"Width of the ad in pixels. If the bid request contained the wmax/hmax and wmin/hmin optional fields it is recommended that the response bid contains this field to signal the size of ad chosen.\",\"default\":0,\"ordinal_\":13},{\"name\":\"h\",\"type\":{\"type\":\"int\",\"max\":4294967295,\"min\":0},\"doc\":\"Height of the ad in pixels. If the bid request contained the wmax/hmax and wmin/hmin optional fields it is recommended that the response bid contains this field to signal the size of ad chosen.\",\"default\":0,\"ordinal_\":14}]}},\"doc\":\"Array of bid objects; each bid object relates to an imp object in the bid request. Note that, if supported by an exchange, one imp object can have many bid objects.\",\"default\":[],\"ordinal_\":1},{\"name\":\"seat\",\"type\":\"string\",\"doc\":\"ID of the bidder seat on whose behalf this bid is made.\",\"default\":\"\",\"ordinal_\":2},{\"name\":\"group\",\"type\":{\"type\":\"int\",\"max\":1,\"min\":0},\"doc\":\"“1” means impressions must be won-lost as a group; default is “0”.\",\"default\":0,\"ordinal_\":3}]}},\"doc\":\"Array of seatbid objects.\",\"default\":[],\"ordinal_\":2},{\"name\":\"bidid\",\"type\":\"string\",\"doc\":\"Bid response ID to assist tracking for bidders. This value is chosen by the bidder for cross-reference.\",\"default\":\"\",\"ordinal_\":3},{\"name\":\"cur\",\"type\":\"string\",\"doc\":\"Bid currency using ISO-4217 alphabetic codes; default is “USD”.\",\"default\":\"USD\",\"ordinal_\":4},{\"name\":\"customdata\",\"type\":\"string\",\"doc\":\"This is an optional feature, which allows a bidder to set data in the exchange’s cookie. The string may be in base85 cookie safe characters, and be in any format. This may be useful for storing user features. Note: Proper JSON encoding must be used to include “escaped” quotation marks.\",\"default\":\"\",\"ordinal_\":5},{\"name\":\"nbr\",\"type\":{\"type\":\"int\",\"max\":255,\"min\":0},\"doc\":\"Reason for not bidding. See Table 6.19 No-Bid Reason Codes.\",\"default\":0,\"ordinal_\":6}]},\"doc\":\"Bid response submitted to the real-time bidding ad exchange.\",\"default\":{},\"ordinal_\":5},{\"name\":\"properties\",\"type\":{\"type\":\"map\",\"values\":\"string\",\"sorted\":true},\"doc\":\"Log event custom properties.\",\"default\":{},\"ordinal_\":6}]}");
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy