<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">G Suite 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="#create">create(matterId, body, 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 a saved query by Id.</p>
<p class="toc_element">
  <code><a href="#get">get(matterId, savedQueryId, x__xgafv=None)</a></code></p>
<p class="firstline">Retrieves a saved query by Id.</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 saved queries within a matter. An empty page token in</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="create">create(matterId, body, x__xgafv=None)</code>
  <pre>Creates a saved query.

Args:
  matterId: string, The matter id of the parent matter for which the saved query is to be
created. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # Definition of the saved query.
    "matterId": "A String", # Output only. The matter id of the associated matter.
        # The server does not look at this field during create and always uses matter
        # id in the URL.
    "query": { # A query definition relevant for search & export. # The underlying Query object which contains all the information of the saved
        # query.
      "terms": "A String", # The corpus-specific
          # <a href="https://support.google.com/vault/answer/2474474">search
          # operators</a> used to generate search results.
      "sharedDriveInfo": { # Shared drives to search # When 'SHARED_DRIVE' is chosen as search method, shared_drive_info needs
          # to be specified.
        "sharedDriveIds": [ # List of Shared drive ids, as provided by <a
            # href="https://developers.google.com/drive">Drive API</a>.
          "A String",
        ],
      },
      "teamDriveInfo": { # Team Drives to search # When 'TEAM_DRIVE' is chosen as search method, team_drive_info needs to be
          # specified.
        "teamDriveIds": [ # List of Team Drive ids, as provided by <a
            # href="https://developers.google.com/drive">Drive API</a>.
          "A String",
        ],
      },
      "mailOptions": { # Mail search advanced options # For mail search, specify more options in this field.
        "excludeDrafts": True or False, # Set to true to exclude drafts.
      },
      "searchMethod": "A String", # The search method to use.
      "hangoutsChatInfo": { # Accounts to search # When 'ROOM' is chosen as search method, hangout_chats_info needs to be
          # specified. (read-only)
        "roomId": [ # A set of rooms to search.
          "A String",
        ],
      },
      "method": "A String", # The search method to use. This field is similar to the search_method field
          # but is introduced to support shared drives. It supports all
          # search method types. In case the search_method is TEAM_DRIVE the response
          # of this field will be SHARED_DRIVE only.
      "accountInfo": { # Accounts to search # When 'ACCOUNT' is chosen as search method,
          # account_info needs to be specified.
        "emails": [ # A set of accounts to search.
          "A String",
        ],
      },
      "hangoutsChatOptions": { # Hangouts chat search advanced options # For hangouts chat search, specify more options in this field. (read-only)
        "includeRooms": True or False, # Set to true to include rooms.
      },
      "startTime": "A String", # The start time range for the search query. These timestamps are in GMT and
          # rounded down to the start of the given date.
      "orgUnitInfo": { # Org Unit to search # When 'ORG_UNIT' is chosen as as search method, org_unit_info needs
          # to be specified.
        "orgUnitId": "A String", # Org unit to search, as provided by the
            # <a href="https://developers.google.com/admin-sdk/directory/">Admin SDK
            # Directory API</a>.
      },
      "timeZone": "A String", # The time zone name.
          # It should be an IANA TZ name, such as "America/Los_Angeles".
          # For more information, see
          # <a href="https://en.wikipedia.org/wiki/List_of_tz_database_time_zones">Time
          # Zone</a>.
      "corpus": "A String", # The corpus to search.
      "endTime": "A String", # The end time range for the search query. These timestamps are in GMT and
          # rounded down to the start of the given date.
      "dataScope": "A String", # The data source to search from.
      "driveOptions": { # Drive search advanced options # For Drive search, specify more options in this field.
        "includeSharedDrives": True or False, # Set to true to include shared drive.
        "versionDate": "A String", # Search the versions of the Drive file
            # as of the reference date. These timestamps are in GMT and
            # rounded down to the given date.
        "includeTeamDrives": True or False, # Set to true to include Team Drive.
      },
    },
    "savedQueryId": "A String", # A unique identifier for the saved query.
    "displayName": "A String", # Name of the saved query.
    "createTime": "A String", # Output only. The server generated timestamp at which saved query was
        # created.
  }

  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 saved query.
      "matterId": "A String", # Output only. The matter id of the associated matter.
          # The server does not look at this field during create and always uses matter
          # id in the URL.
      "query": { # A query definition relevant for search & export. # The underlying Query object which contains all the information of the saved
          # query.
        "terms": "A String", # The corpus-specific
            # <a href="https://support.google.com/vault/answer/2474474">search
            # operators</a> used to generate search results.
        "sharedDriveInfo": { # Shared drives to search # When 'SHARED_DRIVE' is chosen as search method, shared_drive_info needs
            # to be specified.
          "sharedDriveIds": [ # List of Shared drive ids, as provided by <a
              # href="https://developers.google.com/drive">Drive API</a>.
            "A String",
          ],
        },
        "teamDriveInfo": { # Team Drives to search # When 'TEAM_DRIVE' is chosen as search method, team_drive_info needs to be
            # specified.
          "teamDriveIds": [ # List of Team Drive ids, as provided by <a
              # href="https://developers.google.com/drive">Drive API</a>.
            "A String",
          ],
        },
        "mailOptions": { # Mail search advanced options # For mail search, specify more options in this field.
          "excludeDrafts": True or False, # Set to true to exclude drafts.
        },
        "searchMethod": "A String", # The search method to use.
        "hangoutsChatInfo": { # Accounts to search # When 'ROOM' is chosen as search method, hangout_chats_info needs to be
            # specified. (read-only)
          "roomId": [ # A set of rooms to search.
            "A String",
          ],
        },
        "method": "A String", # The search method to use. This field is similar to the search_method field
            # but is introduced to support shared drives. It supports all
            # search method types. In case the search_method is TEAM_DRIVE the response
            # of this field will be SHARED_DRIVE only.
        "accountInfo": { # Accounts to search # When 'ACCOUNT' is chosen as search method,
            # account_info needs to be specified.
          "emails": [ # A set of accounts to search.
            "A String",
          ],
        },
        "hangoutsChatOptions": { # Hangouts chat search advanced options # For hangouts chat search, specify more options in this field. (read-only)
          "includeRooms": True or False, # Set to true to include rooms.
        },
        "startTime": "A String", # The start time range for the search query. These timestamps are in GMT and
            # rounded down to the start of the given date.
        "orgUnitInfo": { # Org Unit to search # When 'ORG_UNIT' is chosen as as search method, org_unit_info needs
            # to be specified.
          "orgUnitId": "A String", # Org unit to search, as provided by the
              # <a href="https://developers.google.com/admin-sdk/directory/">Admin SDK
              # Directory API</a>.
        },
        "timeZone": "A String", # The time zone name.
            # It should be an IANA TZ name, such as "America/Los_Angeles".
            # For more information, see
            # <a href="https://en.wikipedia.org/wiki/List_of_tz_database_time_zones">Time
            # Zone</a>.
        "corpus": "A String", # The corpus to search.
        "endTime": "A String", # The end time range for the search query. These timestamps are in GMT and
            # rounded down to the start of the given date.
        "dataScope": "A String", # The data source to search from.
        "driveOptions": { # Drive search advanced options # For Drive search, specify more options in this field.
          "includeSharedDrives": True or False, # Set to true to include shared drive.
          "versionDate": "A String", # Search the versions of the Drive file
              # as of the reference date. These timestamps are in GMT and
              # rounded down to the given date.
          "includeTeamDrives": True or False, # Set to true to include Team Drive.
        },
      },
      "savedQueryId": "A String", # A unique identifier for the saved query.
      "displayName": "A String", # Name of the saved query.
      "createTime": "A String", # Output only. The server generated timestamp at which saved query was
          # created.
    }</pre>
