<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="doubleclicksearch_v2.html">DoubleClick Search API</a> . <a href="doubleclicksearch_v2.conversion.html">conversion</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#get">get(agencyId, advertiserId, engineAccountId, endDate, rowCount, startDate, startRow, adGroupId=None, campaignId=None, adId=None, criterionId=None)</a></code></p>
<p class="firstline">Retrieves a list of conversions from a DoubleClick Search engine account.</p>
<p class="toc_element">
  <code><a href="#insert">insert(body)</a></code></p>
<p class="firstline">Inserts a batch of new conversions into DoubleClick Search.</p>
<p class="toc_element">
  <code><a href="#patch">patch(advertiserId, agencyId, endDate, engineAccountId, rowCount, startDate, startRow, body)</a></code></p>
<p class="firstline">Updates a batch of conversions in DoubleClick Search. This method supports patch semantics.</p>
<p class="toc_element">
  <code><a href="#update">update(body)</a></code></p>
<p class="firstline">Updates a batch of conversions in DoubleClick Search.</p>
<p class="toc_element">
  <code><a href="#updateAvailability">updateAvailability(body)</a></code></p>
<p class="firstline">Updates the availabilities of a batch of floodlight activities in DoubleClick Search.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="get">get(agencyId, advertiserId, engineAccountId, endDate, rowCount, startDate, startRow, adGroupId=None, campaignId=None, adId=None, criterionId=None)</code>
  <pre>Retrieves a list of conversions from a DoubleClick Search engine account.

Args:
  agencyId: string, Numeric ID of the agency. (required)
  advertiserId: string, Numeric ID of the advertiser. (required)
  engineAccountId: string, Numeric ID of the engine account. (required)
  endDate: integer, Last date (inclusive) on which to retrieve conversions. Format is yyyymmdd. (required)
  rowCount: integer, The number of conversions to return per call. (required)
  startDate: integer, First date (inclusive) on which to retrieve conversions. Format is yyyymmdd. (required)
  startRow: integer, The 0-based starting index for retrieving conversions results. (required)
  adGroupId: string, Numeric ID of the ad group.
  campaignId: string, Numeric ID of the campaign.
  adId: string, Numeric ID of the ad.
  criterionId: string, Numeric ID of the criterion.

