<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="doubleclickbidmanager_v1_1.html">DoubleClick Bid Manager API</a> . <a href="doubleclickbidmanager_v1_1.queries.html">queries</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#createquery">createquery(body=None, asynchronous=None)</a></code></p>
<p class="firstline">Creates a query.</p>
<p class="toc_element">
  <code><a href="#deletequery">deletequery(queryId)</a></code></p>
<p class="firstline">Deletes a stored query as well as the associated stored reports.</p>
<p class="toc_element">
  <code><a href="#getquery">getquery(queryId)</a></code></p>
<p class="firstline">Retrieves a stored query.</p>
<p class="toc_element">
  <code><a href="#listqueries">listqueries(pageSize=None, pageToken=None)</a></code></p>
<p class="firstline">Retrieves stored queries.</p>
<p class="toc_element">
  <code><a href="#listqueries_next">listqueries_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#runquery">runquery(queryId, body=None, asynchronous=None)</a></code></p>
<p class="firstline">Runs a stored query to generate a report.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="createquery">createquery(body=None, asynchronous=None)</code>
  <pre>Creates a query.

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

{ # Represents a query.
    &quot;kind&quot;: &quot;doubleclickbidmanager#query&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;doubleclickbidmanager#query&quot;.
    &quot;metadata&quot;: { # Query metadata. # Query metadata.
      &quot;dataRange&quot;: &quot;A String&quot;, # Range of report data.
      &quot;format&quot;: &quot;A String&quot;, # Format of the generated report.
      &quot;googleCloudStoragePathForLatestReport&quot;: &quot;A String&quot;, # The path to the location in Google Cloud Storage where the latest report is stored.
      &quot;googleDrivePathForLatestReport&quot;: &quot;A String&quot;, # The path in Google Drive for the latest report.
      &quot;latestReportRunTimeMs&quot;: &quot;A String&quot;, # The time when the latest report started to run.
      &quot;locale&quot;: &quot;A String&quot;, # Locale of the generated reports. Valid values are cs CZECH de GERMAN en ENGLISH es SPANISH fr FRENCH it ITALIAN ja JAPANESE ko KOREAN pl POLISH pt-BR BRAZILIAN_PORTUGUESE ru RUSSIAN tr TURKISH uk UKRAINIAN zh-CN CHINA_CHINESE zh-TW TAIWAN_CHINESE
          #
          # An locale string not in the list above will generate reports in English.
      &quot;reportCount&quot;: 42, # Number of reports that have been generated for the query.
      &quot;running&quot;: True or False, # Whether the latest report is currently running.
      &quot;sendNotification&quot;: True or False, # Whether to send an email notification when a report is ready. Default to false.
      &quot;shareEmailAddress&quot;: [ # List of email addresses which are sent email notifications when the report is finished. Separate from sendNotification.
        &quot;A String&quot;,
      ],
      &quot;title&quot;: &quot;A String&quot;, # Query title. It is used to name the reports generated from this query.
    },
    &quot;params&quot;: { # Parameters of a query or report. # Query parameters.
      &quot;filters&quot;: [ # Filters used to match traffic data in your report.
        { # Filter used to match traffic data in your report.
          &quot;type&quot;: &quot;A String&quot;, # Filter type.
          &quot;value&quot;: &quot;A String&quot;, # Filter value.
        },
      ],
      &quot;groupBys&quot;: [ # Data is grouped by the filters listed in this field.
        &quot;A String&quot;,
      ],
      &quot;includeInviteData&quot;: True or False, # Deprecated. This field is no longer in use.
      &quot;metrics&quot;: [ # Metrics to include as columns in your report.
        &quot;A String&quot;,
      ],
      &quot;options&quot;: { # Additional query options. # Additional query options.
        &quot;includeOnlyTargetedUserLists&quot;: True or False, # Set to true and filter your report by `FILTER_INSERTION_ORDER` or `FILTER_LINE_ITEM` to include data for audience lists specifically targeted by those items.
      },
      &quot;type&quot;: &quot;A String&quot;, # Report type.
    },
    &quot;queryId&quot;: &quot;A String&quot;, # Query ID.
    &quot;reportDataEndTimeMs&quot;: &quot;A String&quot;, # The ending time for the data that is shown in the report. Note, reportDataEndTimeMs is required if metadata.dataRange is CUSTOM_DATES and ignored otherwise.
    &quot;reportDataStartTimeMs&quot;: &quot;A String&quot;, # The starting time for the data that is shown in the report. Note, reportDataStartTimeMs is required if metadata.dataRange is CUSTOM_DATES and ignored otherwise.
    &quot;schedule&quot;: { # Information on how frequently and when to run a query. # Information on how often and when to run a query.
      &quot;endTimeMs&quot;: &quot;A String&quot;, # Datetime to periodically run the query until.
      &quot;frequency&quot;: &quot;A String&quot;, # How often the query is run.
      &quot;nextRunMinuteOfDay&quot;: 42, # Time of day at which a new report will be generated, represented as minutes past midnight. Range is 0 to 1439. Only applies to scheduled reports.
      &quot;nextRunTimezoneCode&quot;: &quot;A String&quot;, # Canonical timezone code for report generation time. Defaults to America/New_York.
      &quot;startTimeMs&quot;: &quot;A String&quot;, # When to start running the query. Not applicable to `ONE_TIME` frequency.
    },
    &quot;timezoneCode&quot;: &quot;A String&quot;, # Canonical timezone code for report data time. Defaults to America/New_York.
  }

  asynchronous: boolean, If true, tries to run the query asynchronously. Only applicable when the frequency is ONE_TIME.

