<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.holds.html">holds</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="vault_v1.matters.holds.accounts.html">accounts()</a></code>
</p>
<p class="firstline">Returns the accounts Resource.</p>

<p class="toc_element">
  <code><a href="#addHeldAccounts">addHeldAccounts(matterId, holdId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Adds accounts to a hold. Returns a list of accounts that have been successfully added. Accounts can be added only to an existing account-based hold.</p>
<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 hold in the specified matter.</p>
<p class="toc_element">
  <code><a href="#delete">delete(matterId, holdId, x__xgafv=None)</a></code></p>
<p class="firstline">Removes the specified hold and releases the accounts or organizational unit covered by the hold. If the data is not preserved by another hold or retention rule, it might be purged.</p>
<p class="toc_element">
  <code><a href="#get">get(matterId, holdId, view=None, x__xgafv=None)</a></code></p>
<p class="firstline">Gets the specified hold.</p>
<p class="toc_element">
  <code><a href="#list">list(matterId, pageSize=None, pageToken=None, view=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists the holds 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>
<p class="toc_element">
  <code><a href="#removeHeldAccounts">removeHeldAccounts(matterId, holdId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Removes the specified accounts from a hold. Returns a list of statuses in the same order as the request.</p>
<p class="toc_element">
  <code><a href="#update">update(matterId, holdId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates the scope (organizational unit or accounts) and query parameters of a hold. You cannot add accounts to a hold that covers an organizational unit, nor can you add organizational units to a hold that covers individual accounts. If you try, the unsupported values are ignored.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="addHeldAccounts">addHeldAccounts(matterId, holdId, body=None, x__xgafv=None)</code>
  <pre>Adds accounts to a hold. Returns a list of accounts that have been successfully added. Accounts can be added only to an existing account-based hold.

Args:
  matterId: string, The matter ID. (required)
  holdId: string, The hold ID. (required)
  body: object, The request body.
    The object takes the form of:

{ # Add a list of accounts to a hold.
  &quot;accountIds&quot;: [ # A comma-separated list of the account IDs of the accounts to add to the hold. Specify either **emails** or **account_ids**, but not both.
    &quot;A String&quot;,
  ],
  &quot;emails&quot;: [ # A comma-separated list of the emails of the accounts to add to the hold. Specify either **emails** or **account_ids**, but not both.
    &quot;A String&quot;,
  ],
}

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

Returns:
  An object of the form:

    { # Response for batch create held accounts.
  &quot;responses&quot;: [ # The list of responses, in the same order as the batch request.
    { # The status of each account creation, and the **HeldAccount**, if successful.
      &quot;account&quot;: { # An account covered by a hold. This structure is immutable. It can be an individual account or a Google Group, depending on the service. 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. # Returned when the account was successfully created.
        &quot;accountId&quot;: &quot;A String&quot;, # The account ID, as provided by the [Admin SDK](https://developers.google.com/admin-sdk/).
        &quot;email&quot;: &quot;A String&quot;, # The primary email address of the account. If used as an input, this takes precedence over **accountId**.
        &quot;firstName&quot;: &quot;A String&quot;, # Output only. The first name of the account holder.
        &quot;holdTime&quot;: &quot;A String&quot;, # Output only. When the account was put on hold.
        &quot;lastName&quot;: &quot;A String&quot;, # Output only. The last name of the account holder.
      },
      &quot;status&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # Reports the request status. If it failed, returns an error message.
        &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
        &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
          {
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
          },
        ],
        &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
      },
    },
  ],
}</pre>
</div>

<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 hold in the specified matter.

Args:
  matterId: string, The matter ID. (required)
  body: object, The request body.
    The object takes the form of:

{ # A hold. A hold prevents the specified Google Workspace service from purging data for specific accounts or all members of an organizational unit. 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;accounts&quot;: [ # If set, the hold applies to the specified accounts and **orgUnit** must be empty.
    { # An account covered by a hold. This structure is immutable. It can be an individual account or a Google Group, depending on the service. 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;accountId&quot;: &quot;A String&quot;, # The account ID, as provided by the [Admin SDK](https://developers.google.com/admin-sdk/).
      &quot;email&quot;: &quot;A String&quot;, # The primary email address of the account. If used as an input, this takes precedence over **accountId**.
      &quot;firstName&quot;: &quot;A String&quot;, # Output only. The first name of the account holder.
      &quot;holdTime&quot;: &quot;A String&quot;, # Output only. When the account was put on hold.
      &quot;lastName&quot;: &quot;A String&quot;, # Output only. The last name of the account holder.
    },
  ],
  &quot;corpus&quot;: &quot;A String&quot;, # The service to be searched.
  &quot;holdId&quot;: &quot;A String&quot;, # The unique immutable ID of the hold. Assigned during creation.
  &quot;name&quot;: &quot;A String&quot;, # The name of the hold.
  &quot;orgUnit&quot;: { # The organizational unit covered by a hold. This structure is immutable. # If set, the hold applies to all members of the organizational unit and **accounts** must be empty. This property is mutable. For Groups holds, set **accounts**.
    &quot;holdTime&quot;: &quot;A String&quot;, # When the organizational unit was put on hold. This property is immutable.
    &quot;orgUnitId&quot;: &quot;A String&quot;, # The organizational unit&#x27;s immutable ID as provided by the [Admin SDK](https://developers.google.com/admin-sdk/).
  },
  &quot;query&quot;: { # Service-specific options for holds. # Service-specific options. If set, **CorpusQuery** must match **CorpusType**.
    &quot;driveQuery&quot;: { # Options for Drive holds. # Service-specific options for Drive holds. If set, **CorpusType** must be **DRIVE**.
      &quot;includeSharedDriveFiles&quot;: True or False, # To include files in shared drives in the hold, set to **true**.
      &quot;includeTeamDriveFiles&quot;: True or False, # To include files in Team Drives in the hold, set to **true**.
    },
    &quot;groupsQuery&quot;: { # Query options for group holds. # Service-specific options for Groups holds. If set, **CorpusType** must be **GROUPS**.
      &quot;endTime&quot;: &quot;A String&quot;, # The end time for the query. Specify in GMT. The value is rounded to 12 AM on the specified date.
      &quot;startTime&quot;: &quot;A String&quot;, # The start time for the query. Specify in GMT. The value is rounded to 12 AM on the specified date.
      &quot;terms&quot;: &quot;A String&quot;, # The [search operators](https://support.google.com/vault/answer/2474474) used to refine the messages covered by the hold.
    },
    &quot;hangoutsChatQuery&quot;: { # Options for Chat holds. # Service-specific options for Chat holds. If set, **CorpusType** must be **HANGOUTS_CHAT**.
      &quot;includeRooms&quot;: True or False, # To include messages in Chat spaces the user was a member of, set to **true**.
    },
    &quot;mailQuery&quot;: { # Query options for Gmail holds. # Service-specific options for Gmail holds. If set, **CorpusType** must be **MAIL**.
      &quot;endTime&quot;: &quot;A String&quot;, # The end time for the query. Specify in GMT. The value is rounded to 12 AM on the specified date.
      &quot;startTime&quot;: &quot;A String&quot;, # The start time for the query. Specify in GMT. The value is rounded to 12 AM on the specified date.
      &quot;terms&quot;: &quot;A String&quot;, # The [search operators](https://support.google.com/vault/answer/2474474) used to refine the messages covered by the hold.
    },
    &quot;voiceQuery&quot;: { # Options for Voice holds. # Service-specific options for Voice holds. If set, **CorpusType** must be **VOICE**.
      &quot;coveredData&quot;: [ # A list of data types covered by the hold. Should be non-empty. Order does not matter and duplicates are ignored.
        &quot;A String&quot;,
      ],
    },
  },
  &quot;updateTime&quot;: &quot;A String&quot;, # The last time this hold was modified.
}

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

Returns:
  An object of the form:

    { # A hold. A hold prevents the specified Google Workspace service from purging data for specific accounts or all members of an organizational unit. 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;accounts&quot;: [ # If set, the hold applies to the specified accounts and **orgUnit** must be empty.
    { # An account covered by a hold. This structure is immutable. It can be an individual account or a Google Group, depending on the service. 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;accountId&quot;: &quot;A String&quot;, # The account ID, as provided by the [Admin SDK](https://developers.google.com/admin-sdk/).
      &quot;email&quot;: &quot;A String&quot;, # The primary email address of the account. If used as an input, this takes precedence over **accountId**.
      &quot;firstName&quot;: &quot;A String&quot;, # Output only. The first name of the account holder.
      &quot;holdTime&quot;: &quot;A String&quot;, # Output only. When the account was put on hold.
      &quot;lastName&quot;: &quot;A String&quot;, # Output only. The last name of the account holder.
    },
  ],
  &quot;corpus&quot;: &quot;A String&quot;, # The service to be searched.
  &quot;holdId&quot;: &quot;A String&quot;, # The unique immutable ID of the hold. Assigned during creation.
  &quot;name&quot;: &quot;A String&quot;, # The name of the hold.
  &quot;orgUnit&quot;: { # The organizational unit covered by a hold. This structure is immutable. # If set, the hold applies to all members of the organizational unit and **accounts** must be empty. This property is mutable. For Groups holds, set **accounts**.
    &quot;holdTime&quot;: &quot;A String&quot;, # When the organizational unit was put on hold. This property is immutable.
    &quot;orgUnitId&quot;: &quot;A String&quot;, # The organizational unit&#x27;s immutable ID as provided by the [Admin SDK](https://developers.google.com/admin-sdk/).
  },
  &quot;query&quot;: { # Service-specific options for holds. # Service-specific options. If set, **CorpusQuery** must match **CorpusType**.
    &quot;driveQuery&quot;: { # Options for Drive holds. # Service-specific options for Drive holds. If set, **CorpusType** must be **DRIVE**.
      &quot;includeSharedDriveFiles&quot;: True or False, # To include files in shared drives in the hold, set to **true**.
      &quot;includeTeamDriveFiles&quot;: True or False, # To include files in Team Drives in the hold, set to **true**.
    },
    &quot;groupsQuery&quot;: { # Query options for group holds. # Service-specific options for Groups holds. If set, **CorpusType** must be **GROUPS**.
      &quot;endTime&quot;: &quot;A String&quot;, # The end time for the query. Specify in GMT. The value is rounded to 12 AM on the specified date.
      &quot;startTime&quot;: &quot;A String&quot;, # The start time for the query. Specify in GMT. The value is rounded to 12 AM on the specified date.
      &quot;terms&quot;: &quot;A String&quot;, # The [search operators](https://support.google.com/vault/answer/2474474) used to refine the messages covered by the hold.
    },
    &quot;hangoutsChatQuery&quot;: { # Options for Chat holds. # Service-specific options for Chat holds. If set, **CorpusType** must be **HANGOUTS_CHAT**.
      &quot;includeRooms&quot;: True or False, # To include messages in Chat spaces the user was a member of, set to **true**.
    },
    &quot;mailQuery&quot;: { # Query options for Gmail holds. # Service-specific options for Gmail holds. If set, **CorpusType** must be **MAIL**.
      &quot;endTime&quot;: &quot;A String&quot;, # The end time for the query. Specify in GMT. The value is rounded to 12 AM on the specified date.
      &quot;startTime&quot;: &quot;A String&quot;, # The start time for the query. Specify in GMT. The value is rounded to 12 AM on the specified date.
      &quot;terms&quot;: &quot;A String&quot;, # The [search operators](https://support.google.com/vault/answer/2474474) used to refine the messages covered by the hold.
    },
    &quot;voiceQuery&quot;: { # Options for Voice holds. # Service-specific options for Voice holds. If set, **CorpusType** must be **VOICE**.
      &quot;coveredData&quot;: [ # A list of data types covered by the hold. Should be non-empty. Order does not matter and duplicates are ignored.
        &quot;A String&quot;,
      ],
    },
  },
  &quot;updateTime&quot;: &quot;A String&quot;, # The last time this hold was modified.
}</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(matterId, holdId, x__xgafv=None)</code>
  <pre>Removes the specified hold and releases the accounts or organizational unit covered by the hold. If the data is not preserved by another hold or retention rule, it might be purged.

