<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="secretmanager_v1beta2.html">Secret Manager API</a> . <a href="secretmanager_v1beta2.projects.html">projects</a> . <a href="secretmanager_v1beta2.projects.secrets.html">secrets</a> . <a href="secretmanager_v1beta2.projects.secrets.versions.html">versions</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#access">access(name, x__xgafv=None)</a></code></p>
<p class="firstline">Accesses a SecretVersion. This call returns the secret data. `projects/*/secrets/*/versions/latest` is an alias to the most recently created SecretVersion.</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="#destroy">destroy(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Destroys a SecretVersion. Sets the state of the SecretVersion to DESTROYED and irrevocably destroys the secret data.</p>
<p class="toc_element">
  <code><a href="#disable">disable(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Disables a SecretVersion. Sets the state of the SecretVersion to DISABLED.</p>
<p class="toc_element">
  <code><a href="#enable">enable(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Enables a SecretVersion. Sets the state of the SecretVersion to ENABLED.</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Gets metadata for a SecretVersion. `projects/*/secrets/*/versions/latest` is an alias to the most recently created SecretVersion.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, filter=None, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists SecretVersions. This call does not return secret data.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next()</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="access">access(name, x__xgafv=None)</code>
  <pre>Accesses a SecretVersion. This call returns the secret data. `projects/*/secrets/*/versions/latest` is an alias to the most recently created SecretVersion.

Args:
  name: string, Required. The resource name of the SecretVersion in the format `projects/*/secrets/*/versions/*` or `projects/*/locations/*/secrets/*/versions/*`. `projects/*/secrets/*/versions/latest` or `projects/*/locations/*/secrets/*/versions/latest` is an alias to the most recently created SecretVersion. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response message for SecretManagerService.AccessSecretVersion.
  &quot;name&quot;: &quot;A String&quot;, # The resource name of the SecretVersion in the format `projects/*/secrets/*/versions/*` or `projects/*/locations/*/secrets/*/versions/*`.
  &quot;payload&quot;: { # A secret payload resource in the Secret Manager API. This contains the sensitive secret payload that is associated with a SecretVersion. # Secret payload
    &quot;data&quot;: &quot;A String&quot;, # The secret data. Must be no larger than 64KiB.
    &quot;dataCrc32c&quot;: &quot;A String&quot;, # Optional. If specified, SecretManagerService will verify the integrity of the received data on SecretManagerService.AddSecretVersion calls using the crc32c checksum and store it to include in future SecretManagerService.AccessSecretVersion responses. If a checksum is not provided in the SecretManagerService.AddSecretVersion request, the SecretManagerService will generate and store one for you. The CRC32C value is encoded as a Int64 for compatibility, and can be safely downconverted to uint32 in languages that support this type. https://cloud.google.com/apis/design/design_patterns#integer_types
  },
}</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="destroy">destroy(name, body=None, x__xgafv=None)</code>
  <pre>Destroys a SecretVersion. Sets the state of the SecretVersion to DESTROYED and irrevocably destroys the secret data.

Args:
  name: string, Required. The resource name of the SecretVersion to destroy in the format `projects/*/secrets/*/versions/*` or `projects/*/locations/*/secrets/*/versions/*`. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for SecretManagerService.DestroySecretVersion.
  &quot;etag&quot;: &quot;A String&quot;, # Optional. Etag of the SecretVersion. The request succeeds if it matches the etag of the currently stored secret version object. If the etag is omitted, the request succeeds.
}

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

Returns:
  An object of the form:

    { # A secret version resource in the Secret Manager API.
  &quot;clientSpecifiedPayloadChecksum&quot;: True or False, # Output only. True if payload checksum specified in SecretPayload object has been received by SecretManagerService on SecretManagerService.AddSecretVersion.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time at which the SecretVersion was created.
  &quot;customerManagedEncryption&quot;: { # Describes the status of customer-managed encryption. # Output only. The customer-managed encryption status of the SecretVersion. Only populated if customer-managed encryption is used and Secret is a Regionalised Secret.
    &quot;kmsKeyVersionName&quot;: &quot;A String&quot;, # Required. The resource name of the Cloud KMS CryptoKeyVersion used to encrypt the secret payload, in the following format: `projects/*/locations/*/keyRings/*/cryptoKeys/*/versions/*`.
  },
  &quot;destroyTime&quot;: &quot;A String&quot;, # Output only. The time this SecretVersion was destroyed. Only present if state is DESTROYED.
  &quot;etag&quot;: &quot;A String&quot;, # Output only. Etag of the currently stored SecretVersion.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the SecretVersion in the format `projects/*/secrets/*/versions/*`. SecretVersion IDs in a Secret start at 1 and are incremented for each subsequent version of the secret.
  &quot;replicationStatus&quot;: { # The replication status of a SecretVersion. # The replication status of the SecretVersion.
    &quot;automatic&quot;: { # The replication status of a SecretVersion using automatic replication. Only populated if the parent Secret has an automatic replication policy. # Describes the replication status of a SecretVersion with automatic replication. Only populated if the parent Secret has an automatic replication policy.
      &quot;customerManagedEncryption&quot;: { # Describes the status of customer-managed encryption. # Output only. The customer-managed encryption status of the SecretVersion. Only populated if customer-managed encryption is used.
        &quot;kmsKeyVersionName&quot;: &quot;A String&quot;, # Required. The resource name of the Cloud KMS CryptoKeyVersion used to encrypt the secret payload, in the following format: `projects/*/locations/*/keyRings/*/cryptoKeys/*/versions/*`.
      },
    },
    &quot;userManaged&quot;: { # The replication status of a SecretVersion using user-managed replication. Only populated if the parent Secret has a user-managed replication policy. # Describes the replication status of a SecretVersion with user-managed replication. Only populated if the parent Secret has a user-managed replication policy.
      &quot;replicas&quot;: [ # Output only. The list of replica statuses for the SecretVersion.
        { # Describes the status of a user-managed replica for the SecretVersion.
          &quot;customerManagedEncryption&quot;: { # Describes the status of customer-managed encryption. # Output only. The customer-managed encryption status of the SecretVersion. Only populated if customer-managed encryption is used.
            &quot;kmsKeyVersionName&quot;: &quot;A String&quot;, # Required. The resource name of the Cloud KMS CryptoKeyVersion used to encrypt the secret payload, in the following format: `projects/*/locations/*/keyRings/*/cryptoKeys/*/versions/*`.
          },
          &quot;location&quot;: &quot;A String&quot;, # Output only. The canonical ID of the replica location. For example: `&quot;us-east1&quot;`.
        },
      ],
    },
  },
  &quot;scheduledDestroyTime&quot;: &quot;A String&quot;, # Optional. Output only. Scheduled destroy time for secret version. This is a part of the Delayed secret version destroy feature. For a Secret with a valid version destroy TTL, when a secert version is destroyed, version is moved to disabled state and it is scheduled for destruction Version is destroyed only after the scheduled_destroy_time.
  &quot;state&quot;: &quot;A String&quot;, # Output only. The current state of the SecretVersion.
}</pre>
</div>

<div class="method">
    <code class="details" id="disable">disable(name, body=None, x__xgafv=None)</code>
  <pre>Disables a SecretVersion. Sets the state of the SecretVersion to DISABLED.

Args:
  name: string, Required. The resource name of the SecretVersion to disable in the format `projects/*/secrets/*/versions/*` or `projects/*/locations/*/secrets/*/versions/*`. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for SecretManagerService.DisableSecretVersion.
  &quot;etag&quot;: &quot;A String&quot;, # Optional. Etag of the SecretVersion. The request succeeds if it matches the etag of the currently stored secret version object. If the etag is omitted, the request succeeds.
}

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