Returns:
  An object of the form:

    { # Represents a query.
      &quot;kind&quot;: &quot;doubleclickbidmanager#query&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;doubleclickbidmanager#query&quot;.
      &quot;metadata&quot;: { # Query metadata. # Query metadata.
        &quot;dataRange&quot;: &quot;A String&quot;, # Range of report data.
        &quot;format&quot;: &quot;A String&quot;, # Format of the generated report.
        &quot;googleCloudStoragePathForLatestReport&quot;: &quot;A String&quot;, # The path to the location in Google Cloud Storage where the latest report is stored.
        &quot;googleDrivePathForLatestReport&quot;: &quot;A String&quot;, # The path in Google Drive for the latest report.
        &quot;latestReportRunTimeMs&quot;: &quot;A String&quot;, # The time when the latest report started to run.
        &quot;locale&quot;: &quot;A String&quot;, # Locale of the generated reports. Valid values are cs CZECH de GERMAN en ENGLISH es SPANISH fr FRENCH it ITALIAN ja JAPANESE ko KOREAN pl POLISH pt-BR BRAZILIAN_PORTUGUESE ru RUSSIAN tr TURKISH uk UKRAINIAN zh-CN CHINA_CHINESE zh-TW TAIWAN_CHINESE
            #
            # An locale string not in the list above will generate reports in English.
        &quot;reportCount&quot;: 42, # Number of reports that have been generated for the query.
        &quot;running&quot;: True or False, # Whether the latest report is currently running.
        &quot;sendNotification&quot;: True or False, # Whether to send an email notification when a report is ready. Default to false.
        &quot;shareEmailAddress&quot;: [ # List of email addresses which are sent email notifications when the report is finished. Separate from sendNotification.
          &quot;A String&quot;,
        ],
        &quot;title&quot;: &quot;A String&quot;, # Query title. It is used to name the reports generated from this query.
      },
      &quot;params&quot;: { # Parameters of a query or report. # Query parameters.
        &quot;filters&quot;: [ # Filters used to match traffic data in your report.
          { # Filter used to match traffic data in your report.
            &quot;type&quot;: &quot;A String&quot;, # Filter type.
            &quot;value&quot;: &quot;A String&quot;, # Filter value.
          },
        ],
        &quot;groupBys&quot;: [ # Data is grouped by the filters listed in this field.
          &quot;A String&quot;,
        ],
        &quot;includeInviteData&quot;: True or False, # Deprecated. This field is no longer in use.
        &quot;metrics&quot;: [ # Metrics to include as columns in your report.
          &quot;A String&quot;,
        ],
        &quot;options&quot;: { # Additional query options. # Additional query options.
          &quot;includeOnlyTargetedUserLists&quot;: True or False, # Set to true and filter your report by `FILTER_INSERTION_ORDER` or `FILTER_LINE_ITEM` to include data for audience lists specifically targeted by those items.
        },
        &quot;type&quot;: &quot;A String&quot;, # Report type.
      },
      &quot;queryId&quot;: &quot;A String&quot;, # Query ID.
      &quot;reportDataEndTimeMs&quot;: &quot;A String&quot;, # The ending time for the data that is shown in the report. Note, reportDataEndTimeMs is required if metadata.dataRange is CUSTOM_DATES and ignored otherwise.
      &quot;reportDataStartTimeMs&quot;: &quot;A String&quot;, # The starting time for the data that is shown in the report. Note, reportDataStartTimeMs is required if metadata.dataRange is CUSTOM_DATES and ignored otherwise.
      &quot;schedule&quot;: { # Information on how frequently and when to run a query. # Information on how often and when to run a query.
        &quot;endTimeMs&quot;: &quot;A String&quot;, # Datetime to periodically run the query until.
        &quot;frequency&quot;: &quot;A String&quot;, # How often the query is run.
        &quot;nextRunMinuteOfDay&quot;: 42, # Time of day at which a new report will be generated, represented as minutes past midnight. Range is 0 to 1439. Only applies to scheduled reports.
        &quot;nextRunTimezoneCode&quot;: &quot;A String&quot;, # Canonical timezone code for report generation time. Defaults to America/New_York.
        &quot;startTimeMs&quot;: &quot;A String&quot;, # When to start running the query. Not applicable to `ONE_TIME` frequency.
      },
      &quot;timezoneCode&quot;: &quot;A String&quot;, # Canonical timezone code for report data time. Defaults to America/New_York.
    }</pre>
