<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.reports.html">reports</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="#generate">generate(body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Generates and returns a report immediately.</p>
<p class="toc_element">
  <code><a href="#get">get(reportId, x__xgafv=None)</a></code></p>
<p class="firstline">Polls for the status of a report request.</p>
<p class="toc_element">
  <code><a href="#getFile">getFile(reportId, reportFragment, x__xgafv=None)</a></code></p>
<p class="firstline">Downloads a report file encoded in UTF-8.</p>
<p class="toc_element">
  <code><a href="#getFile_media">getFile_media(reportId, reportFragment, x__xgafv=None)</a></code></p>
<p class="firstline">Downloads a report file encoded in UTF-8.</p>
<p class="toc_element">
  <code><a href="#request">request(body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Inserts a report request into the reporting system.</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="generate">generate(body=None, x__xgafv=None)</code>
  <pre>Generates and returns a report immediately.

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

{ # A request object used to create a DoubleClick Search report.
  &quot;columns&quot;: [ # The columns to include in the report. This includes both DoubleClick Search columns and saved columns. For DoubleClick Search columns, only the `columnName` parameter is required. For saved columns only the `savedColumnName` parameter is required. Both `columnName` and `savedColumnName` cannot be set in the same stanza.\ The maximum number of columns per request is 300.
    { # A request object used to create a DoubleClick Search report.
      &quot;columnName&quot;: &quot;A String&quot;, # Name of a DoubleClick Search column to include in the report.
      &quot;customDimensionName&quot;: &quot;A String&quot;, # Segments a report by a custom dimension. The report must be scoped to an advertiser or lower, and the custom dimension must already be set up in DoubleClick Search. The custom dimension name, which appears in DoubleClick Search, is case sensitive.\ If used in a conversion report, returns the value of the specified custom dimension for the given conversion, if set. This column does not segment the conversion report.
      &quot;customMetricName&quot;: &quot;A String&quot;, # Name of a custom metric to include in the report. The report must be scoped to an advertiser or lower, and the custom metric must already be set up in DoubleClick Search. The custom metric name, which appears in DoubleClick Search, is case sensitive.
      &quot;endDate&quot;: &quot;A String&quot;, # Inclusive day in YYYY-MM-DD format. When provided, this overrides the overall time range of the report for this column only. Must be provided together with `startDate`.
      &quot;groupByColumn&quot;: True or False, # Synchronous report only. Set to `true` to group by this column. Defaults to `false`.
      &quot;headerText&quot;: &quot;A String&quot;, # Text used to identify this column in the report output; defaults to `columnName` or `savedColumnName` when not specified. This can be used to prevent collisions between DoubleClick Search columns and saved columns with the same name.
      &quot;platformSource&quot;: &quot;A String&quot;, # The platform that is used to provide data for the custom dimension. Acceptable values are &quot;floodlight&quot;.
      &quot;productReportPerspective&quot;: &quot;A String&quot;, # Returns metrics only for a specific type of product activity. Accepted values are: - &quot;`sold`&quot;: returns metrics only for products that were sold - &quot;`advertised`&quot;: returns metrics only for products that were advertised in a Shopping campaign, and that might or might not have been sold
      &quot;savedColumnName&quot;: &quot;A String&quot;, # Name of a saved column to include in the report. The report must be scoped at advertiser or lower, and this saved column must already be created in the DoubleClick Search UI.
      &quot;startDate&quot;: &quot;A String&quot;, # Inclusive date in YYYY-MM-DD format. When provided, this overrides the overall time range of the report for this column only. Must be provided together with `endDate`.
    },
  ],
  &quot;downloadFormat&quot;: &quot;A String&quot;, # Format that the report should be returned in. Currently `csv` or `tsv` is supported.
  &quot;filters&quot;: [ # A list of filters to be applied to the report.\ The maximum number of filters per request is 300.
    {
      &quot;column&quot;: { # A request object used to create a DoubleClick Search report. # Column to perform the filter on. This can be a DoubleClick Search column or a saved column.
        &quot;columnName&quot;: &quot;A String&quot;, # Name of a DoubleClick Search column to include in the report.
        &quot;customDimensionName&quot;: &quot;A String&quot;, # Segments a report by a custom dimension. The report must be scoped to an advertiser or lower, and the custom dimension must already be set up in DoubleClick Search. The custom dimension name, which appears in DoubleClick Search, is case sensitive.\ If used in a conversion report, returns the value of the specified custom dimension for the given conversion, if set. This column does not segment the conversion report.
        &quot;customMetricName&quot;: &quot;A String&quot;, # Name of a custom metric to include in the report. The report must be scoped to an advertiser or lower, and the custom metric must already be set up in DoubleClick Search. The custom metric name, which appears in DoubleClick Search, is case sensitive.
        &quot;endDate&quot;: &quot;A String&quot;, # Inclusive day in YYYY-MM-DD format. When provided, this overrides the overall time range of the report for this column only. Must be provided together with `startDate`.
        &quot;groupByColumn&quot;: True or False, # Synchronous report only. Set to `true` to group by this column. Defaults to `false`.
        &quot;headerText&quot;: &quot;A String&quot;, # Text used to identify this column in the report output; defaults to `columnName` or `savedColumnName` when not specified. This can be used to prevent collisions between DoubleClick Search columns and saved columns with the same name.
        &quot;platformSource&quot;: &quot;A String&quot;, # The platform that is used to provide data for the custom dimension. Acceptable values are &quot;floodlight&quot;.
        &quot;productReportPerspective&quot;: &quot;A String&quot;, # Returns metrics only for a specific type of product activity. Accepted values are: - &quot;`sold`&quot;: returns metrics only for products that were sold - &quot;`advertised`&quot;: returns metrics only for products that were advertised in a Shopping campaign, and that might or might not have been sold
        &quot;savedColumnName&quot;: &quot;A String&quot;, # Name of a saved column to include in the report. The report must be scoped at advertiser or lower, and this saved column must already be created in the DoubleClick Search UI.
        &quot;startDate&quot;: &quot;A String&quot;, # Inclusive date in YYYY-MM-DD format. When provided, this overrides the overall time range of the report for this column only. Must be provided together with `endDate`.
      },
      &quot;operator&quot;: &quot;A String&quot;, # Operator to use in the filter. See the filter reference for a list of available operators.
      &quot;values&quot;: [ # A list of values to filter the column value against.\ The maximum number of filter values per request is 300.
        &quot;&quot;,
      ],
    },
  ],
  &quot;includeDeletedEntities&quot;: True or False, # Determines if removed entities should be included in the report. Defaults to `false`. Deprecated, please use `includeRemovedEntities` instead.
  &quot;includeRemovedEntities&quot;: True or False, # Determines if removed entities should be included in the report. Defaults to `false`.
  &quot;maxRowsPerFile&quot;: 42, # Asynchronous report only. The maximum number of rows per report file. A large report is split into many files based on this field. Acceptable values are `1000000` to `100000000`, inclusive.
  &quot;orderBy&quot;: [ # Synchronous report only. A list of columns and directions defining sorting to be performed on the report rows.\ The maximum number of orderings per request is 300.
    {
      &quot;column&quot;: { # A request object used to create a DoubleClick Search report. # Column to perform the sort on. This can be a DoubleClick Search-defined column or a saved column.
        &quot;columnName&quot;: &quot;A String&quot;, # Name of a DoubleClick Search column to include in the report.
        &quot;customDimensionName&quot;: &quot;A String&quot;, # Segments a report by a custom dimension. The report must be scoped to an advertiser or lower, and the custom dimension must already be set up in DoubleClick Search. The custom dimension name, which appears in DoubleClick Search, is case sensitive.\ If used in a conversion report, returns the value of the specified custom dimension for the given conversion, if set. This column does not segment the conversion report.
        &quot;customMetricName&quot;: &quot;A String&quot;, # Name of a custom metric to include in the report. The report must be scoped to an advertiser or lower, and the custom metric must already be set up in DoubleClick Search. The custom metric name, which appears in DoubleClick Search, is case sensitive.
        &quot;endDate&quot;: &quot;A String&quot;, # Inclusive day in YYYY-MM-DD format. When provided, this overrides the overall time range of the report for this column only. Must be provided together with `startDate`.
        &quot;groupByColumn&quot;: True or False, # Synchronous report only. Set to `true` to group by this column. Defaults to `false`.
        &quot;headerText&quot;: &quot;A String&quot;, # Text used to identify this column in the report output; defaults to `columnName` or `savedColumnName` when not specified. This can be used to prevent collisions between DoubleClick Search columns and saved columns with the same name.
        &quot;platformSource&quot;: &quot;A String&quot;, # The platform that is used to provide data for the custom dimension. Acceptable values are &quot;floodlight&quot;.
        &quot;productReportPerspective&quot;: &quot;A String&quot;, # Returns metrics only for a specific type of product activity. Accepted values are: - &quot;`sold`&quot;: returns metrics only for products that were sold - &quot;`advertised`&quot;: returns metrics only for products that were advertised in a Shopping campaign, and that might or might not have been sold
        &quot;savedColumnName&quot;: &quot;A String&quot;, # Name of a saved column to include in the report. The report must be scoped at advertiser or lower, and this saved column must already be created in the DoubleClick Search UI.
        &quot;startDate&quot;: &quot;A String&quot;, # Inclusive date in YYYY-MM-DD format. When provided, this overrides the overall time range of the report for this column only. Must be provided together with `endDate`.
      },
      &quot;sortOrder&quot;: &quot;A String&quot;, # The sort direction, which is either `ascending` or `descending`.
    },
  ],
  &quot;reportScope&quot;: { # The reportScope is a set of IDs that are used to determine which subset of entities will be returned in the report. The full lineage of IDs from the lowest scoped level desired up through agency is required.
    &quot;adGroupId&quot;: &quot;A String&quot;, # DS ad group ID.
    &quot;adId&quot;: &quot;A String&quot;, # DS ad ID.
    &quot;advertiserId&quot;: &quot;A String&quot;, # DS advertiser ID.
    &quot;agencyId&quot;: &quot;A String&quot;, # DS agency ID.
    &quot;campaignId&quot;: &quot;A String&quot;, # DS campaign ID.
    &quot;engineAccountId&quot;: &quot;A String&quot;, # DS engine account ID.
    &quot;keywordId&quot;: &quot;A String&quot;, # DS keyword ID.
  },
  &quot;reportType&quot;: &quot;A String&quot;, # Determines the type of rows that are returned in the report. For example, if you specify `reportType: keyword`, each row in the report will contain data about a keyword. See the [Types of Reports](/search-ads/v2/report-types/) reference for the columns that are available for each type.
  &quot;rowCount&quot;: 42, # Synchronous report only. The maximum number of rows to return; additional rows are dropped. Acceptable values are `0` to `10000`, inclusive. Defaults to `10000`.
  &quot;startRow&quot;: 42, # Synchronous report only. Zero-based index of the first row to return. Acceptable values are `0` to `50000`, inclusive. Defaults to `0`.
  &quot;statisticsCurrency&quot;: &quot;A String&quot;, # Specifies the currency in which monetary will be returned. Possible values are: `usd`, `agency` (valid if the report is scoped to agency or lower), `advertiser` (valid if the report is scoped to * advertiser or lower), or `account` (valid if the report is scoped to engine account or lower).
  &quot;timeRange&quot;: { # If metrics are requested in a report, this argument will be used to restrict the metrics to a specific time range.
    &quot;changedAttributesSinceTimestamp&quot;: &quot;A String&quot;, # Inclusive UTC timestamp in RFC format, e.g., `2013-07-16T10:16:23.555Z`. See additional references on how changed attribute reports work.
    &quot;changedMetricsSinceTimestamp&quot;: &quot;A String&quot;, # Inclusive UTC timestamp in RFC format, e.g., `2013-07-16T10:16:23.555Z`. See additional references on how changed metrics reports work.
    &quot;endDate&quot;: &quot;A String&quot;, # Inclusive date in YYYY-MM-DD format.
    &quot;startDate&quot;: &quot;A String&quot;, # Inclusive date in YYYY-MM-DD format.
  },
  &quot;verifySingleTimeZone&quot;: True or False, # If `true`, the report would only be created if all the requested stat data are sourced from a single timezone. Defaults to `false`.
}

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

Returns:
  An object of the form:

    { # A DoubleClick Search report. This object contains the report request, some report metadata such as currency code, and the generated report rows or report files.
  &quot;files&quot;: [ # Asynchronous report only. Contains a list of generated report files once the report has successfully completed.
    {
      &quot;byteCount&quot;: &quot;A String&quot;, # The size of this report file in bytes.
      &quot;url&quot;: &quot;A String&quot;, # Use this url to download the report file.
    },
  ],
  &quot;id&quot;: &quot;A String&quot;, # Asynchronous report only. Id of the report.
  &quot;isReportReady&quot;: True or False, # Asynchronous report only. True if and only if the report has completed successfully and the report files are ready to be downloaded.
  &quot;kind&quot;: &quot;A String&quot;, # Identifies this as a Report resource. Value: the fixed string `doubleclicksearch#report`.
  &quot;request&quot;: { # A request object used to create a DoubleClick Search report. # The request that created the report. Optional fields not specified in the original request are filled with default values.
    &quot;columns&quot;: [ # The columns to include in the report. This includes both DoubleClick Search columns and saved columns. For DoubleClick Search columns, only the `columnName` parameter is required. For saved columns only the `savedColumnName` parameter is required. Both `columnName` and `savedColumnName` cannot be set in the same stanza.\ The maximum number of columns per request is 300.
      { # A request object used to create a DoubleClick Search report.
        &quot;columnName&quot;: &quot;A String&quot;, # Name of a DoubleClick Search column to include in the report.
        &quot;customDimensionName&quot;: &quot;A String&quot;, # Segments a report by a custom dimension. The report must be scoped to an advertiser or lower, and the custom dimension must already be set up in DoubleClick Search. The custom dimension name, which appears in DoubleClick Search, is case sensitive.\ If used in a conversion report, returns the value of the specified custom dimension for the given conversion, if set. This column does not segment the conversion report.
        &quot;customMetricName&quot;: &quot;A String&quot;, # Name of a custom metric to include in the report. The report must be scoped to an advertiser or lower, and the custom metric must already be set up in DoubleClick Search. The custom metric name, which appears in DoubleClick Search, is case sensitive.
        &quot;endDate&quot;: &quot;A String&quot;, # Inclusive day in YYYY-MM-DD format. When provided, this overrides the overall time range of the report for this column only. Must be provided together with `startDate`.
        &quot;groupByColumn&quot;: True or False, # Synchronous report only. Set to `true` to group by this column. Defaults to `false`.
        &quot;headerText&quot;: &quot;A String&quot;, # Text used to identify this column in the report output; defaults to `columnName` or `savedColumnName` when not specified. This can be used to prevent collisions between DoubleClick Search columns and saved columns with the same name.
        &quot;platformSource&quot;: &quot;A String&quot;, # The platform that is used to provide data for the custom dimension. Acceptable values are &quot;floodlight&quot;.
        &quot;productReportPerspective&quot;: &quot;A String&quot;, # Returns metrics only for a specific type of product activity. Accepted values are: - &quot;`sold`&quot;: returns metrics only for products that were sold - &quot;`advertised`&quot;: returns metrics only for products that were advertised in a Shopping campaign, and that might or might not have been sold
        &quot;savedColumnName&quot;: &quot;A String&quot;, # Name of a saved column to include in the report. The report must be scoped at advertiser or lower, and this saved column must already be created in the DoubleClick Search UI.
        &quot;startDate&quot;: &quot;A String&quot;, # Inclusive date in YYYY-MM-DD format. When provided, this overrides the overall time range of the report for this column only. Must be provided together with `endDate`.
      },
    ],
    &quot;downloadFormat&quot;: &quot;A String&quot;, # Format that the report should be returned in. Currently `csv` or `tsv` is supported.
    &quot;filters&quot;: [ # A list of filters to be applied to the report.\ The maximum number of filters per request is 300.
      {
        &quot;column&quot;: { # A request object used to create a DoubleClick Search report. # Column to perform the filter on. This can be a DoubleClick Search column or a saved column.
          &quot;columnName&quot;: &quot;A String&quot;, # Name of a DoubleClick Search column to include in the report.
          &quot;customDimensionName&quot;: &quot;A String&quot;, # Segments a report by a custom dimension. The report must be scoped to an advertiser or lower, and the custom dimension must already be set up in DoubleClick Search. The custom dimension name, which appears in DoubleClick Search, is case sensitive.\ If used in a conversion report, returns the value of the specified custom dimension for the given conversion, if set. This column does not segment the conversion report.
          &quot;customMetricName&quot;: &quot;A String&quot;, # Name of a custom metric to include in the report. The report must be scoped to an advertiser or lower, and the custom metric must already be set up in DoubleClick Search. The custom metric name, which appears in DoubleClick Search, is case sensitive.
          &quot;endDate&quot;: &quot;A String&quot;, # Inclusive day in YYYY-MM-DD format. When provided, this overrides the overall time range of the report for this column only. Must be provided together with `startDate`.
          &quot;groupByColumn&quot;: True or False, # Synchronous report only. Set to `true` to group by this column. Defaults to `false`.
          &quot;headerText&quot;: &quot;A String&quot;, # Text used to identify this column in the report output; defaults to `columnName` or `savedColumnName` when not specified. This can be used to prevent collisions between DoubleClick Search columns and saved columns with the same name.
          &quot;platformSource&quot;: &quot;A String&quot;, # The platform that is used to provide data for the custom dimension. Acceptable values are &quot;floodlight&quot;.
          &quot;productReportPerspective&quot;: &quot;A String&quot;, # Returns metrics only for a specific type of product activity. Accepted values are: - &quot;`sold`&quot;: returns metrics only for products that were sold - &quot;`advertised`&quot;: returns metrics only for products that were advertised in a Shopping campaign, and that might or might not have been sold
          &quot;savedColumnName&quot;: &quot;A String&quot;, # Name of a saved column to include in the report. The report must be scoped at advertiser or lower, and this saved column must already be created in the DoubleClick Search UI.
          &quot;startDate&quot;: &quot;A String&quot;, # Inclusive date in YYYY-MM-DD format. When provided, this overrides the overall time range of the report for this column only. Must be provided together with `endDate`.
        },
        &quot;operator&quot;: &quot;A String&quot;, # Operator to use in the filter. See the filter reference for a list of available operators.
        &quot;values&quot;: [ # A list of values to filter the column value against.\ The maximum number of filter values per request is 300.
          &quot;&quot;,
        ],
      },
    ],
    &quot;includeDeletedEntities&quot;: True or False, # Determines if removed entities should be included in the report. Defaults to `false`. Deprecated, please use `includeRemovedEntities` instead.
    &quot;includeRemovedEntities&quot;: True or False, # Determines if removed entities should be included in the report. Defaults to `false`.
    &quot;maxRowsPerFile&quot;: 42, # Asynchronous report only. The maximum number of rows per report file. A large report is split into many files based on this field. Acceptable values are `1000000` to `100000000`, inclusive.
    &quot;orderBy&quot;: [ # Synchronous report only. A list of columns and directions defining sorting to be performed on the report rows.\ The maximum number of orderings per request is 300.
      {
        &quot;column&quot;: { # A request object used to create a DoubleClick Search report. # Column to perform the sort on. This can be a DoubleClick Search-defined column or a saved column.
          &quot;columnName&quot;: &quot;A String&quot;, # Name of a DoubleClick Search column to include in the report.
          &quot;customDimensionName&quot;: &quot;A String&quot;, # Segments a report by a custom dimension. The report must be scoped to an advertiser or lower, and the custom dimension must already be set up in DoubleClick Search. The custom dimension name, which appears in DoubleClick Search, is case sensitive.\ If used in a conversion report, returns the value of the specified custom dimension for the given conversion, if set. This column does not segment the conversion report.
          &quot;customMetricName&quot;: &quot;A String&quot;, # Name of a custom metric to include in the report. The report must be scoped to an advertiser or lower, and the custom metric must already be set up in DoubleClick Search. The custom metric name, which appears in DoubleClick Search, is case sensitive.
          &quot;endDate&quot;: &quot;A String&quot;, # Inclusive day in YYYY-MM-DD format. When provided, this overrides the overall time range of the report for this column only. Must be provided together with `startDate`.
          &quot;groupByColumn&quot;: True or False, # Synchronous report only. Set to `true` to group by this column. Defaults to `false`.
          &quot;headerText&quot;: &quot;A String&quot;, # Text used to identify this column in the report output; defaults to `columnName` or `savedColumnName` when not specified. This can be used to prevent collisions between DoubleClick Search columns and saved columns with the same name.
          &quot;platformSource&quot;: &quot;A String&quot;, # The platform that is used to provide data for the custom dimension. Acceptable values are &quot;floodlight&quot;.
          &quot;productReportPerspective&quot;: &quot;A String&quot;, # Returns metrics only for a specific type of product activity. Accepted values are: - &quot;`sold`&quot;: returns metrics only for products that were sold - &quot;`advertised`&quot;: returns metrics only for products that were advertised in a Shopping campaign, and that might or might not have been sold
          &quot;savedColumnName&quot;: &quot;A String&quot;, # Name of a saved column to include in the report. The report must be scoped at advertiser or lower, and this saved column must already be created in the DoubleClick Search UI.
          &quot;startDate&quot;: &quot;A String&quot;, # Inclusive date in YYYY-MM-DD format. When provided, this overrides the overall time range of the report for this column only. Must be provided together with `endDate`.
        },
        &quot;sortOrder&quot;: &quot;A String&quot;, # The sort direction, which is either `ascending` or `descending`.
      },
    ],
    &quot;reportScope&quot;: { # The reportScope is a set of IDs that are used to determine which subset of entities will be returned in the report. The full lineage of IDs from the lowest scoped level desired up through agency is required.
      &quot;adGroupId&quot;: &quot;A String&quot;, # DS ad group ID.
      &quot;adId&quot;: &quot;A String&quot;, # DS ad ID.
      &quot;advertiserId&quot;: &quot;A String&quot;, # DS advertiser ID.
      &quot;agencyId&quot;: &quot;A String&quot;, # DS agency ID.
      &quot;campaignId&quot;: &quot;A String&quot;, # DS campaign ID.
      &quot;engineAccountId&quot;: &quot;A String&quot;, # DS engine account ID.
      &quot;keywordId&quot;: &quot;A String&quot;, # DS keyword ID.
    },
    &quot;reportType&quot;: &quot;A String&quot;, # Determines the type of rows that are returned in the report. For example, if you specify `reportType: keyword`, each row in the report will contain data about a keyword. See the [Types of Reports](/search-ads/v2/report-types/) reference for the columns that are available for each type.
    &quot;rowCount&quot;: 42, # Synchronous report only. The maximum number of rows to return; additional rows are dropped. Acceptable values are `0` to `10000`, inclusive. Defaults to `10000`.
    &quot;startRow&quot;: 42, # Synchronous report only. Zero-based index of the first row to return. Acceptable values are `0` to `50000`, inclusive. Defaults to `0`.
    &quot;statisticsCurrency&quot;: &quot;A String&quot;, # Specifies the currency in which monetary will be returned. Possible values are: `usd`, `agency` (valid if the report is scoped to agency or lower), `advertiser` (valid if the report is scoped to * advertiser or lower), or `account` (valid if the report is scoped to engine account or lower).
    &quot;timeRange&quot;: { # If metrics are requested in a report, this argument will be used to restrict the metrics to a specific time range.
      &quot;changedAttributesSinceTimestamp&quot;: &quot;A String&quot;, # Inclusive UTC timestamp in RFC format, e.g., `2013-07-16T10:16:23.555Z`. See additional references on how changed attribute reports work.
      &quot;changedMetricsSinceTimestamp&quot;: &quot;A String&quot;, # Inclusive UTC timestamp in RFC format, e.g., `2013-07-16T10:16:23.555Z`. See additional references on how changed metrics reports work.
      &quot;endDate&quot;: &quot;A String&quot;, # Inclusive date in YYYY-MM-DD format.
      &quot;startDate&quot;: &quot;A String&quot;, # Inclusive date in YYYY-MM-DD format.
    },
    &quot;verifySingleTimeZone&quot;: True or False, # If `true`, the report would only be created if all the requested stat data are sourced from a single timezone. Defaults to `false`.
  },
  &quot;rowCount&quot;: 42, # The number of report rows generated by the report, not including headers.
  &quot;rows&quot;: [ # Synchronous report only. Generated report rows.
    { # A row in a DoubleClick Search report.
      &quot;a_key&quot;: &quot;&quot;, # Indicates the columns that are represented in this row. That is, each key corresponds to a column with a non-empty cell in this row.
    },
  ],
  &quot;statisticsCurrencyCode&quot;: &quot;A String&quot;, # The currency code of all monetary values produced in the report, including values that are set by users (e.g., keyword bid settings) and metrics (e.g., cost and revenue). The currency code of a report is determined by the `statisticsCurrency` field of the report request.
  &quot;statisticsTimeZone&quot;: &quot;A String&quot;, # If all statistics of the report are sourced from the same time zone, this would be it. Otherwise the field is unset.
}</pre>
</div>

<div class="method">
    <code class="details" id="get">get(reportId, x__xgafv=None)</code>
  <pre>Polls for the status of a report request.

Args:
  reportId: string, ID of the report request being polled. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A DoubleClick Search report. This object contains the report request, some report metadata such as currency code, and the generated report rows or report files.
  &quot;files&quot;: [ # Asynchronous report only. Contains a list of generated report files once the report has successfully completed.
    {
      &quot;byteCount&quot;: &quot;A String&quot;, # The size of this report file in bytes.
      &quot;url&quot;: &quot;A String&quot;, # Use this url to download the report file.
    },
  ],
  &quot;id&quot;: &quot;A String&quot;, # Asynchronous report only. Id of the report.
  &quot;isReportReady&quot;: True or False, # Asynchronous report only. True if and only if the report has completed successfully and the report files are ready to be downloaded.
  &quot;kind&quot;: &quot;A String&quot;, # Identifies this as a Report resource. Value: the fixed string `doubleclicksearch#report`.
  &quot;request&quot;: { # A request object used to create a DoubleClick Search report. # The request that created the report. Optional fields not specified in the original request are filled with default values.
    &quot;columns&quot;: [ # The columns to include in the report. This includes both DoubleClick Search columns and saved columns. For DoubleClick Search columns, only the `columnName` parameter is required. For saved columns only the `savedColumnName` parameter is required. Both `columnName` and `savedColumnName` cannot be set in the same stanza.\ The maximum number of columns per request is 300.
      { # A request object used to create a DoubleClick Search report.
        &quot;columnName&quot;: &quot;A String&quot;, # Name of a DoubleClick Search column to include in the report.
        &quot;customDimensionName&quot;: &quot;A String&quot;, # Segments a report by a custom dimension. The report must be scoped to an advertiser or lower, and the custom dimension must already be set up in DoubleClick Search. The custom dimension name, which appears in DoubleClick Search, is case sensitive.\ If used in a conversion report, returns the value of the specified custom dimension for the given conversion, if set. This column does not segment the conversion report.
        &quot;customMetricName&quot;: &quot;A String&quot;, # Name of a custom metric to include in the report. The report must be scoped to an advertiser or lower, and the custom metric must already be set up in DoubleClick Search. The custom metric name, which appears in DoubleClick Search, is case sensitive.
        &quot;endDate&quot;: &quot;A String&quot;, # Inclusive day in YYYY-MM-DD format. When provided, this overrides the overall time range of the report for this column only. Must be provided together with `startDate`.
        &quot;groupByColumn&quot;: True or False, # Synchronous report only. Set to `true` to group by this column. Defaults to `false`.
        &quot;headerText&quot;: &quot;A String&quot;, # Text used to identify this column in the report output; defaults to `columnName` or `savedColumnName` when not specified. This can be used to prevent collisions between DoubleClick Search columns and saved columns with the same name.
        &quot;platformSource&quot;: &quot;A String&quot;, # The platform that is used to provide data for the custom dimension. Acceptable values are &quot;floodlight&quot;.
        &quot;productReportPerspective&quot;: &quot;A String&quot;, # Returns metrics only for a specific type of product activity. Accepted values are: - &quot;`sold`&quot;: returns metrics only for products that were sold - &quot;`advertised`&quot;: returns metrics only for products that were advertised in a Shopping campaign, and that might or might not have been sold
        &quot;savedColumnName&quot;: &quot;A String&quot;, # Name of a saved column to include in the report. The report must be scoped at advertiser or lower, and this saved column must already be created in the DoubleClick Search UI.
        &quot;startDate&quot;: &quot;A String&quot;, # Inclusive date in YYYY-MM-DD format. When provided, this overrides the overall time range of the report for this column only. Must be provided together with `endDate`.
      },
    ],
    &quot;downloadFormat&quot;: &quot;A String&quot;, # Format that the report should be returned in. Currently `csv` or `tsv` is supported.
    &quot;filters&quot;: [ # A list of filters to be applied to the report.\ The maximum number of filters per request is 300.
      {
        &quot;column&quot;: { # A request object used to create a DoubleClick Search report. # Column to perform the filter on. This can be a DoubleClick Search column or a saved column.
          &quot;columnName&quot;: &quot;A String&quot;, # Name of a DoubleClick Search column to include in the report.
          &quot;customDimensionName&quot;: &quot;A String&quot;, # Segments a report by a custom dimension. The report must be scoped to an advertiser or lower, and the custom dimension must already be set up in DoubleClick Search. The custom dimension name, which appears in DoubleClick Search, is case sensitive.\ If used in a conversion report, returns the value of the specified custom dimension for the given conversion, if set. This column does not segment the conversion report.
          &quot;customMetricName&quot;: &quot;A String&quot;, # Name of a custom metric to include in the report. The report must be scoped to an advertiser or lower, and the custom metric must already be set up in DoubleClick Search. The custom metric name, which appears in DoubleClick Search, is case sensitive.
          &quot;endDate&quot;: &quot;A String&quot;, # Inclusive day in YYYY-MM-DD format. When provided, this overrides the overall time range of the report for this column only. Must be provided together with `startDate`.
          &quot;groupByColumn&quot;: True or False, # Synchronous report only. Set to `true` to group by this column. Defaults to `false`.
          &quot;headerText&quot;: &quot;A String&quot;, # Text used to identify this column in the report output; defaults to `columnName` or `savedColumnName` when not specified. This can be used to prevent collisions between DoubleClick Search columns and saved columns with the same name.
          &quot;platformSource&quot;: &quot;A String&quot;, # The platform that is used to provide data for the custom dimension. Acceptable values are &quot;floodlight&quot;.
          &quot;productReportPerspective&quot;: &quot;A String&quot;, # Returns metrics only for a specific type of product activity. Accepted values are: - &quot;`sold`&quot;: returns metrics only for products that were sold - &quot;`advertised`&quot;: returns metrics only for products that were advertised in a Shopping campaign, and that might or might not have been sold
          &quot;savedColumnName&quot;: &quot;A String&quot;, # Name of a saved column to include in the report. The report must be scoped at advertiser or lower, and this saved column must already be created in the DoubleClick Search UI.
          &quot;startDate&quot;: &quot;A String&quot;, # Inclusive date in YYYY-MM-DD format. When provided, this overrides the overall time range of the report for this column only. Must be provided together with `endDate`.
        },
        &quot;operator&quot;: &quot;A String&quot;, # Operator to use in the filter. See the filter reference for a list of available operators.
        &quot;values&quot;: [ # A list of values to filter the column value against.\ The maximum number of filter values per request is 300.
          &quot;&quot;,
        ],
      },
    ],
    &quot;includeDeletedEntities&quot;: True or False, # Determines if removed entities should be included in the report. Defaults to `false`. Deprecated, please use `includeRemovedEntities` instead.
    &quot;includeRemovedEntities&quot;: True or False, # Determines if removed entities should be included in the report. Defaults to `false`.
    &quot;maxRowsPerFile&quot;: 42, # Asynchronous report only. The maximum number of rows per report file. A large report is split into many files based on this field. Acceptable values are `1000000` to `100000000`, inclusive.
    &quot;orderBy&quot;: [ # Synchronous report only. A list of columns and directions defining sorting to be performed on the report rows.\ The maximum number of orderings per request is 300.
      {
        &quot;column&quot;: { # A request object used to create a DoubleClick Search report. # Column to perform the sort on. This can be a DoubleClick Search-defined column or a saved column.
          &quot;columnName&quot;: &quot;A String&quot;, # Name of a DoubleClick Search column to include in the report.
          &quot;customDimensionName&quot;: &quot;A String&quot;, # Segments a report by a custom dimension. The report must be scoped to an advertiser or lower, and the custom dimension must already be set up in DoubleClick Search. The custom dimension name, which appears in DoubleClick Search, is case sensitive.\ If used in a conversion report, returns the value of the specified custom dimension for the given conversion, if set. This column does not segment the conversion report.
          &quot;customMetricName&quot;: &quot;A String&quot;, # Name of a custom metric to include in the report. The report must be scoped to an advertiser or lower, and the custom metric must already be set up in DoubleClick Search. The custom metric name, which appears in DoubleClick Search, is case sensitive.
          &quot;endDate&quot;: &quot;A String&quot;, # Inclusive day in YYYY-MM-DD format. When provided, this overrides the overall time range of the report for this column only. Must be provided together with `startDate`.
          &quot;groupByColumn&quot;: True or False, # Synchronous report only. Set to `true` to group by this column. Defaults to `false`.
          &quot;headerText&quot;: &quot;A String&quot;, # Text used to identify this column in the report output; defaults to `columnName` or `savedColumnName` when not specified. This can be used to prevent collisions between DoubleClick Search columns and saved columns with the same name.
          &quot;platformSource&quot;: &quot;A String&quot;, # The platform that is used to provide data for the custom dimension. Acceptable values are &quot;floodlight&quot;.
          &quot;productReportPerspective&quot;: &quot;A String&quot;, # Returns metrics only for a specific type of product activity. Accepted values are: - &quot;`sold`&quot;: returns metrics only for products that were sold - &quot;`advertised`&quot;: returns metrics only for products that were advertised in a Shopping campaign, and that might or might not have been sold
          &quot;savedColumnName&quot;: &quot;A String&quot;, # Name of a saved column to include in the report. The report must be scoped at advertiser or lower, and this saved column must already be created in the DoubleClick Search UI.
          &quot;startDate&quot;: &quot;A String&quot;, # Inclusive date in YYYY-MM-DD format. When provided, this overrides the overall time range of the report for this column only. Must be provided together with `endDate`.
        },
        &quot;sortOrder&quot;: &quot;A String&quot;, # The sort direction, which is either `ascending` or `descending`.
      },
    ],
    &quot;reportScope&quot;: { # The reportScope is a set of IDs that are used to determine which subset of entities will be returned in the report. The full lineage of IDs from the lowest scoped level desired up through agency is required.
      &quot;adGroupId&quot;: &quot;A String&quot;, # DS ad group ID.
      &quot;adId&quot;: &quot;A String&quot;, # DS ad ID.
      &quot;advertiserId&quot;: &quot;A String&quot;, # DS advertiser ID.
      &quot;agencyId&quot;: &quot;A String&quot;, # DS agency ID.
      &quot;campaignId&quot;: &quot;A String&quot;, # DS campaign ID.
      &quot;engineAccountId&quot;: &quot;A String&quot;, # DS engine account ID.
      &quot;keywordId&quot;: &quot;A String&quot;, # DS keyword ID.
    },
    &quot;reportType&quot;: &quot;A String&quot;, # Determines the type of rows that are returned in the report. For example, if you specify `reportType: keyword`, each row in the report will contain data about a keyword. See the [Types of Reports](/search-ads/v2/report-types/) reference for the columns that are available for each type.
    &quot;rowCount&quot;: 42, # Synchronous report only. The maximum number of rows to return; additional rows are dropped. Acceptable values are `0` to `10000`, inclusive. Defaults to `10000`.
    &quot;startRow&quot;: 42, # Synchronous report only. Zero-based index of the first row to return. Acceptable values are `0` to `50000`, inclusive. Defaults to `0`.
    &quot;statisticsCurrency&quot;: &quot;A String&quot;, # Specifies the currency in which monetary will be returned. Possible values are: `usd`, `agency` (valid if the report is scoped to agency or lower), `advertiser` (valid if the report is scoped to * advertiser or lower), or `account` (valid if the report is scoped to engine account or lower).
    &quot;timeRange&quot;: { # If metrics are requested in a report, this argument will be used to restrict the metrics to a specific time range.
      &quot;changedAttributesSinceTimestamp&quot;: &quot;A String&quot;, # Inclusive UTC timestamp in RFC format, e.g., `2013-07-16T10:16:23.555Z`. See additional references on how changed attribute reports work.
      &quot;changedMetricsSinceTimestamp&quot;: &quot;A String&quot;, # Inclusive UTC timestamp in RFC format, e.g., `2013-07-16T10:16:23.555Z`. See additional references on how changed metrics reports work.
      &quot;endDate&quot;: &quot;A String&quot;, # Inclusive date in YYYY-MM-DD format.
      &quot;startDate&quot;: &quot;A String&quot;, # Inclusive date in YYYY-MM-DD format.
    },
    &quot;verifySingleTimeZone&quot;: True or False, # If `true`, the report would only be created if all the requested stat data are sourced from a single timezone. Defaults to `false`.
  },
  &quot;rowCount&quot;: 42, # The number of report rows generated by the report, not including headers.
  &quot;rows&quot;: [ # Synchronous report only. Generated report rows.
    { # A row in a DoubleClick Search report.
      &quot;a_key&quot;: &quot;&quot;, # Indicates the columns that are represented in this row. That is, each key corresponds to a column with a non-empty cell in this row.
    },
  ],
  &quot;statisticsCurrencyCode&quot;: &quot;A String&quot;, # The currency code of all monetary values produced in the report, including values that are set by users (e.g., keyword bid settings) and metrics (e.g., cost and revenue). The currency code of a report is determined by the `statisticsCurrency` field of the report request.
  &quot;statisticsTimeZone&quot;: &quot;A String&quot;, # If all statistics of the report are sourced from the same time zone, this would be it. Otherwise the field is unset.
}</pre>
</div>