Returns:
  An object of the form:

    { # A list of conversions.
      "conversion": [ # The conversions being requested.
        { # A conversion containing data relevant to DoubleClick Search.
          "customDimension": [ # Custom dimensions for the conversion, which can be used to filter data in a report.
            { # A message containing the custome dimension.
              "name": "A String", # Custom dimension name.
              "value": "A String", # Custom dimension value.
            },
          ],
          "adGroupId": "A String", # DS ad group ID.
          "segmentationName": "A String", # The friendly segmentation identifier (for example, DoubleClick Search Floodlight activity name).
          "attributionModel": "A String", # Available to advertisers only after contacting DoubleClick Search customer support.
          "campaignId": "A String", # DS campaign ID.
          "revenueMicros": "A String", # The revenue amount of this TRANSACTION conversion, in micros (value multiplied by 1000000, no decimal). For example, to specify a revenue value of "10" enter "10000000" (10 million) in your request.
          "advertiserId": "A String", # DS advertiser ID.
          "countMillis": "A String", # Available to advertisers only after contacting DoubleClick Search customer support.
          "conversionTimestamp": "A String", # The time at which the conversion took place, in epoch millis UTC.
          "clickId": "A String", # DS click ID for the conversion.
          "dsConversionId": "A String", # ID that DoubleClick Search generates for each conversion.
          "currencyCode": "A String", # The currency code for the conversion's revenue. Should be in ISO 4217 alphabetic (3-char) format.
          "productCountry": "A String", # The country registered for the Merchant Center feed that contains the product. Use an ISO 3166 code to specify a country.
          "state": "A String", # The state of the conversion, that is, either ACTIVE or REMOVED. Note: state DELETED is deprecated.
          "deviceType": "A String", # The type of device on which the conversion occurred.
          "adId": "A String", # DS ad ID.
          "conversionId": "A String", # For offline conversions, advertisers provide this ID. Advertisers can specify any ID that is meaningful to them. Each conversion in a request must specify a unique ID, and the combination of ID and timestamp must be unique amongst all conversions within the advertiser.
              # For online conversions, DS copies the dsConversionId or floodlightOrderId into this property depending on the advertiser's Floodlight instructions.
          "conversionModifiedTimestamp": "A String", # The time at which the conversion was last modified, in epoch millis UTC.
          "channel": "A String", # Sales channel for the product. Acceptable values are:
              # - "local": a physical store
              # - "online": an online store
          "productId": "A String", # The product ID (SKU).
          "segmentationId": "A String", # The numeric segmentation identifier (for example, DoubleClick Search Floodlight activity ID).
          "agencyId": "A String", # DS agency ID.
          "storeId": "A String", # The ID of the local store for which the product was advertised. Applicable only when the channel is "local".
          "quantityMillis": "A String", # The quantity of this conversion, in millis.
          "criterionId": "A String", # DS criterion (keyword) ID.
          "floodlightOrderId": "A String", # The Floodlight order ID provided by the advertiser for the conversion.
          "segmentationType": "A String", # The segmentation type of this conversion (for example, FLOODLIGHT).
          "customMetric": [ # Custom metrics for the conversion.
            { # A message containing the custome metric.
              "name": "A String", # Custom metric name.
              "value": 3.14, # Custom metric numeric value.
            },
          ],
          "engineAccountId": "A String", # DS engine account ID.
          "type": "A String", # The type of the conversion, that is, either ACTION or TRANSACTION. An ACTION conversion is an action by the user that has no monetarily quantifiable value, while a TRANSACTION conversion is an action that does have a monetarily quantifiable value. Examples are email list signups (ACTION) versus ecommerce purchases (TRANSACTION).
          "productGroupId": "A String", # DS product group ID.
          "inventoryAccountId": "A String", # ID that DS generates and uses to uniquely identify the inventory account that contains the product.
          "productLanguage": "A String", # The language registered for the Merchant Center feed that contains the product. Use an ISO 639 code to specify a language.
        },
      ],
      "kind": "doubleclicksearch#conversionList", # Identifies this as a ConversionList resource. Value: the fixed string doubleclicksearch#conversionList.
    }</pre>
</div>

<div class="method">
    <code class="details" id="insert">insert(body)</code>
  <pre>Inserts a batch of new conversions into DoubleClick Search.

Args:
  body: object, The request body. (required)
    The object takes the form of:

{ # A list of conversions.
    "conversion": [ # The conversions being requested.
      { # A conversion containing data relevant to DoubleClick Search.
        "customDimension": [ # Custom dimensions for the conversion, which can be used to filter data in a report.
          { # A message containing the custome dimension.
            "name": "A String", # Custom dimension name.
            "value": "A String", # Custom dimension value.
          },
        ],
        "adGroupId": "A String", # DS ad group ID.
        "segmentationName": "A String", # The friendly segmentation identifier (for example, DoubleClick Search Floodlight activity name).
        "attributionModel": "A String", # Available to advertisers only after contacting DoubleClick Search customer support.
        "campaignId": "A String", # DS campaign ID.
        "revenueMicros": "A String", # The revenue amount of this TRANSACTION conversion, in micros (value multiplied by 1000000, no decimal). For example, to specify a revenue value of "10" enter "10000000" (10 million) in your request.
        "advertiserId": "A String", # DS advertiser ID.
        "countMillis": "A String", # Available to advertisers only after contacting DoubleClick Search customer support.
        "conversionTimestamp": "A String", # The time at which the conversion took place, in epoch millis UTC.
        "clickId": "A String", # DS click ID for the conversion.
        "dsConversionId": "A String", # ID that DoubleClick Search generates for each conversion.
        "currencyCode": "A String", # The currency code for the conversion's revenue. Should be in ISO 4217 alphabetic (3-char) format.
        "productCountry": "A String", # The country registered for the Merchant Center feed that contains the product. Use an ISO 3166 code to specify a country.
        "state": "A String", # The state of the conversion, that is, either ACTIVE or REMOVED. Note: state DELETED is deprecated.
        "deviceType": "A String", # The type of device on which the conversion occurred.
        "adId": "A String", # DS ad ID.
        "conversionId": "A String", # For offline conversions, advertisers provide this ID. Advertisers can specify any ID that is meaningful to them. Each conversion in a request must specify a unique ID, and the combination of ID and timestamp must be unique amongst all conversions within the advertiser.
            # For online conversions, DS copies the dsConversionId or floodlightOrderId into this property depending on the advertiser's Floodlight instructions.
        "conversionModifiedTimestamp": "A String", # The time at which the conversion was last modified, in epoch millis UTC.
        "channel": "A String", # Sales channel for the product. Acceptable values are:
            # - "local": a physical store
            # - "online": an online store
        "productId": "A String", # The product ID (SKU).
        "segmentationId": "A String", # The numeric segmentation identifier (for example, DoubleClick Search Floodlight activity ID).
        "agencyId": "A String", # DS agency ID.
        "storeId": "A String", # The ID of the local store for which the product was advertised. Applicable only when the channel is "local".
        "quantityMillis": "A String", # The quantity of this conversion, in millis.
        "criterionId": "A String", # DS criterion (keyword) ID.
        "floodlightOrderId": "A String", # The Floodlight order ID provided by the advertiser for the conversion.
        "segmentationType": "A String", # The segmentation type of this conversion (for example, FLOODLIGHT).
        "customMetric": [ # Custom metrics for the conversion.
          { # A message containing the custome metric.
            "name": "A String", # Custom metric name.
            "value": 3.14, # Custom metric numeric value.
          },
        ],
        "engineAccountId": "A String", # DS engine account ID.
        "type": "A String", # The type of the conversion, that is, either ACTION or TRANSACTION. An ACTION conversion is an action by the user that has no monetarily quantifiable value, while a TRANSACTION conversion is an action that does have a monetarily quantifiable value. Examples are email list signups (ACTION) versus ecommerce purchases (TRANSACTION).
        "productGroupId": "A String", # DS product group ID.
        "inventoryAccountId": "A String", # ID that DS generates and uses to uniquely identify the inventory account that contains the product.
        "productLanguage": "A String", # The language registered for the Merchant Center feed that contains the product. Use an ISO 639 code to specify a language.
      },
    ],
    "kind": "doubleclicksearch#conversionList", # Identifies this as a ConversionList resource. Value: the fixed string doubleclicksearch#conversionList.
  }


Returns:
  An object of the form:

    { # A list of conversions.
      "conversion": [ # The conversions being requested.
        { # A conversion containing data relevant to DoubleClick Search.
          "customDimension": [ # Custom dimensions for the conversion, which can be used to filter data in a report.
            { # A message containing the custome dimension.
              "name": "A String", # Custom dimension name.
              "value": "A String", # Custom dimension value.
            },
          ],
          "adGroupId": "A String", # DS ad group ID.
          "segmentationName": "A String", # The friendly segmentation identifier (for example, DoubleClick Search Floodlight activity name).
          "attributionModel": "A String", # Available to advertisers only after contacting DoubleClick Search customer support.
          "campaignId": "A String", # DS campaign ID.
          "revenueMicros": "A String", # The revenue amount of this TRANSACTION conversion, in micros (value multiplied by 1000000, no decimal). For example, to specify a revenue value of "10" enter "10000000" (10 million) in your request.
          "advertiserId": "A String", # DS advertiser ID.
          "countMillis": "A String", # Available to advertisers only after contacting DoubleClick Search customer support.
          "conversionTimestamp": "A String", # The time at which the conversion took place, in epoch millis UTC.
          "clickId": "A String", # DS click ID for the conversion.
          "dsConversionId": "A String", # ID that DoubleClick Search generates for each conversion.
          "currencyCode": "A String", # The currency code for the conversion's revenue. Should be in ISO 4217 alphabetic (3-char) format.
          "productCountry": "A String", # The country registered for the Merchant Center feed that contains the product. Use an ISO 3166 code to specify a country.
          "state": "A String", # The state of the conversion, that is, either ACTIVE or REMOVED. Note: state DELETED is deprecated.
          "deviceType": "A String", # The type of device on which the conversion occurred.
          "adId": "A String", # DS ad ID.
          "conversionId": "A String", # For offline conversions, advertisers provide this ID. Advertisers can specify any ID that is meaningful to them. Each conversion in a request must specify a unique ID, and the combination of ID and timestamp must be unique amongst all conversions within the advertiser.
              # For online conversions, DS copies the dsConversionId or floodlightOrderId into this property depending on the advertiser's Floodlight instructions.
          "conversionModifiedTimestamp": "A String", # The time at which the conversion was last modified, in epoch millis UTC.
          "channel": "A String", # Sales channel for the product. Acceptable values are:
              # - "local": a physical store
              # - "online": an online store
          "productId": "A String", # The product ID (SKU).
          "segmentationId": "A String", # The numeric segmentation identifier (for example, DoubleClick Search Floodlight activity ID).
          "agencyId": "A String", # DS agency ID.
          "storeId": "A String", # The ID of the local store for which the product was advertised. Applicable only when the channel is "local".
          "quantityMillis": "A String", # The quantity of this conversion, in millis.
          "criterionId": "A String", # DS criterion (keyword) ID.
          "floodlightOrderId": "A String", # The Floodlight order ID provided by the advertiser for the conversion.
          "segmentationType": "A String", # The segmentation type of this conversion (for example, FLOODLIGHT).
          "customMetric": [ # Custom metrics for the conversion.
            { # A message containing the custome metric.
              "name": "A String", # Custom metric name.
              "value": 3.14, # Custom metric numeric value.
            },
          ],
          "engineAccountId": "A String", # DS engine account ID.
          "type": "A String", # The type of the conversion, that is, either ACTION or TRANSACTION. An ACTION conversion is an action by the user that has no monetarily quantifiable value, while a TRANSACTION conversion is an action that does have a monetarily quantifiable value. Examples are email list signups (ACTION) versus ecommerce purchases (TRANSACTION).
          "productGroupId": "A String", # DS product group ID.
          "inventoryAccountId": "A String", # ID that DS generates and uses to uniquely identify the inventory account that contains the product.
          "productLanguage": "A String", # The language registered for the Merchant Center feed that contains the product. Use an ISO 639 code to specify a language.
        },
      ],
      "kind": "doubleclicksearch#conversionList", # Identifies this as a ConversionList resource. Value: the fixed string doubleclicksearch#conversionList.
    }</pre>