Returns:
  An object of the form:

    { # A secret version resource in the Secret Manager API.
  &quot;clientSpecifiedPayloadChecksum&quot;: True or False, # Output only. True if payload checksum specified in SecretPayload object has been received by SecretManagerService on SecretManagerService.AddSecretVersion.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time at which the SecretVersion was created.
  &quot;customerManagedEncryption&quot;: { # Describes the status of customer-managed encryption. # Output only. The customer-managed encryption status of the SecretVersion. Only populated if customer-managed encryption is used and Secret is a Regionalised Secret.
    &quot;kmsKeyVersionName&quot;: &quot;A String&quot;, # Required. The resource name of the Cloud KMS CryptoKeyVersion used to encrypt the secret payload, in the following format: `projects/*/locations/*/keyRings/*/cryptoKeys/*/versions/*`.
  },
  &quot;destroyTime&quot;: &quot;A String&quot;, # Output only. The time this SecretVersion was destroyed. Only present if state is DESTROYED.
  &quot;etag&quot;: &quot;A String&quot;, # Output only. Etag of the currently stored SecretVersion.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the SecretVersion in the format `projects/*/secrets/*/versions/*`. SecretVersion IDs in a Secret start at 1 and are incremented for each subsequent version of the secret.
  &quot;replicationStatus&quot;: { # The replication status of a SecretVersion. # The replication status of the SecretVersion.
    &quot;automatic&quot;: { # The replication status of a SecretVersion using automatic replication. Only populated if the parent Secret has an automatic replication policy. # Describes the replication status of a SecretVersion with automatic replication. Only populated if the parent Secret has an automatic replication policy.
      &quot;customerManagedEncryption&quot;: { # Describes the status of customer-managed encryption. # Output only. The customer-managed encryption status of the SecretVersion. Only populated if customer-managed encryption is used.
        &quot;kmsKeyVersionName&quot;: &quot;A String&quot;, # Required. The resource name of the Cloud KMS CryptoKeyVersion used to encrypt the secret payload, in the following format: `projects/*/locations/*/keyRings/*/cryptoKeys/*/versions/*`.
      },
    },
    &quot;userManaged&quot;: { # The replication status of a SecretVersion using user-managed replication. Only populated if the parent Secret has a user-managed replication policy. # Describes the replication status of a SecretVersion with user-managed replication. Only populated if the parent Secret has a user-managed replication policy.
      &quot;replicas&quot;: [ # Output only. The list of replica statuses for the SecretVersion.
        { # Describes the status of a user-managed replica for the SecretVersion.
          &quot;customerManagedEncryption&quot;: { # Describes the status of customer-managed encryption. # Output only. The customer-managed encryption status of the SecretVersion. Only populated if customer-managed encryption is used.
            &quot;kmsKeyVersionName&quot;: &quot;A String&quot;, # Required. The resource name of the Cloud KMS CryptoKeyVersion used to encrypt the secret payload, in the following format: `projects/*/locations/*/keyRings/*/cryptoKeys/*/versions/*`.
          },
          &quot;location&quot;: &quot;A String&quot;, # Output only. The canonical ID of the replica location. For example: `&quot;us-east1&quot;`.
        },
      ],
    },
  },
  &quot;scheduledDestroyTime&quot;: &quot;A String&quot;, # Optional. Output only. Scheduled destroy time for secret version. This is a part of the Delayed secret version destroy feature. For a Secret with a valid version destroy TTL, when a secert version is destroyed, version is moved to disabled state and it is scheduled for destruction Version is destroyed only after the scheduled_destroy_time.
  &quot;state&quot;: &quot;A String&quot;, # Output only. The current state of the SecretVersion.
}</pre>
</div>