<div class="method">
    <code class="details" id="getFile">getFile(reportId, reportFragment, x__xgafv=None)</code>
  <pre>Downloads a report file encoded in UTF-8.

Args:
  reportId: string, ID of the report. (required)
  reportFragment: integer, The index of the report fragment to download. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format
</pre>
</div>

<div class="method">
    <code class="details" id="getFile_media">getFile_media(reportId, reportFragment, x__xgafv=None)</code>
  <pre>Downloads a report file encoded in UTF-8.

Args:
  reportId: string, ID of the report. (required)
  reportFragment: integer, The index of the report fragment to download. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format
</pre>
</div>

<div class="method">
    <code class="details" id="request">request(body=None, x__xgafv=None)</code>
  <pre>Inserts a report request into the reporting system.

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

{ # A request object used to create a DoubleClick Search report.
  &quot;columns&quot;: [ # The columns to include in the report. This includes both DoubleClick Search columns and saved columns. For DoubleClick Search columns, only the `columnName` parameter is required. For saved columns only the `savedColumnName` parameter is required. Both `columnName` and `savedColumnName` cannot be set in the same stanza.\ The maximum number of columns per request is 300.
    { # A request object used to create a DoubleClick Search report.
      &quot;columnName&quot;: &quot;A String&quot;, # Name of a DoubleClick Search column to include in the report.
      &quot;customDimensionName&quot;: &quot;A String&quot;, # Segments a report by a custom dimension. The report must be scoped to an advertiser or lower, and the custom dimension must already be set up in DoubleClick Search. The custom dimension name, which appears in DoubleClick Search, is case sensitive.\ If used in a conversion report, returns the value of the specified custom dimension for the given conversion, if set. This column does not segment the conversion report.
      &quot;customMetricName&quot;: &quot;A String&quot;, # Name of a custom metric to include in the report. The report must be scoped to an advertiser or lower, and the custom metric must already be set up in DoubleClick Search. The custom metric name, which appears in DoubleClick Search, is case sensitive.
      &quot;endDate&quot;: &quot;A String&quot;, # Inclusive day in YYYY-MM-DD format. When provided, this overrides the overall time range of the report for this column only. Must be provided together with `startDate`.
      &quot;groupByColumn&quot;: True or False, # Synchronous report only. Set to `true` to group by this column. Defaults to `false`.
      &quot;headerText&quot;: &quot;A String&quot;, # Text used to identify this column in the report output; defaults to `columnName` or `savedColumnName` when not specified. This can be used to prevent collisions between DoubleClick Search columns and saved columns with the same name.
      &quot;platformSource&quot;: &quot;A String&quot;, # The platform that is used to provide data for the custom dimension. Acceptable values are &quot;floodlight&quot;.
      &quot;productReportPerspective&quot;: &quot;A String&quot;, # Returns metrics only for a specific type of product activity. Accepted values are: - &quot;`sold`&quot;: returns metrics only for products that were sold - &quot;`advertised`&quot;: returns metrics only for products that were advertised in a Shopping campaign, and that might or might not have been sold
      &quot;savedColumnName&quot;: &quot;A String&quot;, # Name of a saved column to include in the report. The report must be scoped at advertiser or lower, and this saved column must already be created in the DoubleClick Search UI.
      &quot;startDate&quot;: &quot;A String&quot;, # Inclusive date in YYYY-MM-DD format. When provided, this overrides the overall time range of the report for this column only. Must be provided together with `endDate`.
    },
  ],
  &quot;downloadFormat&quot;: &quot;A String&quot;, # Format that the report should be returned in. Currently `csv` or `tsv` is supported.
  &quot;filters&quot;: [ # A list of filters to be applied to the report.\ The maximum number of filters per request is 300.
    {
      &quot;column&quot;: { # A request object used to create a DoubleClick Search report. # Column to perform the filter on. This can be a DoubleClick Search column or a saved column.
        &quot;columnName&quot;: &quot;A String&quot;, # Name of a DoubleClick Search column to include in the report.
        &quot;customDimensionName&quot;: &quot;A String&quot;, # Segments a report by a custom dimension. The report must be scoped to an advertiser or lower, and the custom dimension must already be set up in DoubleClick Search. The custom dimension name, which appears in DoubleClick Search, is case sensitive.\ If used in a conversion report, returns the value of the specified custom dimension for the given conversion, if set. This column does not segment the conversion report.
        &quot;customMetricName&quot;: &quot;A String&quot;, # Name of a custom metric to include in the report. The report must be scoped to an advertiser or lower, and the custom metric must already be set up in DoubleClick Search. The custom metric name, which appears in DoubleClick Search, is case sensitive.
        &quot;endDate&quot;: &quot;A String&quot;, # Inclusive day in YYYY-MM-DD format. When provided, this overrides the overall time range of the report for this column only. Must be provided together with `startDate`.
        &quot;groupByColumn&quot;: True or False, # Synchronous report only. Set to `true` to group by this column. Defaults to `false`.
        &quot;headerText&quot;: &quot;A String&quot;, # Text used to identify this column in the report output; defaults to `columnName` or `savedColumnName` when not specified. This can be used to prevent collisions between DoubleClick Search columns and saved columns with the same name.
        &quot;platformSource&quot;: &quot;A String&quot;, # The platform that is used to provide data for the custom dimension. Acceptable values are &quot;floodlight&quot;.
        &quot;productReportPerspective&quot;: &quot;A String&quot;, # Returns metrics only for a specific type of product activity. Accepted values are: - &quot;`sold`&quot;: returns metrics only for products that were sold - &quot;`advertised`&quot;: returns metrics only for products that were advertised in a Shopping campaign, and that might or might not have been sold
        &quot;savedColumnName&quot;: &quot;A String&quot;, # Name of a saved column to include in the report. The report must be scoped at advertiser or lower, and this saved column must already be created in the DoubleClick Search UI.
        &quot;startDate&quot;: &quot;A String&quot;, # Inclusive date in YYYY-MM-DD format. When provided, this overrides the overall time range of the report for this column only. Must be provided together with `endDate`.
      },
      &quot;operator&quot;: &quot;A String&quot;, # Operator to use in the filter. See the filter reference for a list of available operators.
      &quot;values&quot;: [ # A list of values to filter the column value against.\ The maximum number of filter values per request is 300.
        &quot;&quot;,
      ],
    },
  ],
  &quot;includeDeletedEntities&quot;: True or False, # Determines if removed entities should be included in the report. Defaults to `false`. Deprecated, please use `includeRemovedEntities` instead.
  &quot;includeRemovedEntities&quot;: True or False, # Determines if removed entities should be included in the report. Defaults to `false`.
  &quot;maxRowsPerFile&quot;: 42, # Asynchronous report only. The maximum number of rows per report file. A large report is split into many files based on this field. Acceptable values are `1000000` to `100000000`, inclusive.
  &quot;orderBy&quot;: [ # Synchronous report only. A list of columns and directions defining sorting to be performed on the report rows.\ The maximum number of orderings per request is 300.
    {
      &quot;column&quot;: { # A request object used to create a DoubleClick Search report. # Column to perform the sort on. This can be a DoubleClick Search-defined column or a saved column.
        &quot;columnName&quot;: &quot;A String&quot;, # Name of a DoubleClick Search column to include in the report.
        &quot;customDimensionName&quot;: &quot;A String&quot;, # Segments a report by a custom dimension. The report must be scoped to an advertiser or lower, and the custom dimension must already be set up in DoubleClick Search. The custom dimension name, which appears in DoubleClick Search, is case sensitive.\ If used in a conversion report, returns the value of the specified custom dimension for the given conversion, if set. This column does not segment the conversion report.
        &quot;customMetricName&quot;: &quot;A String&quot;, # Name of a custom metric to include in the report. The report must be scoped to an advertiser or lower, and the custom metric must already be set up in DoubleClick Search. The custom metric name, which appears in DoubleClick Search, is case sensitive.
        &quot;endDate&quot;: &quot;A String&quot;, # Inclusive day in YYYY-MM-DD format. When provided, this overrides the overall time range of the report for this column only. Must be provided together with `startDate`.
        &quot;groupByColumn&quot;: True or False, # Synchronous report only. Set to `true` to group by this column. Defaults to `false`.
        &quot;headerText&quot;: &quot;A String&quot;, # Text used to identify this column in the report output; defaults to `columnName` or `savedColumnName` when not specified. This can be used to prevent collisions between DoubleClick Search columns and saved columns with the same name.
        &quot;platformSource&quot;: &quot;A String&quot;, # The platform that is used to provide data for the custom dimension. Acceptable values are &quot;floodlight&quot;.
        &quot;productReportPerspective&quot;: &quot;A String&quot;, # Returns metrics only for a specific type of product activity. Accepted values are: - &quot;`sold`&quot;: returns metrics only for products that were sold - &quot;`advertised`&quot;: returns metrics only for products that were advertised in a Shopping campaign, and that might or might not have been sold
        &quot;savedColumnName&quot;: &quot;A String&quot;, # Name of a saved column to include in the report. The report must be scoped at advertiser or lower, and this saved column must already be created in the DoubleClick Search UI.
        &quot;startDate&quot;: &quot;A String&quot;, # Inclusive date in YYYY-MM-DD format. When provided, this overrides the overall time range of the report for this column only. Must be provided together with `endDate`.
      },
      &quot;sortOrder&quot;: &quot;A String&quot;, # The sort direction, which is either `ascending` or `descending`.
    },
  ],
  &quot;reportScope&quot;: { # The reportScope is a set of IDs that are used to determine which subset of entities will be returned in the report. The full lineage of IDs from the lowest scoped level desired up through agency is required.
    &quot;adGroupId&quot;: &quot;A String&quot;, # DS ad group ID.
    &quot;adId&quot;: &quot;A String&quot;, # DS ad ID.
    &quot;advertiserId&quot;: &quot;A String&quot;, # DS advertiser ID.
    &quot;agencyId&quot;: &quot;A String&quot;, # DS agency ID.
    &quot;campaignId&quot;: &quot;A String&quot;, # DS campaign ID.
    &quot;engineAccountId&quot;: &quot;A String&quot;, # DS engine account ID.
    &quot;keywordId&quot;: &quot;A String&quot;, # DS keyword ID.
  },
  &quot;reportType&quot;: &quot;A String&quot;, # Determines the type of rows that are returned in the report. For example, if you specify `reportType: keyword`, each row in the report will contain data about a keyword. See the [Types of Reports](/search-ads/v2/report-types/) reference for the columns that are available for each type.
  &quot;rowCount&quot;: 42, # Synchronous report only. The maximum number of rows to return; additional rows are dropped. Acceptable values are `0` to `10000`, inclusive. Defaults to `10000`.
  &quot;startRow&quot;: 42, # Synchronous report only. Zero-based index of the first row to return. Acceptable values are `0` to `50000`, inclusive. Defaults to `0`.
  &quot;statisticsCurrency&quot;: &quot;A String&quot;, # Specifies the currency in which monetary will be returned. Possible values are: `usd`, `agency` (valid if the report is scoped to agency or lower), `advertiser` (valid if the report is scoped to * advertiser or lower), or `account` (valid if the report is scoped to engine account or lower).
  &quot;timeRange&quot;: { # If metrics are requested in a report, this argument will be used to restrict the metrics to a specific time range.
    &quot;changedAttributesSinceTimestamp&quot;: &quot;A String&quot;, # Inclusive UTC timestamp in RFC format, e.g., `2013-07-16T10:16:23.555Z`. See additional references on how changed attribute reports work.
    &quot;changedMetricsSinceTimestamp&quot;: &quot;A String&quot;, # Inclusive UTC timestamp in RFC format, e.g., `2013-07-16T10:16:23.555Z`. See additional references on how changed metrics reports work.
    &quot;endDate&quot;: &quot;A String&quot;, # Inclusive date in YYYY-MM-DD format.
    &quot;startDate&quot;: &quot;A String&quot;, # Inclusive date in YYYY-MM-DD format.
  },
  &quot;verifySingleTimeZone&quot;: True or False, # If `true`, the report would only be created if all the requested stat data are sourced from a single timezone. Defaults to `false`.
}

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