</div>

<div class="method">
    <code class="details" id="deletequery">deletequery(queryId)</code>
  <pre>Deletes a stored query as well as the associated stored reports.

Args:
  queryId: string, Query ID to delete. (required)
</pre>
</div>

<div class="method">
    <code class="details" id="getquery">getquery(queryId)</code>
  <pre>Retrieves a stored query.

Args:
  queryId: string, Query ID to retrieve. (required)

Returns:
  An object of the form:

    { # Represents a query.
      &quot;kind&quot;: &quot;doubleclickbidmanager#query&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;doubleclickbidmanager#query&quot;.
      &quot;metadata&quot;: { # Query metadata. # Query metadata.
        &quot;dataRange&quot;: &quot;A String&quot;, # Range of report data.
        &quot;format&quot;: &quot;A String&quot;, # Format of the generated report.
        &quot;googleCloudStoragePathForLatestReport&quot;: &quot;A String&quot;, # The path to the location in Google Cloud Storage where the latest report is stored.
        &quot;googleDrivePathForLatestReport&quot;: &quot;A String&quot;, # The path in Google Drive for the latest report.
        &quot;latestReportRunTimeMs&quot;: &quot;A String&quot;, # The time when the latest report started to run.
        &quot;locale&quot;: &quot;A String&quot;, # Locale of the generated reports. Valid values are cs CZECH de GERMAN en ENGLISH es SPANISH fr FRENCH it ITALIAN ja JAPANESE ko KOREAN pl POLISH pt-BR BRAZILIAN_PORTUGUESE ru RUSSIAN tr TURKISH uk UKRAINIAN zh-CN CHINA_CHINESE zh-TW TAIWAN_CHINESE
            #
            # An locale string not in the list above will generate reports in English.
        &quot;reportCount&quot;: 42, # Number of reports that have been generated for the query.
        &quot;running&quot;: True or False, # Whether the latest report is currently running.
        &quot;sendNotification&quot;: True or False, # Whether to send an email notification when a report is ready. Default to false.
        &quot;shareEmailAddress&quot;: [ # List of email addresses which are sent email notifications when the report is finished. Separate from sendNotification.
          &quot;A String&quot;,
        ],
        &quot;title&quot;: &quot;A String&quot;, # Query title. It is used to name the reports generated from this query.
      },
      &quot;params&quot;: { # Parameters of a query or report. # Query parameters.
        &quot;filters&quot;: [ # Filters used to match traffic data in your report.
          { # Filter used to match traffic data in your report.
            &quot;type&quot;: &quot;A String&quot;, # Filter type.
            &quot;value&quot;: &quot;A String&quot;, # Filter value.
          },
        ],
        &quot;groupBys&quot;: [ # Data is grouped by the filters listed in this field.
          &quot;A String&quot;,
        ],
        &quot;includeInviteData&quot;: True or False, # Deprecated. This field is no longer in use.
        &quot;metrics&quot;: [ # Metrics to include as columns in your report.
          &quot;A String&quot;,
        ],
        &quot;options&quot;: { # Additional query options. # Additional query options.
          &quot;includeOnlyTargetedUserLists&quot;: True or False, # Set to true and filter your report by `FILTER_INSERTION_ORDER` or `FILTER_LINE_ITEM` to include data for audience lists specifically targeted by those items.
        },
        &quot;type&quot;: &quot;A String&quot;, # Report type.
      },
      &quot;queryId&quot;: &quot;A String&quot;, # Query ID.
      &quot;reportDataEndTimeMs&quot;: &quot;A String&quot;, # The ending time for the data that is shown in the report. Note, reportDataEndTimeMs is required if metadata.dataRange is CUSTOM_DATES and ignored otherwise.
      &quot;reportDataStartTimeMs&quot;: &quot;A String&quot;, # The starting time for the data that is shown in the report. Note, reportDataStartTimeMs is required if metadata.dataRange is CUSTOM_DATES and ignored otherwise.
      &quot;schedule&quot;: { # Information on how frequently and when to run a query. # Information on how often and when to run a query.
        &quot;endTimeMs&quot;: &quot;A String&quot;, # Datetime to periodically run the query until.
        &quot;frequency&quot;: &quot;A String&quot;, # How often the query is run.
        &quot;nextRunMinuteOfDay&quot;: 42, # Time of day at which a new report will be generated, represented as minutes past midnight. Range is 0 to 1439. Only applies to scheduled reports.
        &quot;nextRunTimezoneCode&quot;: &quot;A String&quot;, # Canonical timezone code for report generation time. Defaults to America/New_York.
        &quot;startTimeMs&quot;: &quot;A String&quot;, # When to start running the query. Not applicable to `ONE_TIME` frequency.
      },
      &quot;timezoneCode&quot;: &quot;A String&quot;, # Canonical timezone code for report data time. Defaults to America/New_York.
    }</pre>