Args:
  matterId: string, The matter ID. (required)
  holdId: string, The hold ID. (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, holdId, view=None, x__xgafv=None)</code>
  <pre>Gets the specified hold.

Args:
  matterId: string, The matter ID. (required)
  holdId: string, The hold ID. (required)
  view: string, The amount of detail to return for a hold.
    Allowed values
      HOLD_VIEW_UNSPECIFIED - Not specified. Defaults to **FULL_HOLD**.
      BASIC_HOLD - Returns the hold ID, name, update time, service, and query.
      FULL_HOLD - Returns all details of **BASIC_HOLD** and the entities the hold applies to, such as accounts or organizational unit.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A hold. A hold prevents the specified Google Workspace service from purging data for specific accounts or all members of an organizational unit. 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;accounts&quot;: [ # If set, the hold applies to the specified accounts and **orgUnit** must be empty.
    { # An account covered by a hold. This structure is immutable. It can be an individual account or a Google Group, depending on the service. 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;accountId&quot;: &quot;A String&quot;, # The account ID, as provided by the [Admin SDK](https://developers.google.com/admin-sdk/).
      &quot;email&quot;: &quot;A String&quot;, # The primary email address of the account. If used as an input, this takes precedence over **accountId**.
      &quot;firstName&quot;: &quot;A String&quot;, # Output only. The first name of the account holder.
      &quot;holdTime&quot;: &quot;A String&quot;, # Output only. When the account was put on hold.
      &quot;lastName&quot;: &quot;A String&quot;, # Output only. The last name of the account holder.
    },
  ],
  &quot;corpus&quot;: &quot;A String&quot;, # The service to be searched.
  &quot;holdId&quot;: &quot;A String&quot;, # The unique immutable ID of the hold. Assigned during creation.
  &quot;name&quot;: &quot;A String&quot;, # The name of the hold.
  &quot;orgUnit&quot;: { # The organizational unit covered by a hold. This structure is immutable. # If set, the hold applies to all members of the organizational unit and **accounts** must be empty. This property is mutable. For Groups holds, set **accounts**.
    &quot;holdTime&quot;: &quot;A String&quot;, # When the organizational unit was put on hold. This property is immutable.
    &quot;orgUnitId&quot;: &quot;A String&quot;, # The organizational unit&#x27;s immutable ID as provided by the [Admin SDK](https://developers.google.com/admin-sdk/).
  },
  &quot;query&quot;: { # Service-specific options for holds. # Service-specific options. If set, **CorpusQuery** must match **CorpusType**.
    &quot;driveQuery&quot;: { # Options for Drive holds. # Service-specific options for Drive holds. If set, **CorpusType** must be **DRIVE**.
      &quot;includeSharedDriveFiles&quot;: True or False, # To include files in shared drives in the hold, set to **true**.
      &quot;includeTeamDriveFiles&quot;: True or False, # To include files in Team Drives in the hold, set to **true**.
    },
    &quot;groupsQuery&quot;: { # Query options for group holds. # Service-specific options for Groups holds. If set, **CorpusType** must be **GROUPS**.
      &quot;endTime&quot;: &quot;A String&quot;, # The end time for the query. Specify in GMT. The value is rounded to 12 AM on the specified date.
      &quot;startTime&quot;: &quot;A String&quot;, # The start time for the query. Specify in GMT. The value is rounded to 12 AM on the specified date.
      &quot;terms&quot;: &quot;A String&quot;, # The [search operators](https://support.google.com/vault/answer/2474474) used to refine the messages covered by the hold.
    },
    &quot;hangoutsChatQuery&quot;: { # Options for Chat holds. # Service-specific options for Chat holds. If set, **CorpusType** must be **HANGOUTS_CHAT**.
      &quot;includeRooms&quot;: True or False, # To include messages in Chat spaces the user was a member of, set to **true**.
    },
    &quot;mailQuery&quot;: { # Query options for Gmail holds. # Service-specific options for Gmail holds. If set, **CorpusType** must be **MAIL**.
      &quot;endTime&quot;: &quot;A String&quot;, # The end time for the query. Specify in GMT. The value is rounded to 12 AM on the specified date.
      &quot;startTime&quot;: &quot;A String&quot;, # The start time for the query. Specify in GMT. The value is rounded to 12 AM on the specified date.
      &quot;terms&quot;: &quot;A String&quot;, # The [search operators](https://support.google.com/vault/answer/2474474) used to refine the messages covered by the hold.
    },
    &quot;voiceQuery&quot;: { # Options for Voice holds. # Service-specific options for Voice holds. If set, **CorpusType** must be **VOICE**.
      &quot;coveredData&quot;: [ # A list of data types covered by the hold. Should be non-empty. Order does not matter and duplicates are ignored.
        &quot;A String&quot;,
      ],
    },
  },
  &quot;updateTime&quot;: &quot;A String&quot;, # The last time this hold was modified.
}</pre>
</div>

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