<div class="method">
    <code class="details" id="enable">enable(name, body=None, x__xgafv=None)</code>
  <pre>Enables a SecretVersion. Sets the state of the SecretVersion to ENABLED.

Args:
  name: string, Required. The resource name of the SecretVersion to enable in the format `projects/*/secrets/*/versions/*` or `projects/*/locations/*/secrets/*/versions/*`. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for SecretManagerService.EnableSecretVersion.
  &quot;etag&quot;: &quot;A String&quot;, # Optional. Etag of the SecretVersion. The request succeeds if it matches the etag of the currently stored secret version object. If the etag is omitted, the request succeeds.
}

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

Returns:
  An object of the form:

    { # A secret version resource in the Secret Manager API.
  &quot;clientSpecifiedPayloadChecksum&quot;: True or False, # Output only. True if payload checksum specified in SecretPayload object has been received by SecretManagerService on SecretManagerService.AddSecretVersion.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time at which the SecretVersion was created.
  &quot;customerManagedEncryption&quot;: { # Describes the status of customer-managed encryption. # Output only. The customer-managed encryption status of the SecretVersion. Only populated if customer-managed encryption is used and Secret is a Regionalised Secret.
    &quot;kmsKeyVersionName&quot;: &quot;A String&quot;, # Required. The resource name of the Cloud KMS CryptoKeyVersion used to encrypt the secret payload, in the following format: `projects/*/locations/*/keyRings/*/cryptoKeys/*/versions/*`.
  },
  &quot;destroyTime&quot;: &quot;A String&quot;, # Output only. The time this SecretVersion was destroyed. Only present if state is DESTROYED.
  &quot;etag&quot;: &quot;A String&quot;, # Output only. Etag of the currently stored SecretVersion.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the SecretVersion in the format `projects/*/secrets/*/versions/*`. SecretVersion IDs in a Secret start at 1 and are incremented for each subsequent version of the secret.
  &quot;replicationStatus&quot;: { # The replication status of a SecretVersion. # The replication status of the SecretVersion.
    &quot;automatic&quot;: { # The replication status of a SecretVersion using automatic replication. Only populated if the parent Secret has an automatic replication policy. # Describes the replication status of a SecretVersion with automatic replication. Only populated if the parent Secret has an automatic replication policy.
      &quot;customerManagedEncryption&quot;: { # Describes the status of customer-managed encryption. # Output only. The customer-managed encryption status of the SecretVersion. Only populated if customer-managed encryption is used.
        &quot;kmsKeyVersionName&quot;: &quot;A String&quot;, # Required. The resource name of the Cloud KMS CryptoKeyVersion used to encrypt the secret payload, in the following format: `projects/*/locations/*/keyRings/*/cryptoKeys/*/versions/*`.
      },
    },
    &quot;userManaged&quot;: { # The replication status of a SecretVersion using user-managed replication. Only populated if the parent Secret has a user-managed replication policy. # Describes the replication status of a SecretVersion with user-managed replication. Only populated if the parent Secret has a user-managed replication policy.
      &quot;replicas&quot;: [ # Output only. The list of replica statuses for the SecretVersion.
        { # Describes the status of a user-managed replica for the SecretVersion.
          &quot;customerManagedEncryption&quot;: { # Describes the status of customer-managed encryption. # Output only. The customer-managed encryption status of the SecretVersion. Only populated if customer-managed encryption is used.
            &quot;kmsKeyVersionName&quot;: &quot;A String&quot;, # Required. The resource name of the Cloud KMS CryptoKeyVersion used to encrypt the secret payload, in the following format: `projects/*/locations/*/keyRings/*/cryptoKeys/*/versions/*`.
          },
          &quot;location&quot;: &quot;A String&quot;, # Output only. The canonical ID of the replica location. For example: `&quot;us-east1&quot;`.
        },
      ],
    },
  },
  &quot;scheduledDestroyTime&quot;: &quot;A String&quot;, # Optional. Output only. Scheduled destroy time for secret version. This is a part of the Delayed secret version destroy feature. For a Secret with a valid version destroy TTL, when a secert version is destroyed, version is moved to disabled state and it is scheduled for destruction Version is destroyed only after the scheduled_destroy_time.
  &quot;state&quot;: &quot;A String&quot;, # Output only. The current state of the SecretVersion.
}</pre>
</div>