</div>

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

Args:
  matterId: string, The matter id of the parent matter for which the saved query is to be
deleted. (required)
  savedQueryId: string, Id of the saved query to be deleted. (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 a saved query by Id.

Args:
  matterId: string, The matter id of the parent matter for which the saved query is to be
retrieved. (required)
  savedQueryId: string, Id of the saved query to be retrieved. (required)
  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 saved query.
      "matterId": "A String", # Output only. The matter id of the associated matter.
          # The server does not look at this field during create and always uses matter
          # id in the URL.
      "query": { # A query definition relevant for search & export. # The underlying Query object which contains all the information of the saved
          # query.
        "terms": "A String", # The corpus-specific
            # <a href="https://support.google.com/vault/answer/2474474">search
            # operators</a> used to generate search results.
        "sharedDriveInfo": { # Shared drives to search # When 'SHARED_DRIVE' is chosen as search method, shared_drive_info needs
            # to be specified.
          "sharedDriveIds": [ # List of Shared drive ids, as provided by <a
              # href="https://developers.google.com/drive">Drive API</a>.
            "A String",
          ],
        },
        "teamDriveInfo": { # Team Drives to search # When 'TEAM_DRIVE' is chosen as search method, team_drive_info needs to be
            # specified.
          "teamDriveIds": [ # List of Team Drive ids, as provided by <a
              # href="https://developers.google.com/drive">Drive API</a>.
            "A String",
          ],
        },
        "mailOptions": { # Mail search advanced options # For mail search, specify more options in this field.
          "excludeDrafts": True or False, # Set to true to exclude drafts.
        },
        "searchMethod": "A String", # The search method to use.
        "hangoutsChatInfo": { # Accounts to search # When 'ROOM' is chosen as search method, hangout_chats_info needs to be
            # specified. (read-only)
          "roomId": [ # A set of rooms to search.
            "A String",
          ],
        },
        "method": "A String", # The search method to use. This field is similar to the search_method field
            # but is introduced to support shared drives. It supports all
            # search method types. In case the search_method is TEAM_DRIVE the response
            # of this field will be SHARED_DRIVE only.
        "accountInfo": { # Accounts to search # When 'ACCOUNT' is chosen as search method,
            # account_info needs to be specified.
          "emails": [ # A set of accounts to search.
            "A String",
          ],
        },
        "hangoutsChatOptions": { # Hangouts chat search advanced options # For hangouts chat search, specify more options in this field. (read-only)
          "includeRooms": True or False, # Set to true to include rooms.
        },
        "startTime": "A String", # The start time range for the search query. These timestamps are in GMT and
            # rounded down to the start of the given date.
        "orgUnitInfo": { # Org Unit to search # When 'ORG_UNIT' is chosen as as search method, org_unit_info needs
            # to be specified.
          "orgUnitId": "A String", # Org unit to search, as provided by the
              # <a href="https://developers.google.com/admin-sdk/directory/">Admin SDK
              # Directory API</a>.
        },
        "timeZone": "A String", # The time zone name.
            # It should be an IANA TZ name, such as "America/Los_Angeles".
            # For more information, see
            # <a href="https://en.wikipedia.org/wiki/List_of_tz_database_time_zones">Time
            # Zone</a>.
        "corpus": "A String", # The corpus to search.
        "endTime": "A String", # The end time range for the search query. These timestamps are in GMT and
            # rounded down to the start of the given date.
        "dataScope": "A String", # The data source to search from.
        "driveOptions": { # Drive search advanced options # For Drive search, specify more options in this field.
          "includeSharedDrives": True or False, # Set to true to include shared drive.
          "versionDate": "A String", # Search the versions of the Drive file
              # as of the reference date. These timestamps are in GMT and
              # rounded down to the given date.
          "includeTeamDrives": True or False, # Set to true to include Team Drive.
        },
      },
      "savedQueryId": "A String", # A unique identifier for the saved query.
      "displayName": "A String", # Name of the saved query.
      "createTime": "A String", # Output only. The server generated timestamp at which saved query was
          # created.
    }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(matterId, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists saved queries within a matter. An empty page token in
ListSavedQueriesResponse denotes no more saved queries to list.

Args:
  matterId: string, The matter id of the parent matter for which the saved queries are to be
retrieved. (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.
    "nextPageToken": "A String", # 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.
    "savedQueries": [ # List of output saved queries.
      { # Definition of the saved query.
          "matterId": "A String", # Output only. The matter id of the associated matter.
              # The server does not look at this field during create and always uses matter
              # id in the URL.
          "query": { # A query definition relevant for search & export. # The underlying Query object which contains all the information of the saved
              # query.
            "terms": "A String", # The corpus-specific
                # <a href="https://support.google.com/vault/answer/2474474">search
                # operators</a> used to generate search results.
            "sharedDriveInfo": { # Shared drives to search # When 'SHARED_DRIVE' is chosen as search method, shared_drive_info needs
                # to be specified.
              "sharedDriveIds": [ # List of Shared drive ids, as provided by <a
                  # href="https://developers.google.com/drive">Drive API</a>.
                "A String",
              ],
            },
            "teamDriveInfo": { # Team Drives to search # When 'TEAM_DRIVE' is chosen as search method, team_drive_info needs to be
                # specified.
              "teamDriveIds": [ # List of Team Drive ids, as provided by <a
                  # href="https://developers.google.com/drive">Drive API</a>.
                "A String",
              ],
            },
            "mailOptions": { # Mail search advanced options # For mail search, specify more options in this field.
              "excludeDrafts": True or False, # Set to true to exclude drafts.
            },
            "searchMethod": "A String", # The search method to use.
            "hangoutsChatInfo": { # Accounts to search # When 'ROOM' is chosen as search method, hangout_chats_info needs to be
                # specified. (read-only)
              "roomId": [ # A set of rooms to search.
                "A String",
              ],
            },
            "method": "A String", # The search method to use. This field is similar to the search_method field
                # but is introduced to support shared drives. It supports all
                # search method types. In case the search_method is TEAM_DRIVE the response
                # of this field will be SHARED_DRIVE only.
            "accountInfo": { # Accounts to search # When 'ACCOUNT' is chosen as search method,
                # account_info needs to be specified.
              "emails": [ # A set of accounts to search.
                "A String",
              ],
            },
            "hangoutsChatOptions": { # Hangouts chat search advanced options # For hangouts chat search, specify more options in this field. (read-only)
              "includeRooms": True or False, # Set to true to include rooms.
            },
            "startTime": "A String", # The start time range for the search query. These timestamps are in GMT and
                # rounded down to the start of the given date.
            "orgUnitInfo": { # Org Unit to search # When 'ORG_UNIT' is chosen as as search method, org_unit_info needs
                # to be specified.
              "orgUnitId": "A String", # Org unit to search, as provided by the
                  # <a href="https://developers.google.com/admin-sdk/directory/">Admin SDK
                  # Directory API</a>.
            },
            "timeZone": "A String", # The time zone name.
                # It should be an IANA TZ name, such as "America/Los_Angeles".
                # For more information, see
                # <a href="https://en.wikipedia.org/wiki/List_of_tz_database_time_zones">Time
                # Zone</a>.
            "corpus": "A String", # The corpus to search.
            "endTime": "A String", # The end time range for the search query. These timestamps are in GMT and
                # rounded down to the start of the given date.
            "dataScope": "A String", # The data source to search from.
            "driveOptions": { # Drive search advanced options # For Drive search, specify more options in this field.
              "includeSharedDrives": True or False, # Set to true to include shared drive.
              "versionDate": "A String", # Search the versions of the Drive file
                  # as of the reference date. These timestamps are in GMT and
                  # rounded down to the given date.
              "includeTeamDrives": True or False, # Set to true to include Team Drive.
            },
          },
          "savedQueryId": "A String", # A unique identifier for the saved query.
          "displayName": "A String", # Name of the saved query.
          "createTime": "A String", # Output only. The server generated timestamp at which saved query was
              # created.
        },
    ],
  }</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 'execute()' on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

</body></html>