</div>

<div class="method">
    <code class="details" id="listqueries">listqueries(pageSize=None, pageToken=None)</code>
  <pre>Retrieves stored queries.

Args:
  pageSize: integer, Maximum number of results per page. Must be between 1 and 100. Defaults to 100 if unspecified.
  pageToken: string, Optional pagination token.

Returns:
  An object of the form:

    { # List queries response.
    &quot;kind&quot;: &quot;doubleclickbidmanager#listQueriesResponse&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;doubleclickbidmanager#listQueriesResponse&quot;.
    &quot;nextPageToken&quot;: &quot;A String&quot;, # Next page&#x27;s pagination token if one exists.
    &quot;queries&quot;: [ # Retrieved queries.
      { # Represents a query.
          &quot;kind&quot;: &quot;doubleclickbidmanager#query&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;doubleclickbidmanager#query&quot;.
          &quot;metadata&quot;: { # Query metadata. # Query metadata.
            &quot;dataRange&quot;: &quot;A String&quot;, # Range of report data.
            &quot;format&quot;: &quot;A String&quot;, # Format of the generated report.
            &quot;googleCloudStoragePathForLatestReport&quot;: &quot;A String&quot;, # The path to the location in Google Cloud Storage where the latest report is stored.
            &quot;googleDrivePathForLatestReport&quot;: &quot;A String&quot;, # The path in Google Drive for the latest report.
            &quot;latestReportRunTimeMs&quot;: &quot;A String&quot;, # The time when the latest report started to run.
            &quot;locale&quot;: &quot;A String&quot;, # Locale of the generated reports. Valid values are cs CZECH de GERMAN en ENGLISH es SPANISH fr FRENCH it ITALIAN ja JAPANESE ko KOREAN pl POLISH pt-BR BRAZILIAN_PORTUGUESE ru RUSSIAN tr TURKISH uk UKRAINIAN zh-CN CHINA_CHINESE zh-TW TAIWAN_CHINESE
                #
                # An locale string not in the list above will generate reports in English.
            &quot;reportCount&quot;: 42, # Number of reports that have been generated for the query.
            &quot;running&quot;: True or False, # Whether the latest report is currently running.
            &quot;sendNotification&quot;: True or False, # Whether to send an email notification when a report is ready. Default to false.
            &quot;shareEmailAddress&quot;: [ # List of email addresses which are sent email notifications when the report is finished. Separate from sendNotification.
              &quot;A String&quot;,
            ],
            &quot;title&quot;: &quot;A String&quot;, # Query title. It is used to name the reports generated from this query.
          },
          &quot;params&quot;: { # Parameters of a query or report. # Query parameters.
            &quot;filters&quot;: [ # Filters used to match traffic data in your report.
              { # Filter used to match traffic data in your report.
                &quot;type&quot;: &quot;A String&quot;, # Filter type.
                &quot;value&quot;: &quot;A String&quot;, # Filter value.
              },
            ],
            &quot;groupBys&quot;: [ # Data is grouped by the filters listed in this field.
              &quot;A String&quot;,
            ],
            &quot;includeInviteData&quot;: True or False, # Deprecated. This field is no longer in use.
            &quot;metrics&quot;: [ # Metrics to include as columns in your report.
              &quot;A String&quot;,
            ],
            &quot;options&quot;: { # Additional query options. # Additional query options.
              &quot;includeOnlyTargetedUserLists&quot;: True or False, # Set to true and filter your report by `FILTER_INSERTION_ORDER` or `FILTER_LINE_ITEM` to include data for audience lists specifically targeted by those items.
            },
            &quot;type&quot;: &quot;A String&quot;, # Report type.
          },
          &quot;queryId&quot;: &quot;A String&quot;, # Query ID.
          &quot;reportDataEndTimeMs&quot;: &quot;A String&quot;, # The ending time for the data that is shown in the report. Note, reportDataEndTimeMs is required if metadata.dataRange is CUSTOM_DATES and ignored otherwise.
          &quot;reportDataStartTimeMs&quot;: &quot;A String&quot;, # The starting time for the data that is shown in the report. Note, reportDataStartTimeMs is required if metadata.dataRange is CUSTOM_DATES and ignored otherwise.
          &quot;schedule&quot;: { # Information on how frequently and when to run a query. # Information on how often and when to run a query.
            &quot;endTimeMs&quot;: &quot;A String&quot;, # Datetime to periodically run the query until.
            &quot;frequency&quot;: &quot;A String&quot;, # How often the query is run.
            &quot;nextRunMinuteOfDay&quot;: 42, # Time of day at which a new report will be generated, represented as minutes past midnight. Range is 0 to 1439. Only applies to scheduled reports.
            &quot;nextRunTimezoneCode&quot;: &quot;A String&quot;, # Canonical timezone code for report generation time. Defaults to America/New_York.
            &quot;startTimeMs&quot;: &quot;A String&quot;, # When to start running the query. Not applicable to `ONE_TIME` frequency.
          },
          &quot;timezoneCode&quot;: &quot;A String&quot;, # Canonical timezone code for report data time. Defaults to America/New_York.
        },
    ],
  }</pre>
