<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="vault_v1.html">Google Vault API</a> . <a href="vault_v1.matters.html">matters</a> . <a href="vault_v1.matters.savedQueries.html">savedQueries</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="#create">create(matterId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a saved query.</p>
<p class="toc_element">
  <code><a href="#delete">delete(matterId, savedQueryId, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes the specified saved query.</p>
<p class="toc_element">
  <code><a href="#get">get(matterId, savedQueryId, x__xgafv=None)</a></code></p>
<p class="firstline">Retrieves the specified saved query.</p>
<p class="toc_element">
  <code><a href="#list">list(matterId, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists the saved queries in a matter.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</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="create">create(matterId, body=None, x__xgafv=None)</code>
  <pre>Creates a saved query.

Args:
  matterId: string, The ID of the matter to create the saved query in. (required)
  body: object, The request body.
    The object takes the form of:

{ # The definition of a saved query. To work with Vault resources, the account must have the [required Vault privileges](https://support.google.com/vault/answer/2799699) and access to the matter. To access a matter, the account must have created the matter, have the matter shared with them, or have the **View All Matters** privilege.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The server-generated timestamp when the saved query was created.
  &quot;displayName&quot;: &quot;A String&quot;, # The name of the saved query.
  &quot;matterId&quot;: &quot;A String&quot;, # Output only. The matter ID of the matter the saved query is saved in. The server does not use this field during create and always uses matter ID in the URL.
  &quot;query&quot;: { # The query definition used for search and export. # The search parameters of the saved query.
    &quot;accountInfo&quot;: { # The accounts to search # Required when **SearchMethod** is **ACCOUNT**.
      &quot;emails&quot;: [ # A set of accounts to search.
        &quot;A String&quot;,
      ],
    },
    &quot;corpus&quot;: &quot;A String&quot;, # The Google Workspace service to search.
    &quot;dataScope&quot;: &quot;A String&quot;, # The data source to search.
    &quot;driveOptions&quot;: { # Additional options for Drive search # Set Drive search-specific options.
      &quot;includeSharedDrives&quot;: True or False, # Set to **true** to include shared drives.
      &quot;includeTeamDrives&quot;: True or False, # Set to true to include Team Drive.
      &quot;versionDate&quot;: &quot;A String&quot;, # Search the current version of the Drive file, but export the contents of the last version saved before 12:00 AM UTC on the specified date. Enter the date in UTC.
    },
    &quot;endTime&quot;: &quot;A String&quot;, # The end time for the search query. Specify in GMT. The value is rounded to 12 AM on the specified date.
    &quot;hangoutsChatInfo&quot;: { # The Chat spaces to search # Required when **SearchMethod** is **ROOM**. (read-only)
      &quot;roomId&quot;: [ # A list of Chat spaces IDs, as provided by the [Chat API](https://developers.google.com/hangouts/chat).
        &quot;A String&quot;,
      ],
    },
    &quot;hangoutsChatOptions&quot;: { # Additional options for Google Chat search # Set Chat search-specific options. (read-only)
      &quot;includeRooms&quot;: True or False, # For searches by account or organizational unit, set to **true** to include rooms.
    },
    &quot;mailOptions&quot;: { # Additional options for Gmail search # Set Gmail search-specific options.
      &quot;excludeDrafts&quot;: True or False, # Set to **true** to exclude drafts.
    },
    &quot;method&quot;: &quot;A String&quot;, # The entity to search. This field replaces **searchMethod** to support shared drives. When **searchMethod** is **TEAM_DRIVE**, the response of this field is **SHARED_DRIVE**.
    &quot;orgUnitInfo&quot;: { # The organizational unit to search # Required when **SearchMethod** is **ORG_UNIT**.
      &quot;orgUnitId&quot;: &quot;A String&quot;, # The name of the organizational unit to search, as provided by the [Admin SDK Directory API](https://developers.google.com/admin-sdk/directory/).
    },
    &quot;searchMethod&quot;: &quot;A String&quot;, # The search method to use.
    &quot;sharedDriveInfo&quot;: { # The shared drives to search # Required when **SearchMethod** is **SHARED_DRIVE**.
      &quot;sharedDriveIds&quot;: [ # A list of shared drive IDs, as provided by the [Drive API](https://developers.google.com/drive).
        &quot;A String&quot;,
      ],
    },
    &quot;startTime&quot;: &quot;A String&quot;, # The start time for the search query. Specify in GMT. The value is rounded to 12 AM on the specified date.
    &quot;teamDriveInfo&quot;: { # Team Drives to search # Required when **SearchMethod** is **TEAM_DRIVE**.
      &quot;teamDriveIds&quot;: [ # List of Team Drive IDs, as provided by the [Drive API](https://developers.google.com/drive).
        &quot;A String&quot;,
      ],
    },
    &quot;terms&quot;: &quot;A String&quot;, # Service-specific [search operators](https://support.google.com/vault/answer/2474474) to filter search results.
    &quot;timeZone&quot;: &quot;A String&quot;, # The time zone name. It should be an IANA TZ name, such as &quot;America/Los_Angeles&quot;. For a list of time zone names, see [Time Zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones). For more information about how Vault uses time zones, see [the Vault help center](https://support.google.com/vault/answer/6092995#time).
    &quot;voiceOptions&quot;: { # Additional options for Voice search # Set Voice search-specific options.
      &quot;coveredData&quot;: [ # Datatypes to search
        &quot;A String&quot;,
      ],
    },
  },
  &quot;savedQueryId&quot;: &quot;A String&quot;, # A unique identifier for the saved query.
}

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

Returns:
  An object of the form:

    { # The definition of a saved query. To work with Vault resources, the account must have the [required Vault privileges](https://support.google.com/vault/answer/2799699) and access to the matter. To access a matter, the account must have created the matter, have the matter shared with them, or have the **View All Matters** privilege.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The server-generated timestamp when the saved query was created.
  &quot;displayName&quot;: &quot;A String&quot;, # The name of the saved query.
  &quot;matterId&quot;: &quot;A String&quot;, # Output only. The matter ID of the matter the saved query is saved in. The server does not use this field during create and always uses matter ID in the URL.
  &quot;query&quot;: { # The query definition used for search and export. # The search parameters of the saved query.
    &quot;accountInfo&quot;: { # The accounts to search # Required when **SearchMethod** is **ACCOUNT**.
      &quot;emails&quot;: [ # A set of accounts to search.
        &quot;A String&quot;,
      ],
    },
    &quot;corpus&quot;: &quot;A String&quot;, # The Google Workspace service to search.
    &quot;dataScope&quot;: &quot;A String&quot;, # The data source to search.
    &quot;driveOptions&quot;: { # Additional options for Drive search # Set Drive search-specific options.
      &quot;includeSharedDrives&quot;: True or False, # Set to **true** to include shared drives.
      &quot;includeTeamDrives&quot;: True or False, # Set to true to include Team Drive.
      &quot;versionDate&quot;: &quot;A String&quot;, # Search the current version of the Drive file, but export the contents of the last version saved before 12:00 AM UTC on the specified date. Enter the date in UTC.
    },
    &quot;endTime&quot;: &quot;A String&quot;, # The end time for the search query. Specify in GMT. The value is rounded to 12 AM on the specified date.
    &quot;hangoutsChatInfo&quot;: { # The Chat spaces to search # Required when **SearchMethod** is **ROOM**. (read-only)
      &quot;roomId&quot;: [ # A list of Chat spaces IDs, as provided by the [Chat API](https://developers.google.com/hangouts/chat).
        &quot;A String&quot;,
      ],
    },
    &quot;hangoutsChatOptions&quot;: { # Additional options for Google Chat search # Set Chat search-specific options. (read-only)
      &quot;includeRooms&quot;: True or False, # For searches by account or organizational unit, set to **true** to include rooms.
    },
    &quot;mailOptions&quot;: { # Additional options for Gmail search # Set Gmail search-specific options.
      &quot;excludeDrafts&quot;: True or False, # Set to **true** to exclude drafts.
    },
    &quot;method&quot;: &quot;A String&quot;, # The entity to search. This field replaces **searchMethod** to support shared drives. When **searchMethod** is **TEAM_DRIVE**, the response of this field is **SHARED_DRIVE**.
    &quot;orgUnitInfo&quot;: { # The organizational unit to search # Required when **SearchMethod** is **ORG_UNIT**.
      &quot;orgUnitId&quot;: &quot;A String&quot;, # The name of the organizational unit to search, as provided by the [Admin SDK Directory API](https://developers.google.com/admin-sdk/directory/).
    },
    &quot;searchMethod&quot;: &quot;A String&quot;, # The search method to use.
    &quot;sharedDriveInfo&quot;: { # The shared drives to search # Required when **SearchMethod** is **SHARED_DRIVE**.
      &quot;sharedDriveIds&quot;: [ # A list of shared drive IDs, as provided by the [Drive API](https://developers.google.com/drive).
        &quot;A String&quot;,
      ],
    },
    &quot;startTime&quot;: &quot;A String&quot;, # The start time for the search query. Specify in GMT. The value is rounded to 12 AM on the specified date.
    &quot;teamDriveInfo&quot;: { # Team Drives to search # Required when **SearchMethod** is **TEAM_DRIVE**.
      &quot;teamDriveIds&quot;: [ # List of Team Drive IDs, as provided by the [Drive API](https://developers.google.com/drive).
        &quot;A String&quot;,
      ],
    },
    &quot;terms&quot;: &quot;A String&quot;, # Service-specific [search operators](https://support.google.com/vault/answer/2474474) to filter search results.
    &quot;timeZone&quot;: &quot;A String&quot;, # The time zone name. It should be an IANA TZ name, such as &quot;America/Los_Angeles&quot;. For a list of time zone names, see [Time Zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones). For more information about how Vault uses time zones, see [the Vault help center](https://support.google.com/vault/answer/6092995#time).
    &quot;voiceOptions&quot;: { # Additional options for Voice search # Set Voice search-specific options.
      &quot;coveredData&quot;: [ # Datatypes to search
        &quot;A String&quot;,
      ],
    },
  },
  &quot;savedQueryId&quot;: &quot;A String&quot;, # A unique identifier for the saved query.
}</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(matterId, savedQueryId, x__xgafv=None)</code>
  <pre>Deletes the specified saved query.

Args:
  matterId: string, The ID of the matter to delete the saved query from. (required)
  savedQueryId: string, ID of the saved query to delete. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); } The JSON representation for `Empty` is empty JSON object `{}`.
}</pre>
</div>