</div>

<div class="method">
    <code class="details" id="patch">patch(advertiserId, agencyId, endDate, engineAccountId, rowCount, startDate, startRow, body)</code>
  <pre>Updates a batch of conversions in DoubleClick Search. This method supports patch semantics.

Args:
  advertiserId: string, Numeric ID of the advertiser. (required)
  agencyId: string, Numeric ID of the agency. (required)
  endDate: integer, Last date (inclusive) on which to retrieve conversions. Format is yyyymmdd. (required)
  engineAccountId: string, Numeric ID of the engine account. (required)
  rowCount: integer, The number of conversions to return per call. (required)
  startDate: integer, First date (inclusive) on which to retrieve conversions. Format is yyyymmdd. (required)
  startRow: integer, The 0-based starting index for retrieving conversions results. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # A list of conversions.
    "conversion": [ # The conversions being requested.
      { # A conversion containing data relevant to DoubleClick Search.
        "customDimension": [ # Custom dimensions for the conversion, which can be used to filter data in a report.
          { # A message containing the custome dimension.
            "name": "A String", # Custom dimension name.
            "value": "A String", # Custom dimension value.
          },
        ],
        "adGroupId": "A String", # DS ad group ID.
        "segmentationName": "A String", # The friendly segmentation identifier (for example, DoubleClick Search Floodlight activity name).
        "attributionModel": "A String", # Available to advertisers only after contacting DoubleClick Search customer support.
        "campaignId": "A String", # DS campaign ID.
        "revenueMicros": "A String", # The revenue amount of this TRANSACTION conversion, in micros (value multiplied by 1000000, no decimal). For example, to specify a revenue value of "10" enter "10000000" (10 million) in your request.
        "advertiserId": "A String", # DS advertiser ID.
        "countMillis": "A String", # Available to advertisers only after contacting DoubleClick Search customer support.
        "conversionTimestamp": "A String", # The time at which the conversion took place, in epoch millis UTC.
        "clickId": "A String", # DS click ID for the conversion.
        "dsConversionId": "A String", # ID that DoubleClick Search generates for each conversion.
        "currencyCode": "A String", # The currency code for the conversion's revenue. Should be in ISO 4217 alphabetic (3-char) format.
        "productCountry": "A String", # The country registered for the Merchant Center feed that contains the product. Use an ISO 3166 code to specify a country.
        "state": "A String", # The state of the conversion, that is, either ACTIVE or REMOVED. Note: state DELETED is deprecated.
        "deviceType": "A String", # The type of device on which the conversion occurred.
        "adId": "A String", # DS ad ID.
        "conversionId": "A String", # For offline conversions, advertisers provide this ID. Advertisers can specify any ID that is meaningful to them. Each conversion in a request must specify a unique ID, and the combination of ID and timestamp must be unique amongst all conversions within the advertiser.
            # For online conversions, DS copies the dsConversionId or floodlightOrderId into this property depending on the advertiser's Floodlight instructions.
        "conversionModifiedTimestamp": "A String", # The time at which the conversion was last modified, in epoch millis UTC.
        "channel": "A String", # Sales channel for the product. Acceptable values are:
            # - "local": a physical store
            # - "online": an online store
        "productId": "A String", # The product ID (SKU).
        "segmentationId": "A String", # The numeric segmentation identifier (for example, DoubleClick Search Floodlight activity ID).
        "agencyId": "A String", # DS agency ID.
        "storeId": "A String", # The ID of the local store for which the product was advertised. Applicable only when the channel is "local".
        "quantityMillis": "A String", # The quantity of this conversion, in millis.
        "criterionId": "A String", # DS criterion (keyword) ID.
        "floodlightOrderId": "A String", # The Floodlight order ID provided by the advertiser for the conversion.
        "segmentationType": "A String", # The segmentation type of this conversion (for example, FLOODLIGHT).
        "customMetric": [ # Custom metrics for the conversion.
          { # A message containing the custome metric.
            "name": "A String", # Custom metric name.
            "value": 3.14, # Custom metric numeric value.
          },
        ],
        "engineAccountId": "A String", # DS engine account ID.
        "type": "A String", # The type of the conversion, that is, either ACTION or TRANSACTION. An ACTION conversion is an action by the user that has no monetarily quantifiable value, while a TRANSACTION conversion is an action that does have a monetarily quantifiable value. Examples are email list signups (ACTION) versus ecommerce purchases (TRANSACTION).
        "productGroupId": "A String", # DS product group ID.
        "inventoryAccountId": "A String", # ID that DS generates and uses to uniquely identify the inventory account that contains the product.
        "productLanguage": "A String", # The language registered for the Merchant Center feed that contains the product. Use an ISO 639 code to specify a language.
      },
    ],
    "kind": "doubleclicksearch#conversionList", # Identifies this as a ConversionList resource. Value: the fixed string doubleclicksearch#conversionList.
  }


