<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="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#createquery">createquery(asynchronous=None, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a query.</p>
<p class="toc_element">
  <code><a href="#deletequery">deletequery(queryId, x__xgafv=None)</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, x__xgafv=None)</a></code></p>
<p class="firstline">Retrieves a stored query.</p>
<p class="toc_element">
  <code><a href="#listqueries">listqueries(pageSize=None, pageToken=None, x__xgafv=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, asynchronous=None, body=None, x__xgafv=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="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="createquery">createquery(asynchronous=None, body=None, x__xgafv=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;A String&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;pathQueryOptions&quot;: { # Path Query Options for Report Options. # Options that contain Path Filters and Custom Channel Groupings.
        &quot;channelGrouping&quot;: { # A channel grouping defines a set of rules that can be used to categorize events in a path report. # Custom Channel Groupings.
          &quot;fallbackName&quot;: &quot;A String&quot;, # The name to apply to an event that does not match any of the rules in the channel grouping.
          &quot;name&quot;: &quot;A String&quot;, # Channel Grouping name.
          &quot;rules&quot;: [ # Rules within Channel Grouping. There is a limit of 100 rules that can be set per channel grouping.
            { # A Rule defines a name, and a boolean expression in [conjunctive normal form](http: //mathworld.wolfram.com/ConjunctiveNormalForm.html){.external} that can be // applied to a path event to determine if that name should be applied.
              &quot;disjunctiveMatchStatements&quot;: [
                { # DisjunctiveMatchStatement that OR&#x27;s all contained filters.
                  &quot;eventFilters&quot;: [ # Filters. There is a limit of 100 filters that can be set per disjunctive match statement.
                    { # Defines the type of filter to be applied to the path, a DV360 event dimension filter.
                      &quot;dimensionFilter&quot;: { # Dimension Filter on path events. # Filter on a dimension.
                        &quot;filter&quot;: &quot;A String&quot;, # Dimension the filter is applied to.
                        &quot;match&quot;: &quot;A String&quot;, # Indicates how the filter should be matched to the value.
                        &quot;values&quot;: [ # Value to filter on.
                          &quot;A String&quot;,
                        ],
                      },
                    },
                  ],
                },
              ],
              &quot;name&quot;: &quot;A String&quot;, # Rule name.
            },
          ],
        },
        &quot;pathFilters&quot;: [ # Path Filters. There is a limit of 100 path filters that can be set per report.
          { # Path filters specify which paths to include in a report. A path is the result of combining DV360 events based on User ID to create a workflow of users&#x27; actions. When a path filter is set, the resulting report will only include paths that match the specified event at the specified position. All other paths will be excluded.
            &quot;eventFilters&quot;: [ # Filter on an event to be applied to some part of the path.
              { # Defines the type of filter to be applied to the path, a DV360 event dimension filter.
                &quot;dimensionFilter&quot;: { # Dimension Filter on path events. # Filter on a dimension.
                  &quot;filter&quot;: &quot;A String&quot;, # Dimension the filter is applied to.
                  &quot;match&quot;: &quot;A String&quot;, # Indicates how the filter should be matched to the value.
                  &quot;values&quot;: [ # Value to filter on.
                    &quot;A String&quot;,
                  ],
                },
              },
            ],
            &quot;pathMatchPosition&quot;: &quot;A String&quot;, # Indicates the position of the path the filter should match to (first, last, or any event in path).
          },
        ],
      },
    },
    &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.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Represents a query.
  &quot;kind&quot;: &quot;A String&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;pathQueryOptions&quot;: { # Path Query Options for Report Options. # Options that contain Path Filters and Custom Channel Groupings.
        &quot;channelGrouping&quot;: { # A channel grouping defines a set of rules that can be used to categorize events in a path report. # Custom Channel Groupings.
          &quot;fallbackName&quot;: &quot;A String&quot;, # The name to apply to an event that does not match any of the rules in the channel grouping.
          &quot;name&quot;: &quot;A String&quot;, # Channel Grouping name.
          &quot;rules&quot;: [ # Rules within Channel Grouping. There is a limit of 100 rules that can be set per channel grouping.
            { # A Rule defines a name, and a boolean expression in [conjunctive normal form](http: //mathworld.wolfram.com/ConjunctiveNormalForm.html){.external} that can be // applied to a path event to determine if that name should be applied.
              &quot;disjunctiveMatchStatements&quot;: [
                { # DisjunctiveMatchStatement that OR&#x27;s all contained filters.
                  &quot;eventFilters&quot;: [ # Filters. There is a limit of 100 filters that can be set per disjunctive match statement.
                    { # Defines the type of filter to be applied to the path, a DV360 event dimension filter.
                      &quot;dimensionFilter&quot;: { # Dimension Filter on path events. # Filter on a dimension.
                        &quot;filter&quot;: &quot;A String&quot;, # Dimension the filter is applied to.
                        &quot;match&quot;: &quot;A String&quot;, # Indicates how the filter should be matched to the value.
                        &quot;values&quot;: [ # Value to filter on.
                          &quot;A String&quot;,
                        ],
                      },
                    },
                  ],
                },
              ],
              &quot;name&quot;: &quot;A String&quot;, # Rule name.
            },
          ],
        },
        &quot;pathFilters&quot;: [ # Path Filters. There is a limit of 100 path filters that can be set per report.
          { # Path filters specify which paths to include in a report. A path is the result of combining DV360 events based on User ID to create a workflow of users&#x27; actions. When a path filter is set, the resulting report will only include paths that match the specified event at the specified position. All other paths will be excluded.
            &quot;eventFilters&quot;: [ # Filter on an event to be applied to some part of the path.
              { # Defines the type of filter to be applied to the path, a DV360 event dimension filter.
                &quot;dimensionFilter&quot;: { # Dimension Filter on path events. # Filter on a dimension.
                  &quot;filter&quot;: &quot;A String&quot;, # Dimension the filter is applied to.
                  &quot;match&quot;: &quot;A String&quot;, # Indicates how the filter should be matched to the value.
                  &quot;values&quot;: [ # Value to filter on.
                    &quot;A String&quot;,
                  ],
                },
              },
            ],
            &quot;pathMatchPosition&quot;: &quot;A String&quot;, # Indicates the position of the path the filter should match to (first, last, or any event in path).
          },
        ],
      },
    },
    &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, x__xgafv=None)</code>
  <pre>Deletes a stored query as well as the associated stored reports.