Args:
  matterId: string, The matter ID. (required)
  pageSize: integer, The number of holds to return in the response, between 0 and 100 inclusive. Leaving this empty, or as 0, is the same as **page_size** = 100.
  pageToken: string, The pagination token as returned in the response. An empty token means start from the beginning.
  view: string, The amount of detail to return for a hold.
    Allowed values
      HOLD_VIEW_UNSPECIFIED - Not specified. Defaults to **FULL_HOLD**.
      BASIC_HOLD - Returns the hold ID, name, update time, service, and query.
      FULL_HOLD - Returns all details of **BASIC_HOLD** and the entities the hold applies to, such as accounts or organizational unit.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The holds for a matter.
  &quot;holds&quot;: [ # The list of holds.
    { # A hold. A hold prevents the specified Google Workspace service from purging data for specific accounts or all members of an organizational unit. 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;accounts&quot;: [ # If set, the hold applies to the specified accounts and **orgUnit** must be empty.
        { # An account covered by a hold. This structure is immutable. It can be an individual account or a Google Group, depending on the service. 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;accountId&quot;: &quot;A String&quot;, # The account ID, as provided by the [Admin SDK](https://developers.google.com/admin-sdk/).
          &quot;email&quot;: &quot;A String&quot;, # The primary email address of the account. If used as an input, this takes precedence over **accountId**.
          &quot;firstName&quot;: &quot;A String&quot;, # Output only. The first name of the account holder.
          &quot;holdTime&quot;: &quot;A String&quot;, # Output only. When the account was put on hold.
          &quot;lastName&quot;: &quot;A String&quot;, # Output only. The last name of the account holder.
        },
      ],
      &quot;corpus&quot;: &quot;A String&quot;, # The service to be searched.
      &quot;holdId&quot;: &quot;A String&quot;, # The unique immutable ID of the hold. Assigned during creation.
      &quot;name&quot;: &quot;A String&quot;, # The name of the hold.
      &quot;orgUnit&quot;: { # The organizational unit covered by a hold. This structure is immutable. # If set, the hold applies to all members of the organizational unit and **accounts** must be empty. This property is mutable. For Groups holds, set **accounts**.
        &quot;holdTime&quot;: &quot;A String&quot;, # When the organizational unit was put on hold. This property is immutable.
        &quot;orgUnitId&quot;: &quot;A String&quot;, # The organizational unit&#x27;s immutable ID as provided by the [Admin SDK](https://developers.google.com/admin-sdk/).
      },
      &quot;query&quot;: { # Service-specific options for holds. # Service-specific options. If set, **CorpusQuery** must match **CorpusType**.
        &quot;driveQuery&quot;: { # Options for Drive holds. # Service-specific options for Drive holds. If set, **CorpusType** must be **DRIVE**.
          &quot;includeSharedDriveFiles&quot;: True or False, # To include files in shared drives in the hold, set to **true**.
          &quot;includeTeamDriveFiles&quot;: True or False, # To include files in Team Drives in the hold, set to **true**.
        },
        &quot;groupsQuery&quot;: { # Query options for group holds. # Service-specific options for Groups holds. If set, **CorpusType** must be **GROUPS**.
          &quot;endTime&quot;: &quot;A String&quot;, # The end time for the query. Specify in GMT. The value is rounded to 12 AM on the specified date.
          &quot;startTime&quot;: &quot;A String&quot;, # The start time for the query. Specify in GMT. The value is rounded to 12 AM on the specified date.
          &quot;terms&quot;: &quot;A String&quot;, # The [search operators](https://support.google.com/vault/answer/2474474) used to refine the messages covered by the hold.
        },
        &quot;hangoutsChatQuery&quot;: { # Options for Chat holds. # Service-specific options for Chat holds. If set, **CorpusType** must be **HANGOUTS_CHAT**.
          &quot;includeRooms&quot;: True or False, # To include messages in Chat spaces the user was a member of, set to **true**.
        },
        &quot;mailQuery&quot;: { # Query options for Gmail holds. # Service-specific options for Gmail holds. If set, **CorpusType** must be **MAIL**.
          &quot;endTime&quot;: &quot;A String&quot;, # The end time for the query. Specify in GMT. The value is rounded to 12 AM on the specified date.
          &quot;startTime&quot;: &quot;A String&quot;, # The start time for the query. Specify in GMT. The value is rounded to 12 AM on the specified date.
          &quot;terms&quot;: &quot;A String&quot;, # The [search operators](https://support.google.com/vault/answer/2474474) used to refine the messages covered by the hold.
        },
        &quot;voiceQuery&quot;: { # Options for Voice holds. # Service-specific options for Voice holds. If set, **CorpusType** must be **VOICE**.
          &quot;coveredData&quot;: [ # A list of data types covered by the hold. Should be non-empty. Order does not matter and duplicates are ignored.
            &quot;A String&quot;,
          ],
        },
      },
      &quot;updateTime&quot;: &quot;A String&quot;, # The last time this hold was modified.
    },
  ],
  &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 holds to list.
}</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>