<div class="method">
    <code class="details" id="get">get(name, x__xgafv=None)</code>
  <pre>Gets metadata for a SecretVersion. `projects/*/secrets/*/versions/latest` is an alias to the most recently created SecretVersion.

Args:
  name: string, Required. The resource name of the SecretVersion in the format `projects/*/secrets/*/versions/*` or `projects/*/locations/*/secrets/*/versions/*`. `projects/*/secrets/*/versions/latest` or `projects/*/locations/*/secrets/*/versions/latest` is an alias to the most recently created SecretVersion. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A secret version resource in the Secret Manager API.
  &quot;clientSpecifiedPayloadChecksum&quot;: True or False, # Output only. True if payload checksum specified in SecretPayload object has been received by SecretManagerService on SecretManagerService.AddSecretVersion.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time at which the SecretVersion was created.
  &quot;customerManagedEncryption&quot;: { # Describes the status of customer-managed encryption. # Output only. The customer-managed encryption status of the SecretVersion. Only populated if customer-managed encryption is used and Secret is a Regionalised Secret.
    &quot;kmsKeyVersionName&quot;: &quot;A String&quot;, # Required. The resource name of the Cloud KMS CryptoKeyVersion used to encrypt the secret payload, in the following format: `projects/*/locations/*/keyRings/*/cryptoKeys/*/versions/*`.
  },
  &quot;destroyTime&quot;: &quot;A String&quot;, # Output only. The time this SecretVersion was destroyed. Only present if state is DESTROYED.
  &quot;etag&quot;: &quot;A String&quot;, # Output only. Etag of the currently stored SecretVersion.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the SecretVersion in the format `projects/*/secrets/*/versions/*`. SecretVersion IDs in a Secret start at 1 and are incremented for each subsequent version of the secret.
  &quot;replicationStatus&quot;: { # The replication status of a SecretVersion. # The replication status of the SecretVersion.
    &quot;automatic&quot;: { # The replication status of a SecretVersion using automatic replication. Only populated if the parent Secret has an automatic replication policy. # Describes the replication status of a SecretVersion with automatic replication. Only populated if the parent Secret has an automatic replication policy.
      &quot;customerManagedEncryption&quot;: { # Describes the status of customer-managed encryption. # Output only. The customer-managed encryption status of the SecretVersion. Only populated if customer-managed encryption is used.
        &quot;kmsKeyVersionName&quot;: &quot;A String&quot;, # Required. The resource name of the Cloud KMS CryptoKeyVersion used to encrypt the secret payload, in the following format: `projects/*/locations/*/keyRings/*/cryptoKeys/*/versions/*`.
      },
    },
    &quot;userManaged&quot;: { # The replication status of a SecretVersion using user-managed replication. Only populated if the parent Secret has a user-managed replication policy. # Describes the replication status of a SecretVersion with user-managed replication. Only populated if the parent Secret has a user-managed replication policy.
      &quot;replicas&quot;: [ # Output only. The list of replica statuses for the SecretVersion.
        { # Describes the status of a user-managed replica for the SecretVersion.
          &quot;customerManagedEncryption&quot;: { # Describes the status of customer-managed encryption. # Output only. The customer-managed encryption status of the SecretVersion. Only populated if customer-managed encryption is used.
            &quot;kmsKeyVersionName&quot;: &quot;A String&quot;, # Required. The resource name of the Cloud KMS CryptoKeyVersion used to encrypt the secret payload, in the following format: `projects/*/locations/*/keyRings/*/cryptoKeys/*/versions/*`.
          },
          &quot;location&quot;: &quot;A String&quot;, # Output only. The canonical ID of the replica location. For example: `&quot;us-east1&quot;`.
        },
      ],
    },
  },
  &quot;scheduledDestroyTime&quot;: &quot;A String&quot;, # Optional. Output only. Scheduled destroy time for secret version. This is a part of the Delayed secret version destroy feature. For a Secret with a valid version destroy TTL, when a secert version is destroyed, version is moved to disabled state and it is scheduled for destruction Version is destroyed only after the scheduled_destroy_time.
  &quot;state&quot;: &quot;A String&quot;, # Output only. The current state of the SecretVersion.
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, filter=None, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists SecretVersions. This call does not return secret data.

