<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(body=None, asynchronous=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, body=None, asynchronous=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(body=None, asynchronous=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;queryId&quot;: &quot;A String&quot;, # Query ID.
  &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;doubleclickbidmanager#query&quot;.
  &quot;timezoneCode&quot;: &quot;A String&quot;, # Canonical timezone code for report data time. Defaults to America/New_York.
  &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;metadata&quot;: { # Query metadata. # Query metadata.
    &quot;running&quot;: True or False, # Whether the latest report is currently running.
    &quot;latestReportRunTimeMs&quot;: &quot;A String&quot;, # The time when the latest report started to run.
    &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;dataRange&quot;: &quot;A String&quot;, # Range of report data.
    &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;title&quot;: &quot;A String&quot;, # Query title. It is used to name the reports generated from this query.
    &quot;googleCloudStoragePathForLatestReport&quot;: &quot;A String&quot;, # The path to the location in Google Cloud Storage where the latest report is stored.
    &quot;sendNotification&quot;: True or False, # Whether to send an email notification when a report is ready. Default to false.
    &quot;format&quot;: &quot;A String&quot;, # Format of the generated report.
    &quot;googleDrivePathForLatestReport&quot;: &quot;A String&quot;, # The path in Google Drive for the latest report.
  },
  &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;type&quot;: &quot;A String&quot;, # Report type.
    &quot;metrics&quot;: [ # Metrics to include as columns in your report.
      &quot;A String&quot;,
    ],
    &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;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;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;name&quot;: &quot;A String&quot;, # Rule name.
              &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 for a Path Filter. # Filter on a dimension.
                        &quot;values&quot;: [ # Value to filter on.
                          &quot;A String&quot;,
                        ],
                        &quot;match&quot;: &quot;A String&quot;, # Indicates how the filter should be matched to the value.
                        &quot;filter&quot;: &quot;A String&quot;, # Dimension the filter is applied to.
                      },
                    },
                  ],
                },
              ],
            },
          ],
          &quot;name&quot;: &quot;A String&quot;, # Channel Grouping name.
          &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;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;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;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 for a Path Filter. # Filter on a dimension.
                  &quot;values&quot;: [ # Value to filter on.
                    &quot;A String&quot;,
                  ],
                  &quot;match&quot;: &quot;A String&quot;, # Indicates how the filter should be matched to the value.
                  &quot;filter&quot;: &quot;A String&quot;, # Dimension the filter is applied to.
                },
              },
            ],
          },
        ],
      },
    },
  },
  &quot;schedule&quot;: { # Information on how frequently and when to run a query. # Information on how often and when to run a query.
    &quot;startTimeMs&quot;: &quot;A String&quot;, # When to start running the query. Not applicable to `ONE_TIME` frequency.
    &quot;nextRunTimezoneCode&quot;: &quot;A String&quot;, # Canonical timezone code for report generation time. Defaults to America/New_York.
    &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, # Deprecated. This field has no effect.
  },
  &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.
}

  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;queryId&quot;: &quot;A String&quot;, # Query ID.
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;doubleclickbidmanager#query&quot;.
    &quot;timezoneCode&quot;: &quot;A String&quot;, # Canonical timezone code for report data time. Defaults to America/New_York.
    &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;metadata&quot;: { # Query metadata. # Query metadata.
      &quot;running&quot;: True or False, # Whether the latest report is currently running.
      &quot;latestReportRunTimeMs&quot;: &quot;A String&quot;, # The time when the latest report started to run.
      &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;dataRange&quot;: &quot;A String&quot;, # Range of report data.
      &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;title&quot;: &quot;A String&quot;, # Query title. It is used to name the reports generated from this query.
      &quot;googleCloudStoragePathForLatestReport&quot;: &quot;A String&quot;, # The path to the location in Google Cloud Storage where the latest report is stored.
      &quot;sendNotification&quot;: True or False, # Whether to send an email notification when a report is ready. Default to false.
      &quot;format&quot;: &quot;A String&quot;, # Format of the generated report.
      &quot;googleDrivePathForLatestReport&quot;: &quot;A String&quot;, # The path in Google Drive for the latest report.
    },
    &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;type&quot;: &quot;A String&quot;, # Report type.
      &quot;metrics&quot;: [ # Metrics to include as columns in your report.
        &quot;A String&quot;,
      ],
      &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;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;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;name&quot;: &quot;A String&quot;, # Rule name.
                &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 for a Path Filter. # Filter on a dimension.
                          &quot;values&quot;: [ # Value to filter on.
                            &quot;A String&quot;,
                          ],
                          &quot;match&quot;: &quot;A String&quot;, # Indicates how the filter should be matched to the value.
                          &quot;filter&quot;: &quot;A String&quot;, # Dimension the filter is applied to.
                        },
                      },
                    ],
                  },
                ],
              },
            ],
            &quot;name&quot;: &quot;A String&quot;, # Channel Grouping name.
            &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;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;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;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 for a Path Filter. # Filter on a dimension.
                    &quot;values&quot;: [ # Value to filter on.
                      &quot;A String&quot;,
                    ],
                    &quot;match&quot;: &quot;A String&quot;, # Indicates how the filter should be matched to the value.
                    &quot;filter&quot;: &quot;A String&quot;, # Dimension the filter is applied to.
                  },
                },
              ],
            },
          ],
        },
      },
    },
    &quot;schedule&quot;: { # Information on how frequently and when to run a query. # Information on how often and when to run a query.
      &quot;startTimeMs&quot;: &quot;A String&quot;, # When to start running the query. Not applicable to `ONE_TIME` frequency.
      &quot;nextRunTimezoneCode&quot;: &quot;A String&quot;, # Canonical timezone code for report generation time. Defaults to America/New_York.
      &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, # Deprecated. This field has no effect.
    },
    &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.
  }</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;queryId&quot;: &quot;A String&quot;, # Query ID.
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;doubleclickbidmanager#query&quot;.
    &quot;timezoneCode&quot;: &quot;A String&quot;, # Canonical timezone code for report data time. Defaults to America/New_York.
    &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;metadata&quot;: { # Query metadata. # Query metadata.
      &quot;running&quot;: True or False, # Whether the latest report is currently running.
      &quot;latestReportRunTimeMs&quot;: &quot;A String&quot;, # The time when the latest report started to run.
      &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;dataRange&quot;: &quot;A String&quot;, # Range of report data.
      &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;title&quot;: &quot;A String&quot;, # Query title. It is used to name the reports generated from this query.
      &quot;googleCloudStoragePathForLatestReport&quot;: &quot;A String&quot;, # The path to the location in Google Cloud Storage where the latest report is stored.
      &quot;sendNotification&quot;: True or False, # Whether to send an email notification when a report is ready. Default to false.
      &quot;format&quot;: &quot;A String&quot;, # Format of the generated report.
      &quot;googleDrivePathForLatestReport&quot;: &quot;A String&quot;, # The path in Google Drive for the latest report.
    },
    &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;type&quot;: &quot;A String&quot;, # Report type.
      &quot;metrics&quot;: [ # Metrics to include as columns in your report.
        &quot;A String&quot;,
      ],
      &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;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;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;name&quot;: &quot;A String&quot;, # Rule name.
                &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 for a Path Filter. # Filter on a dimension.
                          &quot;values&quot;: [ # Value to filter on.
                            &quot;A String&quot;,
                          ],
                          &quot;match&quot;: &quot;A String&quot;, # Indicates how the filter should be matched to the value.
                          &quot;filter&quot;: &quot;A String&quot;, # Dimension the filter is applied to.
                        },
                      },
                    ],
                  },
                ],
              },
            ],
            &quot;name&quot;: &quot;A String&quot;, # Channel Grouping name.
            &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;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;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;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 for a Path Filter. # Filter on a dimension.
                    &quot;values&quot;: [ # Value to filter on.
                      &quot;A String&quot;,
                    ],
                    &quot;match&quot;: &quot;A String&quot;, # Indicates how the filter should be matched to the value.
                    &quot;filter&quot;: &quot;A String&quot;, # Dimension the filter is applied to.
                  },
                },
              ],
            },
          ],
        },
      },
    },
    &quot;schedule&quot;: { # Information on how frequently and when to run a query. # Information on how often and when to run a query.
      &quot;startTimeMs&quot;: &quot;A String&quot;, # When to start running the query. Not applicable to `ONE_TIME` frequency.
      &quot;nextRunTimezoneCode&quot;: &quot;A String&quot;, # Canonical timezone code for report generation time. Defaults to America/New_York.
      &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, # Deprecated. This field has no effect.
    },
    &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.
  }</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;nextPageToken&quot;: &quot;A String&quot;, # Next page&#x27;s pagination token if one exists.
    &quot;queries&quot;: [ # Retrieved queries.
      { # Represents a query.
        &quot;queryId&quot;: &quot;A String&quot;, # Query ID.
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;doubleclickbidmanager#query&quot;.
        &quot;timezoneCode&quot;: &quot;A String&quot;, # Canonical timezone code for report data time. Defaults to America/New_York.
        &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;metadata&quot;: { # Query metadata. # Query metadata.
          &quot;running&quot;: True or False, # Whether the latest report is currently running.
          &quot;latestReportRunTimeMs&quot;: &quot;A String&quot;, # The time when the latest report started to run.
          &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;dataRange&quot;: &quot;A String&quot;, # Range of report data.
          &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;title&quot;: &quot;A String&quot;, # Query title. It is used to name the reports generated from this query.
          &quot;googleCloudStoragePathForLatestReport&quot;: &quot;A String&quot;, # The path to the location in Google Cloud Storage where the latest report is stored.
          &quot;sendNotification&quot;: True or False, # Whether to send an email notification when a report is ready. Default to false.
          &quot;format&quot;: &quot;A String&quot;, # Format of the generated report.
          &quot;googleDrivePathForLatestReport&quot;: &quot;A String&quot;, # The path in Google Drive for the latest report.
        },
        &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;type&quot;: &quot;A String&quot;, # Report type.
          &quot;metrics&quot;: [ # Metrics to include as columns in your report.
            &quot;A String&quot;,
          ],
          &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;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;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;name&quot;: &quot;A String&quot;, # Rule name.
                    &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 for a Path Filter. # Filter on a dimension.
                              &quot;values&quot;: [ # Value to filter on.
                                &quot;A String&quot;,
                              ],
                              &quot;match&quot;: &quot;A String&quot;, # Indicates how the filter should be matched to the value.
                              &quot;filter&quot;: &quot;A String&quot;, # Dimension the filter is applied to.
                            },
                          },
                        ],
                      },
                    ],
                  },
                ],
                &quot;name&quot;: &quot;A String&quot;, # Channel Grouping name.
                &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;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;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;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 for a Path Filter. # Filter on a dimension.
                        &quot;values&quot;: [ # Value to filter on.
                          &quot;A String&quot;,
                        ],
                        &quot;match&quot;: &quot;A String&quot;, # Indicates how the filter should be matched to the value.
                        &quot;filter&quot;: &quot;A String&quot;, # Dimension the filter is applied to.
                      },
                    },
                  ],
                },
              ],
            },
          },
        },
        &quot;schedule&quot;: { # Information on how frequently and when to run a query. # Information on how often and when to run a query.
          &quot;startTimeMs&quot;: &quot;A String&quot;, # When to start running the query. Not applicable to `ONE_TIME` frequency.
          &quot;nextRunTimezoneCode&quot;: &quot;A String&quot;, # Canonical timezone code for report generation time. Defaults to America/New_York.
          &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, # Deprecated. This field has no effect.
        },
        &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;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;doubleclickbidmanager#listQueriesResponse&quot;.
  }</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, 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;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;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;timezoneCode&quot;: &quot;A String&quot;, # Canonical timezone code for report data time. Defaults to America/New_York.
    &quot;dataRange&quot;: &quot;A String&quot;, # Report data range used to generate the report.
  }

  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>