<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">Search Ads 360 API</a> . <a href="doubleclicksearch_v2.conversion.html">conversion</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#get">get(agencyId, advertiserId, engineAccountId, endDate, rowCount, startDate, startRow, campaignId=None, criterionId=None, adGroupId=None, adId=None, x__xgafv=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=None, x__xgafv=None)</a></code></p>
<p class="firstline">Inserts a batch of new conversions into DoubleClick Search.</p>
<p class="toc_element">
  <code><a href="#update">update(body=None, x__xgafv=None)</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=None, x__xgafv=None)</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="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="get">get(agencyId, advertiserId, engineAccountId, endDate, rowCount, startDate, startRow, campaignId=None, criterionId=None, adGroupId=None, adId=None, x__xgafv=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)
  campaignId: string, Numeric ID of the campaign.
  criterionId: string, Numeric ID of the criterion.
  adGroupId: string, Numeric ID of the ad group.
  adId: string, Numeric ID of the ad.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

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

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

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

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

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

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

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

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

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

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

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

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

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

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

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

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

</body></html>