Returns:
  An object of the form:

    { # A list of conversions.
      "conversion": [ # The conversions being requested.
        { # A conversion containing data relevant to DoubleClick Search.
          "customDimension": [ # Custom dimensions for the conversion, which can be used to filter data in a report.
            { # A message containing the custome dimension.
              "name": "A String", # Custom dimension name.
              "value": "A String", # Custom dimension value.
            },
          ],
          "adGroupId": "A String", # DS ad group ID.
          "segmentationName": "A String", # The friendly segmentation identifier (for example, DoubleClick Search Floodlight activity name).
          "attributionModel": "A String", # Available to advertisers only after contacting DoubleClick Search customer support.
          "campaignId": "A String", # DS campaign ID.
          "revenueMicros": "A String", # The revenue amount of this TRANSACTION conversion, in micros (value multiplied by 1000000, no decimal). For example, to specify a revenue value of "10" enter "10000000" (10 million) in your request.
          "advertiserId": "A String", # DS advertiser ID.
          "countMillis": "A String", # Available to advertisers only after contacting DoubleClick Search customer support.
          "conversionTimestamp": "A String", # The time at which the conversion took place, in epoch millis UTC.
          "clickId": "A String", # DS click ID for the conversion.
          "dsConversionId": "A String", # ID that DoubleClick Search generates for each conversion.
          "currencyCode": "A String", # The currency code for the conversion's revenue. Should be in ISO 4217 alphabetic (3-char) format.
          "productCountry": "A String", # The country registered for the Merchant Center feed that contains the product. Use an ISO 3166 code to specify a country.
          "state": "A String", # The state of the conversion, that is, either ACTIVE or REMOVED. Note: state DELETED is deprecated.
          "deviceType": "A String", # The type of device on which the conversion occurred.
          "adId": "A String", # DS ad ID.
          "conversionId": "A String", # For offline conversions, advertisers provide this ID. Advertisers can specify any ID that is meaningful to them. Each conversion in a request must specify a unique ID, and the combination of ID and timestamp must be unique amongst all conversions within the advertiser.
              # For online conversions, DS copies the dsConversionId or floodlightOrderId into this property depending on the advertiser's Floodlight instructions.
          "conversionModifiedTimestamp": "A String", # The time at which the conversion was last modified, in epoch millis UTC.
          "channel": "A String", # Sales channel for the product. Acceptable values are:
              # - "local": a physical store
              # - "online": an online store
          "productId": "A String", # The product ID (SKU).
          "segmentationId": "A String", # The numeric segmentation identifier (for example, DoubleClick Search Floodlight activity ID).
          "agencyId": "A String", # DS agency ID.
          "storeId": "A String", # The ID of the local store for which the product was advertised. Applicable only when the channel is "local".
          "quantityMillis": "A String", # The quantity of this conversion, in millis.
          "criterionId": "A String", # DS criterion (keyword) ID.
          "floodlightOrderId": "A String", # The Floodlight order ID provided by the advertiser for the conversion.
          "segmentationType": "A String", # The segmentation type of this conversion (for example, FLOODLIGHT).
          "customMetric": [ # Custom metrics for the conversion.
            { # A message containing the custome metric.
              "name": "A String", # Custom metric name.
              "value": 3.14, # Custom metric numeric value.
            },
          ],
          "engineAccountId": "A String", # DS engine account ID.
          "type": "A String", # The type of the conversion, that is, either ACTION or TRANSACTION. An ACTION conversion is an action by the user that has no monetarily quantifiable value, while a TRANSACTION conversion is an action that does have a monetarily quantifiable value. Examples are email list signups (ACTION) versus ecommerce purchases (TRANSACTION).
          "productGroupId": "A String", # DS product group ID.
          "inventoryAccountId": "A String", # ID that DS generates and uses to uniquely identify the inventory account that contains the product.
          "productLanguage": "A String", # The language registered for the Merchant Center feed that contains the product. Use an ISO 639 code to specify a language.
        },
      ],
      "kind": "doubleclicksearch#conversionList", # Identifies this as a ConversionList resource. Value: the fixed string doubleclicksearch#conversionList.
    }</pre>