Args:
  parent: string, Required. The resource name of the Secret associated with the SecretVersions to list, in the format `projects/*/secrets/*` or `projects/*/locations/*/secrets/*`. (required)
  filter: string, Optional. Filter string, adhering to the rules in [List-operation filtering](https://cloud.google.com/secret-manager/docs/filtering). List only secret versions matching the filter. If filter is empty, all secret versions are listed.
  pageSize: integer, Optional. The maximum number of results to be returned in a single page. If set to 0, the server decides the number of results to return. If the number is greater than 25000, it is capped at 25000.
  pageToken: string, Optional. Pagination token, returned earlier via ListSecretVersionsResponse.next_page_token][].
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response message for SecretManagerService.ListSecretVersions.
  &quot;nextPageToken&quot;: &quot;A String&quot;, # A token to retrieve the next page of results. Pass this value in ListSecretVersionsRequest.page_token to retrieve the next page.
  &quot;totalSize&quot;: 42, # The total number of SecretVersions but 0 when the ListSecretsRequest.filter field is set.
  &quot;versions&quot;: [ # The list of SecretVersions sorted in reverse by create_time (newest first).
    { # A secret version resource in the Secret Manager API.
      &quot;clientSpecifiedPayloadChecksum&quot;: True or False, # Output only. True if payload checksum specified in SecretPayload object has been received by SecretManagerService on SecretManagerService.AddSecretVersion.
      &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time at which the SecretVersion was created.
      &quot;customerManagedEncryption&quot;: { # Describes the status of customer-managed encryption. # Output only. The customer-managed encryption status of the SecretVersion. Only populated if customer-managed encryption is used and Secret is a Regionalised Secret.
        &quot;kmsKeyVersionName&quot;: &quot;A String&quot;, # Required. The resource name of the Cloud KMS CryptoKeyVersion used to encrypt the secret payload, in the following format: `projects/*/locations/*/keyRings/*/cryptoKeys/*/versions/*`.
      },
      &quot;destroyTime&quot;: &quot;A String&quot;, # Output only. The time this SecretVersion was destroyed. Only present if state is DESTROYED.
      &quot;etag&quot;: &quot;A String&quot;, # Output only. Etag of the currently stored SecretVersion.
      &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the SecretVersion in the format `projects/*/secrets/*/versions/*`. SecretVersion IDs in a Secret start at 1 and are incremented for each subsequent version of the secret.
      &quot;replicationStatus&quot;: { # The replication status of a SecretVersion. # The replication status of the SecretVersion.
        &quot;automatic&quot;: { # The replication status of a SecretVersion using automatic replication. Only populated if the parent Secret has an automatic replication policy. # Describes the replication status of a SecretVersion with automatic replication. Only populated if the parent Secret has an automatic replication policy.
          &quot;customerManagedEncryption&quot;: { # Describes the status of customer-managed encryption. # Output only. The customer-managed encryption status of the SecretVersion. Only populated if customer-managed encryption is used.
            &quot;kmsKeyVersionName&quot;: &quot;A String&quot;, # Required. The resource name of the Cloud KMS CryptoKeyVersion used to encrypt the secret payload, in the following format: `projects/*/locations/*/keyRings/*/cryptoKeys/*/versions/*`.
          },
        },
        &quot;userManaged&quot;: { # The replication status of a SecretVersion using user-managed replication. Only populated if the parent Secret has a user-managed replication policy. # Describes the replication status of a SecretVersion with user-managed replication. Only populated if the parent Secret has a user-managed replication policy.
          &quot;replicas&quot;: [ # Output only. The list of replica statuses for the SecretVersion.
            { # Describes the status of a user-managed replica for the SecretVersion.
              &quot;customerManagedEncryption&quot;: { # Describes the status of customer-managed encryption. # Output only. The customer-managed encryption status of the SecretVersion. Only populated if customer-managed encryption is used.
                &quot;kmsKeyVersionName&quot;: &quot;A String&quot;, # Required. The resource name of the Cloud KMS CryptoKeyVersion used to encrypt the secret payload, in the following format: `projects/*/locations/*/keyRings/*/cryptoKeys/*/versions/*`.
              },
              &quot;location&quot;: &quot;A String&quot;, # Output only. The canonical ID of the replica location. For example: `&quot;us-east1&quot;`.
            },
          ],
        },
      },
      &quot;scheduledDestroyTime&quot;: &quot;A String&quot;, # Optional. Output only. Scheduled destroy time for secret version. This is a part of the Delayed secret version destroy feature. For a Secret with a valid version destroy TTL, when a secert version is destroyed, version is moved to disabled state and it is scheduled for destruction Version is destroyed only after the scheduled_destroy_time.
      &quot;state&quot;: &quot;A String&quot;, # Output only. The current state of the SecretVersion.
    },
  ],
}</pre>
</div>

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