<div class="method">
    <code class="details" id="get">get(matterId, savedQueryId, x__xgafv=None)</code>
  <pre>Retrieves the specified saved query.

Args:
  matterId: string, The ID of the matter to get the saved query from. (required)
  savedQueryId: string, ID of the saved query 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:

    { # The definition of a saved query. To work with Vault resources, the account must have the [required Vault privileges](https://support.google.com/vault/answer/2799699) and access to the matter. To access a matter, the account must have created the matter, have the matter shared with them, or have the **View All Matters** privilege.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The server-generated timestamp when the saved query was created.
  &quot;displayName&quot;: &quot;A String&quot;, # The name of the saved query.
  &quot;matterId&quot;: &quot;A String&quot;, # Output only. The matter ID of the matter the saved query is saved in. The server does not use this field during create and always uses matter ID in the URL.
  &quot;query&quot;: { # The query definition used for search and export. # The search parameters of the saved query.
    &quot;accountInfo&quot;: { # The accounts to search # Required when **SearchMethod** is **ACCOUNT**.
      &quot;emails&quot;: [ # A set of accounts to search.
        &quot;A String&quot;,
      ],
    },
    &quot;corpus&quot;: &quot;A String&quot;, # The Google Workspace service to search.
    &quot;dataScope&quot;: &quot;A String&quot;, # The data source to search.
    &quot;driveOptions&quot;: { # Additional options for Drive search # Set Drive search-specific options.
      &quot;includeSharedDrives&quot;: True or False, # Set to **true** to include shared drives.
      &quot;includeTeamDrives&quot;: True or False, # Set to true to include Team Drive.
      &quot;versionDate&quot;: &quot;A String&quot;, # Search the current version of the Drive file, but export the contents of the last version saved before 12:00 AM UTC on the specified date. Enter the date in UTC.
    },
    &quot;endTime&quot;: &quot;A String&quot;, # The end time for the search query. Specify in GMT. The value is rounded to 12 AM on the specified date.
    &quot;hangoutsChatInfo&quot;: { # The Chat spaces to search # Required when **SearchMethod** is **ROOM**. (read-only)
      &quot;roomId&quot;: [ # A list of Chat spaces IDs, as provided by the [Chat API](https://developers.google.com/hangouts/chat).
        &quot;A String&quot;,
      ],
    },
    &quot;hangoutsChatOptions&quot;: { # Additional options for Google Chat search # Set Chat search-specific options. (read-only)
      &quot;includeRooms&quot;: True or False, # For searches by account or organizational unit, set to **true** to include rooms.
    },
    &quot;mailOptions&quot;: { # Additional options for Gmail search # Set Gmail search-specific options.
      &quot;excludeDrafts&quot;: True or False, # Set to **true** to exclude drafts.
    },
    &quot;method&quot;: &quot;A String&quot;, # The entity to search. This field replaces **searchMethod** to support shared drives. When **searchMethod** is **TEAM_DRIVE**, the response of this field is **SHARED_DRIVE**.
    &quot;orgUnitInfo&quot;: { # The organizational unit to search # Required when **SearchMethod** is **ORG_UNIT**.
      &quot;orgUnitId&quot;: &quot;A String&quot;, # The name of the organizational unit to search, as provided by the [Admin SDK Directory API](https://developers.google.com/admin-sdk/directory/).
    },
    &quot;searchMethod&quot;: &quot;A String&quot;, # The search method to use.
    &quot;sharedDriveInfo&quot;: { # The shared drives to search # Required when **SearchMethod** is **SHARED_DRIVE**.
      &quot;sharedDriveIds&quot;: [ # A list of shared drive IDs, as provided by the [Drive API](https://developers.google.com/drive).
        &quot;A String&quot;,
      ],
    },
    &quot;startTime&quot;: &quot;A String&quot;, # The start time for the search query. Specify in GMT. The value is rounded to 12 AM on the specified date.
    &quot;teamDriveInfo&quot;: { # Team Drives to search # Required when **SearchMethod** is **TEAM_DRIVE**.
      &quot;teamDriveIds&quot;: [ # List of Team Drive IDs, as provided by the [Drive API](https://developers.google.com/drive).
        &quot;A String&quot;,
      ],
    },
    &quot;terms&quot;: &quot;A String&quot;, # Service-specific [search operators](https://support.google.com/vault/answer/2474474) to filter search results.
    &quot;timeZone&quot;: &quot;A String&quot;, # The time zone name. It should be an IANA TZ name, such as &quot;America/Los_Angeles&quot;. For a list of time zone names, see [Time Zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones). For more information about how Vault uses time zones, see [the Vault help center](https://support.google.com/vault/answer/6092995#time).
    &quot;voiceOptions&quot;: { # Additional options for Voice search # Set Voice search-specific options.
      &quot;coveredData&quot;: [ # Datatypes to search
        &quot;A String&quot;,
      ],
    },
  },
  &quot;savedQueryId&quot;: &quot;A String&quot;, # A unique identifier for the saved query.
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(matterId, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists the saved queries in a matter.

Args:
  matterId: string, The ID of the matter to get the saved queries for. (required)
  pageSize: integer, The maximum number of saved queries to return.
  pageToken: string, The pagination token as returned in the previous response. An empty token means start from the beginning.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Definition of the response for method ListSaveQuery.
  &quot;nextPageToken&quot;: &quot;A String&quot;, # Page token to retrieve the next page of results in the list. If this is empty, then there are no more saved queries to list.
  &quot;savedQueries&quot;: [ # List of saved queries.
    { # The definition of a saved query. To work with Vault resources, the account must have the [required Vault privileges](https://support.google.com/vault/answer/2799699) and access to the matter. To access a matter, the account must have created the matter, have the matter shared with them, or have the **View All Matters** privilege.
      &quot;createTime&quot;: &quot;A String&quot;, # Output only. The server-generated timestamp when the saved query was created.
      &quot;displayName&quot;: &quot;A String&quot;, # The name of the saved query.
      &quot;matterId&quot;: &quot;A String&quot;, # Output only. The matter ID of the matter the saved query is saved in. The server does not use this field during create and always uses matter ID in the URL.
      &quot;query&quot;: { # The query definition used for search and export. # The search parameters of the saved query.
        &quot;accountInfo&quot;: { # The accounts to search # Required when **SearchMethod** is **ACCOUNT**.
          &quot;emails&quot;: [ # A set of accounts to search.
            &quot;A String&quot;,
          ],
        },
        &quot;corpus&quot;: &quot;A String&quot;, # The Google Workspace service to search.
        &quot;dataScope&quot;: &quot;A String&quot;, # The data source to search.
        &quot;driveOptions&quot;: { # Additional options for Drive search # Set Drive search-specific options.
          &quot;includeSharedDrives&quot;: True or False, # Set to **true** to include shared drives.
          &quot;includeTeamDrives&quot;: True or False, # Set to true to include Team Drive.
          &quot;versionDate&quot;: &quot;A String&quot;, # Search the current version of the Drive file, but export the contents of the last version saved before 12:00 AM UTC on the specified date. Enter the date in UTC.
        },
        &quot;endTime&quot;: &quot;A String&quot;, # The end time for the search query. Specify in GMT. The value is rounded to 12 AM on the specified date.
        &quot;hangoutsChatInfo&quot;: { # The Chat spaces to search # Required when **SearchMethod** is **ROOM**. (read-only)
          &quot;roomId&quot;: [ # A list of Chat spaces IDs, as provided by the [Chat API](https://developers.google.com/hangouts/chat).
            &quot;A String&quot;,
          ],
        },
        &quot;hangoutsChatOptions&quot;: { # Additional options for Google Chat search # Set Chat search-specific options. (read-only)
          &quot;includeRooms&quot;: True or False, # For searches by account or organizational unit, set to **true** to include rooms.
        },
        &quot;mailOptions&quot;: { # Additional options for Gmail search # Set Gmail search-specific options.
          &quot;excludeDrafts&quot;: True or False, # Set to **true** to exclude drafts.
        },
        &quot;method&quot;: &quot;A String&quot;, # The entity to search. This field replaces **searchMethod** to support shared drives. When **searchMethod** is **TEAM_DRIVE**, the response of this field is **SHARED_DRIVE**.
        &quot;orgUnitInfo&quot;: { # The organizational unit to search # Required when **SearchMethod** is **ORG_UNIT**.
          &quot;orgUnitId&quot;: &quot;A String&quot;, # The name of the organizational unit to search, as provided by the [Admin SDK Directory API](https://developers.google.com/admin-sdk/directory/).
        },
        &quot;searchMethod&quot;: &quot;A String&quot;, # The search method to use.
        &quot;sharedDriveInfo&quot;: { # The shared drives to search # Required when **SearchMethod** is **SHARED_DRIVE**.
          &quot;sharedDriveIds&quot;: [ # A list of shared drive IDs, as provided by the [Drive API](https://developers.google.com/drive).
            &quot;A String&quot;,
          ],
        },
        &quot;startTime&quot;: &quot;A String&quot;, # The start time for the search query. Specify in GMT. The value is rounded to 12 AM on the specified date.
        &quot;teamDriveInfo&quot;: { # Team Drives to search # Required when **SearchMethod** is **TEAM_DRIVE**.
          &quot;teamDriveIds&quot;: [ # List of Team Drive IDs, as provided by the [Drive API](https://developers.google.com/drive).
            &quot;A String&quot;,
          ],
        },
        &quot;terms&quot;: &quot;A String&quot;, # Service-specific [search operators](https://support.google.com/vault/answer/2474474) to filter search results.
        &quot;timeZone&quot;: &quot;A String&quot;, # The time zone name. It should be an IANA TZ name, such as &quot;America/Los_Angeles&quot;. For a list of time zone names, see [Time Zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones). For more information about how Vault uses time zones, see [the Vault help center](https://support.google.com/vault/answer/6092995#time).
        &quot;voiceOptions&quot;: { # Additional options for Voice search # Set Voice search-specific options.
          &quot;coveredData&quot;: [ # Datatypes to search
            &quot;A String&quot;,
          ],
        },
      },
      &quot;savedQueryId&quot;: &quot;A String&quot;, # A unique identifier for the saved query.
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_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>

</body></html>