</div>

<div class="method">
    <code class="details" id="update">update(body)</code>
  <pre>Updates a batch of conversions in DoubleClick Search.

Args:
  body: object, The request body. (required)
    The object takes the form of:

{ # A list of conversions.
    "conversion": [ # The conversions being requested.
      { # A conversion containing data relevant to DoubleClick Search.
        "customDimension": [ # Custom dimensions for the conversion, which can be used to filter data in a report.
          { # A message containing the custome dimension.
            "name": "A String", # Custom dimension name.
            "value": "A String", # Custom dimension value.
          },
        ],
        "adGroupId": "A String", # DS ad group ID.
        "segmentationName": "A String", # The friendly segmentation identifier (for example, DoubleClick Search Floodlight activity name).
        "attributionModel": "A String", # Available to advertisers only after contacting DoubleClick Search customer support.
        "campaignId": "A String", # DS campaign ID.
        "revenueMicros": "A String", # The revenue amount of this TRANSACTION conversion, in micros (value multiplied by 1000000, no decimal). For example, to specify a revenue value of "10" enter "10000000" (10 million) in your request.
        "advertiserId": "A String", # DS advertiser ID.
        "countMillis": "A String", # Available to advertisers only after contacting DoubleClick Search customer support.
        "conversionTimestamp": "A String", # The time at which the conversion took place, in epoch millis UTC.
        "clickId": "A String", # DS click ID for the conversion.
        "dsConversionId": "A String", # ID that DoubleClick Search generates for each conversion.
        "currencyCode": "A String", # The currency code for the conversion's revenue. Should be in ISO 4217 alphabetic (3-char) format.
        "productCountry": "A String", # The country registered for the Merchant Center feed that contains the product. Use an ISO 3166 code to specify a country.
        "state": "A String", # The state of the conversion, that is, either ACTIVE or REMOVED. Note: state DELETED is deprecated.
        "deviceType": "A String", # The type of device on which the conversion occurred.
        "adId": "A String", # DS ad ID.
        "conversionId": "A String", # For offline conversions, advertisers provide this ID. Advertisers can specify any ID that is meaningful to them. Each conversion in a request must specify a unique ID, and the combination of ID and timestamp must be unique amongst all conversions within the advertiser.
            # For online conversions, DS copies the dsConversionId or floodlightOrderId into this property depending on the advertiser's Floodlight instructions.
        "conversionModifiedTimestamp": "A String", # The time at which the conversion was last modified, in epoch millis UTC.
        "channel": "A String", # Sales channel for the product. Acceptable values are:
            # - "local": a physical store
            # - "online": an online store
        "productId": "A String", # The product ID (SKU).
        "segmentationId": "A String", # The numeric segmentation identifier (for example, DoubleClick Search Floodlight activity ID).
        "agencyId": "A String", # DS agency ID.
        "storeId": "A String", # The ID of the local store for which the product was advertised. Applicable only when the channel is "local".
        "quantityMillis": "A String", # The quantity of this conversion, in millis.
        "criterionId": "A String", # DS criterion (keyword) ID.
        "floodlightOrderId": "A String", # The Floodlight order ID provided by the advertiser for the conversion.
        "segmentationType": "A String", # The segmentation type of this conversion (for example, FLOODLIGHT).
        "customMetric": [ # Custom metrics for the conversion.
          { # A message containing the custome metric.
            "name": "A String", # Custom metric name.
            "value": 3.14, # Custom metric numeric value.
          },
        ],
        "engineAccountId": "A String", # DS engine account ID.
        "type": "A String", # The type of the conversion, that is, either ACTION or TRANSACTION. An ACTION conversion is an action by the user that has no monetarily quantifiable value, while a TRANSACTION conversion is an action that does have a monetarily quantifiable value. Examples are email list signups (ACTION) versus ecommerce purchases (TRANSACTION).
        "productGroupId": "A String", # DS product group ID.
        "inventoryAccountId": "A String", # ID that DS generates and uses to uniquely identify the inventory account that contains the product.
        "productLanguage": "A String", # The language registered for the Merchant Center feed that contains the product. Use an ISO 639 code to specify a language.
      },
    ],
    "kind": "doubleclicksearch#conversionList", # Identifies this as a ConversionList resource. Value: the fixed string doubleclicksearch#conversionList.
  }