</div>

<div class="method">
    <code class="details" id="listqueries_next">listqueries_next(previous_request, previous_response)</code>
  <pre>Retrieves the next page of results.

Args:
  previous_request: The request for the previous page. (required)
  previous_response: The response from the request for the previous page. (required)

Returns:
  A request object that you can call &#x27;execute()&#x27; on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

<div class="method">
    <code class="details" id="runquery">runquery(queryId, body=None, asynchronous=None)</code>
  <pre>Runs a stored query to generate a report.

Args:
  queryId: string, Query ID to run. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request to run a stored query to generate a report.
    &quot;dataRange&quot;: &quot;A String&quot;, # Report data range used to generate the report.
    &quot;reportDataEndTimeMs&quot;: &quot;A String&quot;, # The ending time for the data that is shown in the report. Note, reportDataEndTimeMs is required if dataRange is CUSTOM_DATES and ignored otherwise.
    &quot;reportDataStartTimeMs&quot;: &quot;A String&quot;, # The starting time for the data that is shown in the report. Note, reportDataStartTimeMs is required if dataRange is CUSTOM_DATES and ignored otherwise.
    &quot;timezoneCode&quot;: &quot;A String&quot;, # Canonical timezone code for report data time. Defaults to America/New_York.
  }

  asynchronous: boolean, If true, tries to run the query asynchronously.
</pre>
</div>

</body></html>