<div class="method">
    <code class="details" id="removeHeldAccounts">removeHeldAccounts(matterId, holdId, body=None, x__xgafv=None)</code>
  <pre>Removes the specified accounts from a hold. Returns a list of statuses in the same order as the request.

Args:
  matterId: string, The matter ID. (required)
  holdId: string, The hold ID. (required)
  body: object, The request body.
    The object takes the form of:

{ # Remove a list of accounts from a hold.
  &quot;accountIds&quot;: [ # The account IDs of the accounts to remove from the hold.
    &quot;A String&quot;,
  ],
}

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

Returns:
  An object of the form:

    { # Response for batch delete held accounts.
  &quot;statuses&quot;: [ # A list of statuses for the deleted accounts. Results have the same order as the request.
    { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).
      &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
      &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
        {
          &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
        },
      ],
      &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="update">update(matterId, holdId, body=None, x__xgafv=None)</code>
  <pre>Updates the scope (organizational unit or accounts) and query parameters of a hold. You cannot add accounts to a hold that covers an organizational unit, nor can you add organizational units to a hold that covers individual accounts. If you try, the unsupported values are ignored.

Args:
  matterId: string, The matter ID. (required)
  holdId: string, The ID of the hold. (required)
  body: object, The request body.
    The object takes the form of:

{ # A hold. A hold prevents the specified Google Workspace service from purging data for specific accounts or all members of an organizational unit. 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;accounts&quot;: [ # If set, the hold applies to the specified accounts and **orgUnit** must be empty.
    { # An account covered by a hold. This structure is immutable. It can be an individual account or a Google Group, depending on the service. 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;accountId&quot;: &quot;A String&quot;, # The account ID, as provided by the [Admin SDK](https://developers.google.com/admin-sdk/).
      &quot;email&quot;: &quot;A String&quot;, # The primary email address of the account. If used as an input, this takes precedence over **accountId**.
      &quot;firstName&quot;: &quot;A String&quot;, # Output only. The first name of the account holder.
      &quot;holdTime&quot;: &quot;A String&quot;, # Output only. When the account was put on hold.
      &quot;lastName&quot;: &quot;A String&quot;, # Output only. The last name of the account holder.
    },
  ],
  &quot;corpus&quot;: &quot;A String&quot;, # The service to be searched.
  &quot;holdId&quot;: &quot;A String&quot;, # The unique immutable ID of the hold. Assigned during creation.
  &quot;name&quot;: &quot;A String&quot;, # The name of the hold.
  &quot;orgUnit&quot;: { # The organizational unit covered by a hold. This structure is immutable. # If set, the hold applies to all members of the organizational unit and **accounts** must be empty. This property is mutable. For Groups holds, set **accounts**.
    &quot;holdTime&quot;: &quot;A String&quot;, # When the organizational unit was put on hold. This property is immutable.
    &quot;orgUnitId&quot;: &quot;A String&quot;, # The organizational unit&#x27;s immutable ID as provided by the [Admin SDK](https://developers.google.com/admin-sdk/).
  },
  &quot;query&quot;: { # Service-specific options for holds. # Service-specific options. If set, **CorpusQuery** must match **CorpusType**.
    &quot;driveQuery&quot;: { # Options for Drive holds. # Service-specific options for Drive holds. If set, **CorpusType** must be **DRIVE**.
      &quot;includeSharedDriveFiles&quot;: True or False, # To include files in shared drives in the hold, set to **true**.
      &quot;includeTeamDriveFiles&quot;: True or False, # To include files in Team Drives in the hold, set to **true**.
    },
    &quot;groupsQuery&quot;: { # Query options for group holds. # Service-specific options for Groups holds. If set, **CorpusType** must be **GROUPS**.
      &quot;endTime&quot;: &quot;A String&quot;, # The end time for the query. Specify in GMT. The value is rounded to 12 AM on the specified date.
      &quot;startTime&quot;: &quot;A String&quot;, # The start time for the query. Specify in GMT. The value is rounded to 12 AM on the specified date.
      &quot;terms&quot;: &quot;A String&quot;, # The [search operators](https://support.google.com/vault/answer/2474474) used to refine the messages covered by the hold.
    },
    &quot;hangoutsChatQuery&quot;: { # Options for Chat holds. # Service-specific options for Chat holds. If set, **CorpusType** must be **HANGOUTS_CHAT**.
      &quot;includeRooms&quot;: True or False, # To include messages in Chat spaces the user was a member of, set to **true**.
    },
    &quot;mailQuery&quot;: { # Query options for Gmail holds. # Service-specific options for Gmail holds. If set, **CorpusType** must be **MAIL**.
      &quot;endTime&quot;: &quot;A String&quot;, # The end time for the query. Specify in GMT. The value is rounded to 12 AM on the specified date.
      &quot;startTime&quot;: &quot;A String&quot;, # The start time for the query. Specify in GMT. The value is rounded to 12 AM on the specified date.
      &quot;terms&quot;: &quot;A String&quot;, # The [search operators](https://support.google.com/vault/answer/2474474) used to refine the messages covered by the hold.
    },
    &quot;voiceQuery&quot;: { # Options for Voice holds. # Service-specific options for Voice holds. If set, **CorpusType** must be **VOICE**.
      &quot;coveredData&quot;: [ # A list of data types covered by the hold. Should be non-empty. Order does not matter and duplicates are ignored.
        &quot;A String&quot;,
      ],
    },
  },
  &quot;updateTime&quot;: &quot;A String&quot;, # The last time this hold was modified.
}

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