Returns:
  An object of the form:

    { # A list of conversions.
      "conversion": [ # The conversions being requested.
        { # A conversion containing data relevant to DoubleClick Search.
          "customDimension": [ # Custom dimensions for the conversion, which can be used to filter data in a report.
            { # A message containing the custome dimension.
              "name": "A String", # Custom dimension name.
              "value": "A String", # Custom dimension value.
            },
          ],
          "adGroupId": "A String", # DS ad group ID.
          "segmentationName": "A String", # The friendly segmentation identifier (for example, DoubleClick Search Floodlight activity name).
          "attributionModel": "A String", # Available to advertisers only after contacting DoubleClick Search customer support.
          "campaignId": "A String", # DS campaign ID.
          "revenueMicros": "A String", # The revenue amount of this TRANSACTION conversion, in micros (value multiplied by 1000000, no decimal). For example, to specify a revenue value of "10" enter "10000000" (10 million) in your request.
          "advertiserId": "A String", # DS advertiser ID.
          "countMillis": "A String", # Available to advertisers only after contacting DoubleClick Search customer support.
          "conversionTimestamp": "A String", # The time at which the conversion took place, in epoch millis UTC.
          "clickId": "A String", # DS click ID for the conversion.
          "dsConversionId": "A String", # ID that DoubleClick Search generates for each conversion.
          "currencyCode": "A String", # The currency code for the conversion's revenue. Should be in ISO 4217 alphabetic (3-char) format.
          "productCountry": "A String", # The country registered for the Merchant Center feed that contains the product. Use an ISO 3166 code to specify a country.
          "state": "A String", # The state of the conversion, that is, either ACTIVE or REMOVED. Note: state DELETED is deprecated.
          "deviceType": "A String", # The type of device on which the conversion occurred.
          "adId": "A String", # DS ad ID.
          "conversionId": "A String", # For offline conversions, advertisers provide this ID. Advertisers can specify any ID that is meaningful to them. Each conversion in a request must specify a unique ID, and the combination of ID and timestamp must be unique amongst all conversions within the advertiser.
              # For online conversions, DS copies the dsConversionId or floodlightOrderId into this property depending on the advertiser's Floodlight instructions.
          "conversionModifiedTimestamp": "A String", # The time at which the conversion was last modified, in epoch millis UTC.
          "channel": "A String", # Sales channel for the product. Acceptable values are:
              # - "local": a physical store
              # - "online": an online store
          "productId": "A String", # The product ID (SKU).
          "segmentationId": "A String", # The numeric segmentation identifier (for example, DoubleClick Search Floodlight activity ID).
          "agencyId": "A String", # DS agency ID.
          "storeId": "A String", # The ID of the local store for which the product was advertised. Applicable only when the channel is "local".
          "quantityMillis": "A String", # The quantity of this conversion, in millis.
          "criterionId": "A String", # DS criterion (keyword) ID.
          "floodlightOrderId": "A String", # The Floodlight order ID provided by the advertiser for the conversion.
          "segmentationType": "A String", # The segmentation type of this conversion (for example, FLOODLIGHT).
          "customMetric": [ # Custom metrics for the conversion.
            { # A message containing the custome metric.
              "name": "A String", # Custom metric name.
              "value": 3.14, # Custom metric numeric value.
            },
          ],
          "engineAccountId": "A String", # DS engine account ID.
          "type": "A String", # The type of the conversion, that is, either ACTION or TRANSACTION. An ACTION conversion is an action by the user that has no monetarily quantifiable value, while a TRANSACTION conversion is an action that does have a monetarily quantifiable value. Examples are email list signups (ACTION) versus ecommerce purchases (TRANSACTION).
          "productGroupId": "A String", # DS product group ID.
          "inventoryAccountId": "A String", # ID that DS generates and uses to uniquely identify the inventory account that contains the product.
          "productLanguage": "A String", # The language registered for the Merchant Center feed that contains the product. Use an ISO 639 code to specify a language.
        },
      ],
      "kind": "doubleclicksearch#conversionList", # Identifies this as a ConversionList resource. Value: the fixed string doubleclicksearch#conversionList.
    }</pre>