Returns:
  An object of the form:

    { # A DoubleClick Search report. This object contains the report request, some report metadata such as currency code, and the generated report rows or report files.
  &quot;files&quot;: [ # Asynchronous report only. Contains a list of generated report files once the report has successfully completed.
    {
      &quot;byteCount&quot;: &quot;A String&quot;, # The size of this report file in bytes.
      &quot;url&quot;: &quot;A String&quot;, # Use this url to download the report file.
    },
  ],
  &quot;id&quot;: &quot;A String&quot;, # Asynchronous report only. Id of the report.
  &quot;isReportReady&quot;: True or False, # Asynchronous report only. True if and only if the report has completed successfully and the report files are ready to be downloaded.
  &quot;kind&quot;: &quot;A String&quot;, # Identifies this as a Report resource. Value: the fixed string `doubleclicksearch#report`.
  &quot;request&quot;: { # A request object used to create a DoubleClick Search report. # The request that created the report. Optional fields not specified in the original request are filled with default values.
    &quot;columns&quot;: [ # The columns to include in the report. This includes both DoubleClick Search columns and saved columns. For DoubleClick Search columns, only the `columnName` parameter is required. For saved columns only the `savedColumnName` parameter is required. Both `columnName` and `savedColumnName` cannot be set in the same stanza.\ The maximum number of columns per request is 300.
      { # A request object used to create a DoubleClick Search report.
        &quot;columnName&quot;: &quot;A String&quot;, # Name of a DoubleClick Search column to include in the report.
        &quot;customDimensionName&quot;: &quot;A String&quot;, # Segments a report by a custom dimension. The report must be scoped to an advertiser or lower, and the custom dimension must already be set up in DoubleClick Search. The custom dimension name, which appears in DoubleClick Search, is case sensitive.\ If used in a conversion report, returns the value of the specified custom dimension for the given conversion, if set. This column does not segment the conversion report.
        &quot;customMetricName&quot;: &quot;A String&quot;, # Name of a custom metric to include in the report. The report must be scoped to an advertiser or lower, and the custom metric must already be set up in DoubleClick Search. The custom metric name, which appears in DoubleClick Search, is case sensitive.
        &quot;endDate&quot;: &quot;A String&quot;, # Inclusive day in YYYY-MM-DD format. When provided, this overrides the overall time range of the report for this column only. Must be provided together with `startDate`.
        &quot;groupByColumn&quot;: True or False, # Synchronous report only. Set to `true` to group by this column. Defaults to `false`.
        &quot;headerText&quot;: &quot;A String&quot;, # Text used to identify this column in the report output; defaults to `columnName` or `savedColumnName` when not specified. This can be used to prevent collisions between DoubleClick Search columns and saved columns with the same name.
        &quot;platformSource&quot;: &quot;A String&quot;, # The platform that is used to provide data for the custom dimension. Acceptable values are &quot;floodlight&quot;.
        &quot;productReportPerspective&quot;: &quot;A String&quot;, # Returns metrics only for a specific type of product activity. Accepted values are: - &quot;`sold`&quot;: returns metrics only for products that were sold - &quot;`advertised`&quot;: returns metrics only for products that were advertised in a Shopping campaign, and that might or might not have been sold
        &quot;savedColumnName&quot;: &quot;A String&quot;, # Name of a saved column to include in the report. The report must be scoped at advertiser or lower, and this saved column must already be created in the DoubleClick Search UI.
        &quot;startDate&quot;: &quot;A String&quot;, # Inclusive date in YYYY-MM-DD format. When provided, this overrides the overall time range of the report for this column only. Must be provided together with `endDate`.
      },
    ],
    &quot;downloadFormat&quot;: &quot;A String&quot;, # Format that the report should be returned in. Currently `csv` or `tsv` is supported.
    &quot;filters&quot;: [ # A list of filters to be applied to the report.\ The maximum number of filters per request is 300.
      {
        &quot;column&quot;: { # A request object used to create a DoubleClick Search report. # Column to perform the filter on. This can be a DoubleClick Search column or a saved column.
          &quot;columnName&quot;: &quot;A String&quot;, # Name of a DoubleClick Search column to include in the report.
          &quot;customDimensionName&quot;: &quot;A String&quot;, # Segments a report by a custom dimension. The report must be scoped to an advertiser or lower, and the custom dimension must already be set up in DoubleClick Search. The custom dimension name, which appears in DoubleClick Search, is case sensitive.\ If used in a conversion report, returns the value of the specified custom dimension for the given conversion, if set. This column does not segment the conversion report.
          &quot;customMetricName&quot;: &quot;A String&quot;, # Name of a custom metric to include in the report. The report must be scoped to an advertiser or lower, and the custom metric must already be set up in DoubleClick Search. The custom metric name, which appears in DoubleClick Search, is case sensitive.
          &quot;endDate&quot;: &quot;A String&quot;, # Inclusive day in YYYY-MM-DD format. When provided, this overrides the overall time range of the report for this column only. Must be provided together with `startDate`.
          &quot;groupByColumn&quot;: True or False, # Synchronous report only. Set to `true` to group by this column. Defaults to `false`.
          &quot;headerText&quot;: &quot;A String&quot;, # Text used to identify this column in the report output; defaults to `columnName` or `savedColumnName` when not specified. This can be used to prevent collisions between DoubleClick Search columns and saved columns with the same name.
          &quot;platformSource&quot;: &quot;A String&quot;, # The platform that is used to provide data for the custom dimension. Acceptable values are &quot;floodlight&quot;.
          &quot;productReportPerspective&quot;: &quot;A String&quot;, # Returns metrics only for a specific type of product activity. Accepted values are: - &quot;`sold`&quot;: returns metrics only for products that were sold - &quot;`advertised`&quot;: returns metrics only for products that were advertised in a Shopping campaign, and that might or might not have been sold
          &quot;savedColumnName&quot;: &quot;A String&quot;, # Name of a saved column to include in the report. The report must be scoped at advertiser or lower, and this saved column must already be created in the DoubleClick Search UI.
          &quot;startDate&quot;: &quot;A String&quot;, # Inclusive date in YYYY-MM-DD format. When provided, this overrides the overall time range of the report for this column only. Must be provided together with `endDate`.
        },
        &quot;operator&quot;: &quot;A String&quot;, # Operator to use in the filter. See the filter reference for a list of available operators.
        &quot;values&quot;: [ # A list of values to filter the column value against.\ The maximum number of filter values per request is 300.
          &quot;&quot;,
        ],
      },
    ],
    &quot;includeDeletedEntities&quot;: True or False, # Determines if removed entities should be included in the report. Defaults to `false`. Deprecated, please use `includeRemovedEntities` instead.
    &quot;includeRemovedEntities&quot;: True or False, # Determines if removed entities should be included in the report. Defaults to `false`.
    &quot;maxRowsPerFile&quot;: 42, # Asynchronous report only. The maximum number of rows per report file. A large report is split into many files based on this field. Acceptable values are `1000000` to `100000000`, inclusive.
    &quot;orderBy&quot;: [ # Synchronous report only. A list of columns and directions defining sorting to be performed on the report rows.\ The maximum number of orderings per request is 300.
      {
        &quot;column&quot;: { # A request object used to create a DoubleClick Search report. # Column to perform the sort on. This can be a DoubleClick Search-defined column or a saved column.
          &quot;columnName&quot;: &quot;A String&quot;, # Name of a DoubleClick Search column to include in the report.
          &quot;customDimensionName&quot;: &quot;A String&quot;, # Segments a report by a custom dimension. The report must be scoped to an advertiser or lower, and the custom dimension must already be set up in DoubleClick Search. The custom dimension name, which appears in DoubleClick Search, is case sensitive.\ If used in a conversion report, returns the value of the specified custom dimension for the given conversion, if set. This column does not segment the conversion report.
          &quot;customMetricName&quot;: &quot;A String&quot;, # Name of a custom metric to include in the report. The report must be scoped to an advertiser or lower, and the custom metric must already be set up in DoubleClick Search. The custom metric name, which appears in DoubleClick Search, is case sensitive.
          &quot;endDate&quot;: &quot;A String&quot;, # Inclusive day in YYYY-MM-DD format. When provided, this overrides the overall time range of the report for this column only. Must be provided together with `startDate`.
          &quot;groupByColumn&quot;: True or False, # Synchronous report only. Set to `true` to group by this column. Defaults to `false`.
          &quot;headerText&quot;: &quot;A String&quot;, # Text used to identify this column in the report output; defaults to `columnName` or `savedColumnName` when not specified. This can be used to prevent collisions between DoubleClick Search columns and saved columns with the same name.
          &quot;platformSource&quot;: &quot;A String&quot;, # The platform that is used to provide data for the custom dimension. Acceptable values are &quot;floodlight&quot;.
          &quot;productReportPerspective&quot;: &quot;A String&quot;, # Returns metrics only for a specific type of product activity. Accepted values are: - &quot;`sold`&quot;: returns metrics only for products that were sold - &quot;`advertised`&quot;: returns metrics only for products that were advertised in a Shopping campaign, and that might or might not have been sold
          &quot;savedColumnName&quot;: &quot;A String&quot;, # Name of a saved column to include in the report. The report must be scoped at advertiser or lower, and this saved column must already be created in the DoubleClick Search UI.
          &quot;startDate&quot;: &quot;A String&quot;, # Inclusive date in YYYY-MM-DD format. When provided, this overrides the overall time range of the report for this column only. Must be provided together with `endDate`.
        },
        &quot;sortOrder&quot;: &quot;A String&quot;, # The sort direction, which is either `ascending` or `descending`.
      },
    ],
    &quot;reportScope&quot;: { # The reportScope is a set of IDs that are used to determine which subset of entities will be returned in the report. The full lineage of IDs from the lowest scoped level desired up through agency is required.
      &quot;adGroupId&quot;: &quot;A String&quot;, # DS ad group ID.
      &quot;adId&quot;: &quot;A String&quot;, # DS ad ID.
      &quot;advertiserId&quot;: &quot;A String&quot;, # DS advertiser ID.
      &quot;agencyId&quot;: &quot;A String&quot;, # DS agency ID.
      &quot;campaignId&quot;: &quot;A String&quot;, # DS campaign ID.
      &quot;engineAccountId&quot;: &quot;A String&quot;, # DS engine account ID.
      &quot;keywordId&quot;: &quot;A String&quot;, # DS keyword ID.
    },
    &quot;reportType&quot;: &quot;A String&quot;, # Determines the type of rows that are returned in the report. For example, if you specify `reportType: keyword`, each row in the report will contain data about a keyword. See the [Types of Reports](/search-ads/v2/report-types/) reference for the columns that are available for each type.
    &quot;rowCount&quot;: 42, # Synchronous report only. The maximum number of rows to return; additional rows are dropped. Acceptable values are `0` to `10000`, inclusive. Defaults to `10000`.
    &quot;startRow&quot;: 42, # Synchronous report only. Zero-based index of the first row to return. Acceptable values are `0` to `50000`, inclusive. Defaults to `0`.
    &quot;statisticsCurrency&quot;: &quot;A String&quot;, # Specifies the currency in which monetary will be returned. Possible values are: `usd`, `agency` (valid if the report is scoped to agency or lower), `advertiser` (valid if the report is scoped to * advertiser or lower), or `account` (valid if the report is scoped to engine account or lower).
    &quot;timeRange&quot;: { # If metrics are requested in a report, this argument will be used to restrict the metrics to a specific time range.
      &quot;changedAttributesSinceTimestamp&quot;: &quot;A String&quot;, # Inclusive UTC timestamp in RFC format, e.g., `2013-07-16T10:16:23.555Z`. See additional references on how changed attribute reports work.
      &quot;changedMetricsSinceTimestamp&quot;: &quot;A String&quot;, # Inclusive UTC timestamp in RFC format, e.g., `2013-07-16T10:16:23.555Z`. See additional references on how changed metrics reports work.
      &quot;endDate&quot;: &quot;A String&quot;, # Inclusive date in YYYY-MM-DD format.
      &quot;startDate&quot;: &quot;A String&quot;, # Inclusive date in YYYY-MM-DD format.
    },
    &quot;verifySingleTimeZone&quot;: True or False, # If `true`, the report would only be created if all the requested stat data are sourced from a single timezone. Defaults to `false`.
  },
  &quot;rowCount&quot;: 42, # The number of report rows generated by the report, not including headers.
  &quot;rows&quot;: [ # Synchronous report only. Generated report rows.
    { # A row in a DoubleClick Search report.
      &quot;a_key&quot;: &quot;&quot;, # Indicates the columns that are represented in this row. That is, each key corresponds to a column with a non-empty cell in this row.
    },
  ],
  &quot;statisticsCurrencyCode&quot;: &quot;A String&quot;, # The currency code of all monetary values produced in the report, including values that are set by users (e.g., keyword bid settings) and metrics (e.g., cost and revenue). The currency code of a report is determined by the `statisticsCurrency` field of the report request.
  &quot;statisticsTimeZone&quot;: &quot;A String&quot;, # If all statistics of the report are sourced from the same time zone, this would be it. Otherwise the field is unset.
}</pre>
</div>

</body></html>