Returns:
  An object of the form:

    { # A hold. A hold prevents the specified Google Workspace service from purging data for specific accounts or all members of an organizational unit. 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;accounts&quot;: [ # If set, the hold applies to the specified accounts and **orgUnit** must be empty.
    { # An account covered by a hold. This structure is immutable. It can be an individual account or a Google Group, depending on the service. 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;accountId&quot;: &quot;A String&quot;, # The account ID, as provided by the [Admin SDK](https://developers.google.com/admin-sdk/).
      &quot;email&quot;: &quot;A String&quot;, # The primary email address of the account. If used as an input, this takes precedence over **accountId**.
      &quot;firstName&quot;: &quot;A String&quot;, # Output only. The first name of the account holder.
      &quot;holdTime&quot;: &quot;A String&quot;, # Output only. When the account was put on hold.
      &quot;lastName&quot;: &quot;A String&quot;, # Output only. The last name of the account holder.
    },
  ],
  &quot;corpus&quot;: &quot;A String&quot;, # The service to be searched.
  &quot;holdId&quot;: &quot;A String&quot;, # The unique immutable ID of the hold. Assigned during creation.
  &quot;name&quot;: &quot;A String&quot;, # The name of the hold.
  &quot;orgUnit&quot;: { # The organizational unit covered by a hold. This structure is immutable. # If set, the hold applies to all members of the organizational unit and **accounts** must be empty. This property is mutable. For Groups holds, set **accounts**.
    &quot;holdTime&quot;: &quot;A String&quot;, # When the organizational unit was put on hold. This property is immutable.
    &quot;orgUnitId&quot;: &quot;A String&quot;, # The organizational unit&#x27;s immutable ID as provided by the [Admin SDK](https://developers.google.com/admin-sdk/).
  },
  &quot;query&quot;: { # Service-specific options for holds. # Service-specific options. If set, **CorpusQuery** must match **CorpusType**.
    &quot;driveQuery&quot;: { # Options for Drive holds. # Service-specific options for Drive holds. If set, **CorpusType** must be **DRIVE**.
      &quot;includeSharedDriveFiles&quot;: True or False, # To include files in shared drives in the hold, set to **true**.
      &quot;includeTeamDriveFiles&quot;: True or False, # To include files in Team Drives in the hold, set to **true**.
    },
    &quot;groupsQuery&quot;: { # Query options for group holds. # Service-specific options for Groups holds. If set, **CorpusType** must be **GROUPS**.
      &quot;endTime&quot;: &quot;A String&quot;, # The end time for the query. Specify in GMT. The value is rounded to 12 AM on the specified date.
      &quot;startTime&quot;: &quot;A String&quot;, # The start time for the query. Specify in GMT. The value is rounded to 12 AM on the specified date.
      &quot;terms&quot;: &quot;A String&quot;, # The [search operators](https://support.google.com/vault/answer/2474474) used to refine the messages covered by the hold.
    },
    &quot;hangoutsChatQuery&quot;: { # Options for Chat holds. # Service-specific options for Chat holds. If set, **CorpusType** must be **HANGOUTS_CHAT**.
      &quot;includeRooms&quot;: True or False, # To include messages in Chat spaces the user was a member of, set to **true**.
    },
    &quot;mailQuery&quot;: { # Query options for Gmail holds. # Service-specific options for Gmail holds. If set, **CorpusType** must be **MAIL**.
      &quot;endTime&quot;: &quot;A String&quot;, # The end time for the query. Specify in GMT. The value is rounded to 12 AM on the specified date.
      &quot;startTime&quot;: &quot;A String&quot;, # The start time for the query. Specify in GMT. The value is rounded to 12 AM on the specified date.
      &quot;terms&quot;: &quot;A String&quot;, # The [search operators](https://support.google.com/vault/answer/2474474) used to refine the messages covered by the hold.
    },
    &quot;voiceQuery&quot;: { # Options for Voice holds. # Service-specific options for Voice holds. If set, **CorpusType** must be **VOICE**.
      &quot;coveredData&quot;: [ # A list of data types covered by the hold. Should be non-empty. Order does not matter and duplicates are ignored.
        &quot;A String&quot;,
      ],
    },
  },
  &quot;updateTime&quot;: &quot;A String&quot;, # The last time this hold was modified.
}</pre>
</div>

</body></html>