</div>

<div class="method">
    <code class="details" id="updateAvailability">updateAvailability(body)</code>
  <pre>Updates the availabilities of a batch of floodlight activities in DoubleClick Search.

Args:
  body: object, The request body. (required)
    The object takes the form of:

{ # The request to update availability.
    "availabilities": [ # The availabilities being requested.
      { # A message containing availability data relevant to DoubleClick Search.
        "segmentationId": "A String", # The numeric segmentation identifier (for example, DoubleClick Search Floodlight activity ID).
        "agencyId": "A String", # DS agency ID.
        "segmentationName": "A String", # The friendly segmentation identifier (for example, DoubleClick Search Floodlight activity name).
        "availabilityTimestamp": "A String", # The time by which all conversions have been uploaded, in epoch millis UTC.
        "advertiserId": "A String", # DS advertiser ID.
        "segmentationType": "A String", # The segmentation type that this availability is for (its default value is FLOODLIGHT).
      },
    ],
  }


Returns:
  An object of the form:

    { # The response to a update availability request.
    "availabilities": [ # The availabilities being returned.
      { # A message containing availability data relevant to DoubleClick Search.
        "segmentationId": "A String", # The numeric segmentation identifier (for example, DoubleClick Search Floodlight activity ID).
        "agencyId": "A String", # DS agency ID.
        "segmentationName": "A String", # The friendly segmentation identifier (for example, DoubleClick Search Floodlight activity name).
        "availabilityTimestamp": "A String", # The time by which all conversions have been uploaded, in epoch millis UTC.
        "advertiserId": "A String", # DS advertiser ID.
        "segmentationType": "A String", # The segmentation type that this availability is for (its default value is FLOODLIGHT).
      },
    ],
  }</pre>
</div>

</body></html>