Args:
  queryId: string, Query ID to delete. (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="getquery">getquery(queryId, x__xgafv=None)</code>
  <pre>Retrieves a stored query.

Args:
  queryId: string, Query ID to retrieve. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Represents a query.
  &quot;kind&quot;: &quot;A String&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;pathQueryOptions&quot;: { # Path Query Options for Report Options. # Options that contain Path Filters and Custom Channel Groupings.
        &quot;channelGrouping&quot;: { # A channel grouping defines a set of rules that can be used to categorize events in a path report. # Custom Channel Groupings.
          &quot;fallbackName&quot;: &quot;A String&quot;, # The name to apply to an event that does not match any of the rules in the channel grouping.
          &quot;name&quot;: &quot;A String&quot;, # Channel Grouping name.
          &quot;rules&quot;: [ # Rules within Channel Grouping. There is a limit of 100 rules that can be set per channel grouping.
            { # A Rule defines a name, and a boolean expression in [conjunctive normal form](http: //mathworld.wolfram.com/ConjunctiveNormalForm.html){.external} that can be // applied to a path event to determine if that name should be applied.
              &quot;disjunctiveMatchStatements&quot;: [
                { # DisjunctiveMatchStatement that OR&#x27;s all contained filters.
                  &quot;eventFilters&quot;: [ # Filters. There is a limit of 100 filters that can be set per disjunctive match statement.
                    { # Defines the type of filter to be applied to the path, a DV360 event dimension filter.
                      &quot;dimensionFilter&quot;: { # Dimension Filter on path events. # Filter on a dimension.
                        &quot;filter&quot;: &quot;A String&quot;, # Dimension the filter is applied to.
                        &quot;match&quot;: &quot;A String&quot;, # Indicates how the filter should be matched to the value.
                        &quot;values&quot;: [ # Value to filter on.
                          &quot;A String&quot;,
                        ],
                      },
                    },
                  ],
                },
              ],
              &quot;name&quot;: &quot;A String&quot;, # Rule name.
            },
          ],
        },
        &quot;pathFilters&quot;: [ # Path Filters. There is a limit of 100 path filters that can be set per report.
          { # Path filters specify which paths to include in a report. A path is the result of combining DV360 events based on User ID to create a workflow of users&#x27; actions. When a path filter is set, the resulting report will only include paths that match the specified event at the specified position. All other paths will be excluded.
            &quot;eventFilters&quot;: [ # Filter on an event to be applied to some part of the path.
              { # Defines the type of filter to be applied to the path, a DV360 event dimension filter.
                &quot;dimensionFilter&quot;: { # Dimension Filter on path events. # Filter on a dimension.
                  &quot;filter&quot;: &quot;A String&quot;, # Dimension the filter is applied to.
                  &quot;match&quot;: &quot;A String&quot;, # Indicates how the filter should be matched to the value.
                  &quot;values&quot;: [ # Value to filter on.
                    &quot;A String&quot;,
                  ],
                },
              },
            ],
            &quot;pathMatchPosition&quot;: &quot;A String&quot;, # Indicates the position of the path the filter should match to (first, last, or any event in path).
          },
        ],
      },
    },
    &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, x__xgafv=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.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # List queries response.
  &quot;kind&quot;: &quot;A String&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;A String&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;pathQueryOptions&quot;: { # Path Query Options for Report Options. # Options that contain Path Filters and Custom Channel Groupings.
            &quot;channelGrouping&quot;: { # A channel grouping defines a set of rules that can be used to categorize events in a path report. # Custom Channel Groupings.
              &quot;fallbackName&quot;: &quot;A String&quot;, # The name to apply to an event that does not match any of the rules in the channel grouping.
              &quot;name&quot;: &quot;A String&quot;, # Channel Grouping name.
              &quot;rules&quot;: [ # Rules within Channel Grouping. There is a limit of 100 rules that can be set per channel grouping.
                { # A Rule defines a name, and a boolean expression in [conjunctive normal form](http: //mathworld.wolfram.com/ConjunctiveNormalForm.html){.external} that can be // applied to a path event to determine if that name should be applied.
                  &quot;disjunctiveMatchStatements&quot;: [
                    { # DisjunctiveMatchStatement that OR&#x27;s all contained filters.
                      &quot;eventFilters&quot;: [ # Filters. There is a limit of 100 filters that can be set per disjunctive match statement.
                        { # Defines the type of filter to be applied to the path, a DV360 event dimension filter.
                          &quot;dimensionFilter&quot;: { # Dimension Filter on path events. # Filter on a dimension.
                            &quot;filter&quot;: &quot;A String&quot;, # Dimension the filter is applied to.
                            &quot;match&quot;: &quot;A String&quot;, # Indicates how the filter should be matched to the value.
                            &quot;values&quot;: [ # Value to filter on.
                              &quot;A String&quot;,
                            ],
                          },
                        },
                      ],
                    },
                  ],
                  &quot;name&quot;: &quot;A String&quot;, # Rule name.
                },
              ],
            },
            &quot;pathFilters&quot;: [ # Path Filters. There is a limit of 100 path filters that can be set per report.
              { # Path filters specify which paths to include in a report. A path is the result of combining DV360 events based on User ID to create a workflow of users&#x27; actions. When a path filter is set, the resulting report will only include paths that match the specified event at the specified position. All other paths will be excluded.
                &quot;eventFilters&quot;: [ # Filter on an event to be applied to some part of the path.
                  { # Defines the type of filter to be applied to the path, a DV360 event dimension filter.
                    &quot;dimensionFilter&quot;: { # Dimension Filter on path events. # Filter on a dimension.
                      &quot;filter&quot;: &quot;A String&quot;, # Dimension the filter is applied to.
                      &quot;match&quot;: &quot;A String&quot;, # Indicates how the filter should be matched to the value.
                      &quot;values&quot;: [ # Value to filter on.
                        &quot;A String&quot;,
                      ],
                    },
                  },
                ],
                &quot;pathMatchPosition&quot;: &quot;A String&quot;, # Indicates the position of the path the filter should match to (first, last, or any event in path).
              },
            ],
          },
        },
        &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, asynchronous=None, body=None, x__xgafv=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.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format
</pre>
</div>

</body></html>