<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="privateca_v1beta1.html">Certificate Authority API</a> . <a href="privateca_v1beta1.projects.html">projects</a> . <a href="privateca_v1beta1.projects.locations.html">locations</a> . <a href="privateca_v1beta1.projects.locations.certificateAuthorities.html">certificateAuthorities</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="privateca_v1beta1.projects.locations.certificateAuthorities.certificateRevocationLists.html">certificateRevocationLists()</a></code>
</p>
<p class="firstline">Returns the certificateRevocationLists Resource.</p>

<p class="toc_element">
  <code><a href="privateca_v1beta1.projects.locations.certificateAuthorities.certificates.html">certificates()</a></code>
</p>
<p class="firstline">Returns the certificates Resource.</p>

<p class="toc_element">
  <code><a href="#activate">activate(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Activate a CertificateAuthority that is in state PENDING_ACTIVATION and is of type SUBORDINATE. After the parent Certificate Authority signs a certificate signing request from FetchCertificateAuthorityCsr, this method can complete the activation process.</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(parent, body=None, certificateAuthorityId=None, requestId=None, x__xgafv=None)</a></code></p>
<p class="firstline">Create a new CertificateAuthority in a given Project and Location.</p>
<p class="toc_element">
  <code><a href="#disable">disable(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Disable a CertificateAuthority.</p>
<p class="toc_element">
  <code><a href="#enable">enable(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Enable a CertificateAuthority.</p>
<p class="toc_element">
  <code><a href="#fetch">fetch(name, x__xgafv=None)</a></code></p>
<p class="firstline">Fetch a certificate signing request (CSR) from a CertificateAuthority that is in state PENDING_ACTIVATION and is of type SUBORDINATE. The CSR must then be signed by the desired parent Certificate Authority, which could be another CertificateAuthority resource, or could be an on-prem certificate authority. See also ActivateCertificateAuthority.</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Returns a CertificateAuthority.</p>
<p class="toc_element">
  <code><a href="#getIamPolicy">getIamPolicy(resource, options_requestedPolicyVersion=None, x__xgafv=None)</a></code></p>
<p class="firstline">Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, filter=None, orderBy=None, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists CertificateAuthorities.</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="#patch">patch(name, body=None, updateMask=None, requestId=None, x__xgafv=None)</a></code></p>
<p class="firstline">Update a CertificateAuthority.</p>
<p class="toc_element">
  <code><a href="#restore">restore(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Restore a CertificateAuthority that is scheduled for deletion.</p>
<p class="toc_element">
  <code><a href="#scheduleDelete">scheduleDelete(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Schedule a CertificateAuthority for deletion.</p>
<p class="toc_element">
  <code><a href="#setIamPolicy">setIamPolicy(resource, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.</p>
<p class="toc_element">
  <code><a href="#testIamPermissions">testIamPermissions(resource, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Returns permissions that a caller has on the specified resource. If the resource does not exist, this will return an empty set of permissions, not a `NOT_FOUND` error. Note: This operation is designed to be used for building permission-aware UIs and command-line tools, not for authorization checking. This operation may "fail open" without warning.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="activate">activate(name, body=None, x__xgafv=None)</code>
  <pre>Activate a CertificateAuthority that is in state PENDING_ACTIVATION and is of type SUBORDINATE. After the parent Certificate Authority signs a certificate signing request from FetchCertificateAuthorityCsr, this method can complete the activation process.

Args:
  name: string, Required. The resource name for this CertificateAuthority in the format `projects/*/locations/*/certificateAuthorities/*`. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for CertificateAuthorityService.ActivateCertificateAuthority.
    &quot;pemCaCertificate&quot;: &quot;A String&quot;, # Required. The signed CA certificate issued from FetchCertificateAuthorityCsrResponse.pem_csr.
    &quot;subordinateConfig&quot;: { # Describes a subordinate CA&#x27;s issuers. This is either a resource path to a known issuing CertificateAuthority, or a PEM issuer certificate chain. # Required. Must include information about the issuer of &#x27;pem_ca_certificate&#x27;, and any further issuers until the self-signed CA.
      &quot;certificateAuthority&quot;: &quot;A String&quot;, # Required. This can refer to a CertificateAuthority in the same project that was used to create a subordinate CertificateAuthority. This field is used for information and usability purposes only. The resource name is in the format `projects/*/locations/*/certificateAuthorities/*`.
      &quot;pemIssuerChain&quot;: { # This message describes a subordinate CA&#x27;s issuer certificate chain. This wrapper exists for compatibility reasons. # Required. Contains the PEM certificate chain for the issuers of this CertificateAuthority, but not pem certificate for this CA itself.
        &quot;pemCertificates&quot;: [ # Required. Expected to be in leaf-to-root order according to RFC 5246.
          &quot;A String&quot;,
        ],
      },
    },
    &quot;requestId&quot;: &quot;A String&quot;, # Optional. An ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and t he request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).
  }

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

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a network API call.
    &quot;metadata&quot;: { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
    },
    &quot;response&quot;: { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
    },
    &quot;done&quot;: True or False, # If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.
    &quot;error&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). # The error result of the operation in case of failure or cancellation.
      &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.
      &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    },
    &quot;name&quot;: &quot;A String&quot;, # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.
  }</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(parent, body=None, certificateAuthorityId=None, requestId=None, x__xgafv=None)</code>
  <pre>Create a new CertificateAuthority in a given Project and Location.

Args:
  parent: string, Required. The resource name of the location associated with the CertificateAuthorities, in the format `projects/*/locations/*`. (required)
  body: object, The request body.
    The object takes the form of:

{ # A CertificateAuthority represents an individual Certificate Authority. A CertificateAuthority can be used to create Certificates.
  &quot;type&quot;: &quot;A String&quot;, # Required. Immutable. The Type of this CertificateAuthority.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time at which this CertificateAuthority was updated.
  &quot;state&quot;: &quot;A String&quot;, # Output only. The State for this CertificateAuthority.
  &quot;pemCaCertificates&quot;: [ # Output only. This CertificateAuthority&#x27;s certificate chain, including the current CertificateAuthority&#x27;s certificate. Ordered such that the root issuer is the final element (consistent with RFC 5246). For a self-signed CA, this will only list the current CertificateAuthority&#x27;s certificate.
    &quot;A String&quot;,
  ],
  &quot;subordinateConfig&quot;: { # Describes a subordinate CA&#x27;s issuers. This is either a resource path to a known issuing CertificateAuthority, or a PEM issuer certificate chain. # Optional. If this is a subordinate CertificateAuthority, this field will be set with the subordinate configuration, which describes its issuers. This may be updated, but this CertificateAuthority must continue to validate.
    &quot;certificateAuthority&quot;: &quot;A String&quot;, # Required. This can refer to a CertificateAuthority in the same project that was used to create a subordinate CertificateAuthority. This field is used for information and usability purposes only. The resource name is in the format `projects/*/locations/*/certificateAuthorities/*`.
    &quot;pemIssuerChain&quot;: { # This message describes a subordinate CA&#x27;s issuer certificate chain. This wrapper exists for compatibility reasons. # Required. Contains the PEM certificate chain for the issuers of this CertificateAuthority, but not pem certificate for this CA itself.
      &quot;pemCertificates&quot;: [ # Required. Expected to be in leaf-to-root order according to RFC 5246.
        &quot;A String&quot;,
      ],
    },
  },
  &quot;keySpec&quot;: { # A Cloud KMS key configuration that a CertificateAuthority will use. # Required. Immutable. Used when issuing certificates for this CertificateAuthority. If this CertificateAuthority is a self-signed CertificateAuthority, this key is also used to sign the self-signed CA certificate. Otherwise, it is used to sign a CSR.
    &quot;cloudKmsKeyVersion&quot;: &quot;A String&quot;, # Required. The resource name for an existing Cloud KMS CryptoKeyVersion in the format `projects/*/locations/*/keyRings/*/cryptoKeys/*/cryptoKeyVersions/*`. This option enables full flexibility in the key&#x27;s capabilities and properties.
    &quot;algorithm&quot;: &quot;A String&quot;, # Required. The algorithm to use for creating a managed Cloud KMS key for a for a simplified experience. All managed keys will be have their ProtectionLevel as `HSM`.
  },
  &quot;labels&quot;: { # Optional. Labels with user-defined metadata.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;caCertificateDescriptions&quot;: [ # Output only. A structured description of this CertificateAuthority&#x27;s CA certificate and its issuers. Ordered as self-to-root.
    { # A CertificateDescription describes an X.509 certificate or CSR that has been issued, as an alternative to using ASN.1 / X.509.
      &quot;aiaIssuingCertificateUrls&quot;: [ # Describes lists of issuer CA certificate URLs that appear in the &quot;Authority Information Access&quot; extension in the certificate.
        &quot;A String&quot;,
      ],
      &quot;configValues&quot;: { # A ReusableConfigValues is used to describe certain fields of an X.509 certificate, such as the key usage fields, fields specific to CA certificates, certificate policy extensions and custom extensions. # Describes some of the technical fields in a certificate.
        &quot;additionalExtensions&quot;: [ # Optional. Describes custom X.509 extensions.
          { # An X509Extension specifies an X.509 extension, which may be used in different parts of X.509 objects like certificates, CSRs, and CRLs.
            &quot;objectId&quot;: { # An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages. # Required. The OID for this X.509 extension.
              &quot;objectIdPath&quot;: [ # Required. The parts of an OID path. The most significant parts of the path come first.
                42,
              ],
            },
            &quot;critical&quot;: True or False, # Required. Indicates whether or not this extension is critical (i.e., if the client does not know how to handle this extension, the client should consider this to be an error).
            &quot;value&quot;: &quot;A String&quot;, # Required. The value of this X.509 extension.
          },
        ],
        &quot;caOptions&quot;: { # Describes values that are relevant in a CA certificate. # Optional. Describes options in this ReusableConfigValues that are relevant in a CA certificate.
          &quot;maxIssuerPathLength&quot;: 42, # Optional. Refers to the path length restriction X.509 extension. For a CA certificate, this value describes the depth of subordinate CA certificates that are allowed. If this value is less than 0, the request will fail. If this value is missing, the max path length will be omitted from the CA certificate.
          &quot;isCa&quot;: True or False, # Optional. Refers to the &quot;CA&quot; X.509 extension, which is a boolean value. When this value is missing, the extension will be omitted from the CA certificate.
        },
        &quot;aiaOcspServers&quot;: [ # Optional. Describes Online Certificate Status Protocol (OCSP) endpoint addresses that appear in the &quot;Authority Information Access&quot; extension in the certificate.
          &quot;A String&quot;,
        ],
        &quot;keyUsage&quot;: { # A KeyUsage describes key usage values that may appear in an X.509 certificate. # Optional. Indicates the intended use for keys that correspond to a certificate.
          &quot;unknownExtendedKeyUsages&quot;: [ # Used to describe extended key usages that are not listed in the KeyUsage.ExtendedKeyUsageOptions message.
            { # An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages.
              &quot;objectIdPath&quot;: [ # Required. The parts of an OID path. The most significant parts of the path come first.
                42,
              ],
            },
          ],
          &quot;baseKeyUsage&quot;: { # KeyUsage.KeyUsageOptions corresponds to the key usage values described in https://tools.ietf.org/html/rfc5280#section-4.2.1.3. # Describes high-level ways in which a key may be used.
            &quot;decipherOnly&quot;: True or False, # The key may be used to decipher only.
            &quot;keyEncipherment&quot;: True or False, # The key may be used to encipher other keys.
            &quot;crlSign&quot;: True or False, # The key may be used sign certificate revocation lists.
            &quot;digitalSignature&quot;: True or False, # The key may be used for digital signatures.
            &quot;contentCommitment&quot;: True or False, # The key may be used for cryptographic commitments. Note that this may also be referred to as &quot;non-repudiation&quot;.
            &quot;encipherOnly&quot;: True or False, # The key may be used to encipher only.
            &quot;certSign&quot;: True or False, # The key may be used to sign certificates.
            &quot;keyAgreement&quot;: True or False, # The key may be used in a key agreement protocol.
            &quot;dataEncipherment&quot;: True or False, # The key may be used to encipher data.
          },
          &quot;extendedKeyUsage&quot;: { # KeyUsage.ExtendedKeyUsageOptions has fields that correspond to certain common OIDs that could be specified as an extended key usage value. # Detailed scenarios in which a key may be used.
            &quot;emailProtection&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.4. Officially described as &quot;Email protection&quot;.
            &quot;clientAuth&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.2. Officially described as &quot;TLS WWW client authentication&quot;, though regularly used for non-WWW TLS.
            &quot;ocspSigning&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.9. Officially described as &quot;Signing OCSP responses&quot;.
            &quot;serverAuth&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.1. Officially described as &quot;TLS WWW server authentication&quot;, though regularly used for non-WWW TLS.
            &quot;timeStamping&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.8. Officially described as &quot;Binding the hash of an object to a time&quot;.
            &quot;codeSigning&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.3. Officially described as &quot;Signing of downloadable executable code client authentication&quot;.
          },
        },
        &quot;policyIds&quot;: [ # Optional. Describes the X.509 certificate policy object identifiers, per https://tools.ietf.org/html/rfc5280#section-4.2.1.4.
          { # An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages.
            &quot;objectIdPath&quot;: [ # Required. The parts of an OID path. The most significant parts of the path come first.
              42,
            ],
          },
        ],
      },
      &quot;certFingerprint&quot;: { # A group of fingerprints for the x509 certificate. # The hash of the x.509 certificate.
        &quot;sha256Hash&quot;: &quot;A String&quot;, # The SHA 256 hash, encoded in hexadecimal, of the DER x509 certificate.
      },
      &quot;publicKey&quot;: { # A PublicKey describes a public key. # The public key that corresponds to an issued certificate.
        &quot;key&quot;: &quot;A String&quot;, # Required. A public key. When this is specified in a request, the padding and encoding can be any of the options described by the respective &#x27;KeyType&#x27; value. When this is generated by the service, it will always be an RFC 5280 [SubjectPublicKeyInfo](https://tools.ietf.org/html/rfc5280#section-4.1) structure containing an algorithm identifier and a key.
        &quot;type&quot;: &quot;A String&quot;, # Required. The type of public key.
      },
      &quot;subjectDescription&quot;: { # These values describe fields in an issued X.509 certificate such as the distinguished name, subject alternative names, serial number, and lifetime. # Describes some of the values in a certificate that are related to the subject and lifetime.
        &quot;notBeforeTime&quot;: &quot;A String&quot;, # The time at which the certificate becomes valid.
        &quot;lifetime&quot;: &quot;A String&quot;, # For convenience, the actual lifetime of an issued certificate. Corresponds to &#x27;not_after_time&#x27; - &#x27;not_before_time&#x27;.
        &quot;notAfterTime&quot;: &quot;A String&quot;, # The time at which the certificate expires.
        &quot;subject&quot;: { # Subject describes parts of a distinguished name that, in turn, describes the subject of the certificate. # Contains distinguished name fields such as the location and organization.
          &quot;countryCode&quot;: &quot;A String&quot;, # The country code of the subject.
          &quot;locality&quot;: &quot;A String&quot;, # The locality or city of the subject.
          &quot;province&quot;: &quot;A String&quot;, # The province, territory, or regional state of the subject.
          &quot;organizationalUnit&quot;: &quot;A String&quot;, # The organizational_unit of the subject.
          &quot;streetAddress&quot;: &quot;A String&quot;, # The street address of the subject.
          &quot;organization&quot;: &quot;A String&quot;, # The organization of the subject.
          &quot;postalCode&quot;: &quot;A String&quot;, # The postal code of the subject.
        },
        &quot;commonName&quot;: &quot;A String&quot;, # The &quot;common name&quot; of the distinguished name.
        &quot;subjectAltName&quot;: { # SubjectAltNames corresponds to a more modern way of listing what the asserted identity is in a certificate (i.e., compared to the &quot;common name&quot; in the distinguished name). # The subject alternative name fields.
          &quot;customSans&quot;: [ # Contains additional subject alternative name values.
            { # An X509Extension specifies an X.509 extension, which may be used in different parts of X.509 objects like certificates, CSRs, and CRLs.
              &quot;objectId&quot;: { # An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages. # Required. The OID for this X.509 extension.
                &quot;objectIdPath&quot;: [ # Required. The parts of an OID path. The most significant parts of the path come first.
                  42,
                ],
              },
              &quot;critical&quot;: True or False, # Required. Indicates whether or not this extension is critical (i.e., if the client does not know how to handle this extension, the client should consider this to be an error).
              &quot;value&quot;: &quot;A String&quot;, # Required. The value of this X.509 extension.
            },
          ],
          &quot;emailAddresses&quot;: [ # Contains only valid RFC 2822 E-mail addresses.
            &quot;A String&quot;,
          ],
          &quot;dnsNames&quot;: [ # Contains only valid, fully-qualified host names.
            &quot;A String&quot;,
          ],
          &quot;uris&quot;: [ # Contains only valid RFC 3986 URIs.
            &quot;A String&quot;,
          ],
          &quot;ipAddresses&quot;: [ # Contains only valid 32-bit IPv4 addresses or RFC 4291 IPv6 addresses.
            &quot;A String&quot;,
          ],
        },
        &quot;hexSerialNumber&quot;: &quot;A String&quot;, # The serial number encoded in lowercase hexadecimal.
      },
      &quot;subjectKeyId&quot;: { # A KeyId identifies a specific public key, usually by hashing the public key. # Provides a means of identifiying certificates that contain a particular public key, per https://tools.ietf.org/html/rfc5280#section-4.2.1.2.
        &quot;keyId&quot;: &quot;A String&quot;, # Optional. The value of this KeyId encoded in lowercase hexadecimal. This is most likely the 160 bit SHA-1 hash of the public key.
      },
      &quot;authorityKeyId&quot;: { # A KeyId identifies a specific public key, usually by hashing the public key. # Identifies the subject_key_id of the parent certificate, per https://tools.ietf.org/html/rfc5280#section-4.2.1.1
        &quot;keyId&quot;: &quot;A String&quot;, # Optional. The value of this KeyId encoded in lowercase hexadecimal. This is most likely the 160 bit SHA-1 hash of the public key.
      },
      &quot;crlDistributionPoints&quot;: [ # Describes a list of locations to obtain CRL information, i.e. the DistributionPoint.fullName described by https://tools.ietf.org/html/rfc5280#section-4.2.1.13
        &quot;A String&quot;,
      ],
    },
  ],
  &quot;gcsBucket&quot;: &quot;A String&quot;, # Immutable. The name of a Cloud Storage bucket where this CertificateAuthority will publish content, such as the CA certificate and CRLs. This must be a bucket name, without any prefixes (such as `gs://`) or suffixes (such as `.googleapis.com`). For example, to use a bucket named `my-bucket`, you would simply specify `my-bucket`. If not specified, a managed bucket will be created.
  &quot;certificatePolicy&quot;: { # The issuing policy for a CertificateAuthority. Certificates will not be successfully issued from this CertificateAuthority if they violate the policy. # Optional. The CertificateAuthorityPolicy to enforce when issuing Certificates from this CertificateAuthority.
    &quot;maximumLifetime&quot;: &quot;A String&quot;, # Optional. The maximum lifetime allowed by the CertificateAuthority. Note that if the any part if the issuing chain expires before a Certificate&#x27;s requested maximum_lifetime, the effective lifetime will be explicitly truncated.
    &quot;overwriteConfigValues&quot;: { # A ReusableConfigWrapper describes values that may assist in creating an X.509 certificate, or a reference to a pre-defined set of values. # Optional. All Certificates issued by the CertificateAuthority will use the provided configuration values, overwriting any requested configuration values.
      &quot;reusableConfigValues&quot;: { # A ReusableConfigValues is used to describe certain fields of an X.509 certificate, such as the key usage fields, fields specific to CA certificates, certificate policy extensions and custom extensions. # Required. A user-specified inline ReusableConfigValues.
        &quot;additionalExtensions&quot;: [ # Optional. Describes custom X.509 extensions.
          { # An X509Extension specifies an X.509 extension, which may be used in different parts of X.509 objects like certificates, CSRs, and CRLs.
            &quot;objectId&quot;: { # An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages. # Required. The OID for this X.509 extension.
              &quot;objectIdPath&quot;: [ # Required. The parts of an OID path. The most significant parts of the path come first.
                42,
              ],
            },
            &quot;critical&quot;: True or False, # Required. Indicates whether or not this extension is critical (i.e., if the client does not know how to handle this extension, the client should consider this to be an error).
            &quot;value&quot;: &quot;A String&quot;, # Required. The value of this X.509 extension.
          },
        ],
        &quot;caOptions&quot;: { # Describes values that are relevant in a CA certificate. # Optional. Describes options in this ReusableConfigValues that are relevant in a CA certificate.
          &quot;maxIssuerPathLength&quot;: 42, # Optional. Refers to the path length restriction X.509 extension. For a CA certificate, this value describes the depth of subordinate CA certificates that are allowed. If this value is less than 0, the request will fail. If this value is missing, the max path length will be omitted from the CA certificate.
          &quot;isCa&quot;: True or False, # Optional. Refers to the &quot;CA&quot; X.509 extension, which is a boolean value. When this value is missing, the extension will be omitted from the CA certificate.
        },
        &quot;aiaOcspServers&quot;: [ # Optional. Describes Online Certificate Status Protocol (OCSP) endpoint addresses that appear in the &quot;Authority Information Access&quot; extension in the certificate.
          &quot;A String&quot;,
        ],
        &quot;keyUsage&quot;: { # A KeyUsage describes key usage values that may appear in an X.509 certificate. # Optional. Indicates the intended use for keys that correspond to a certificate.
          &quot;unknownExtendedKeyUsages&quot;: [ # Used to describe extended key usages that are not listed in the KeyUsage.ExtendedKeyUsageOptions message.
            { # An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages.
              &quot;objectIdPath&quot;: [ # Required. The parts of an OID path. The most significant parts of the path come first.
                42,
              ],
            },
          ],
          &quot;baseKeyUsage&quot;: { # KeyUsage.KeyUsageOptions corresponds to the key usage values described in https://tools.ietf.org/html/rfc5280#section-4.2.1.3. # Describes high-level ways in which a key may be used.
            &quot;decipherOnly&quot;: True or False, # The key may be used to decipher only.
            &quot;keyEncipherment&quot;: True or False, # The key may be used to encipher other keys.
            &quot;crlSign&quot;: True or False, # The key may be used sign certificate revocation lists.
            &quot;digitalSignature&quot;: True or False, # The key may be used for digital signatures.
            &quot;contentCommitment&quot;: True or False, # The key may be used for cryptographic commitments. Note that this may also be referred to as &quot;non-repudiation&quot;.
            &quot;encipherOnly&quot;: True or False, # The key may be used to encipher only.
            &quot;certSign&quot;: True or False, # The key may be used to sign certificates.
            &quot;keyAgreement&quot;: True or False, # The key may be used in a key agreement protocol.
            &quot;dataEncipherment&quot;: True or False, # The key may be used to encipher data.
          },
          &quot;extendedKeyUsage&quot;: { # KeyUsage.ExtendedKeyUsageOptions has fields that correspond to certain common OIDs that could be specified as an extended key usage value. # Detailed scenarios in which a key may be used.
            &quot;emailProtection&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.4. Officially described as &quot;Email protection&quot;.
            &quot;clientAuth&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.2. Officially described as &quot;TLS WWW client authentication&quot;, though regularly used for non-WWW TLS.
            &quot;ocspSigning&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.9. Officially described as &quot;Signing OCSP responses&quot;.
            &quot;serverAuth&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.1. Officially described as &quot;TLS WWW server authentication&quot;, though regularly used for non-WWW TLS.
            &quot;timeStamping&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.8. Officially described as &quot;Binding the hash of an object to a time&quot;.
            &quot;codeSigning&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.3. Officially described as &quot;Signing of downloadable executable code client authentication&quot;.
          },
        },
        &quot;policyIds&quot;: [ # Optional. Describes the X.509 certificate policy object identifiers, per https://tools.ietf.org/html/rfc5280#section-4.2.1.4.
          { # An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages.
            &quot;objectIdPath&quot;: [ # Required. The parts of an OID path. The most significant parts of the path come first.
              42,
            ],
          },
        ],
      },
      &quot;reusableConfig&quot;: &quot;A String&quot;, # Required. A resource path to a ReusableConfig in the format `projects/*/locations/*/reusableConfigs/*`.
    },
    &quot;allowedConfigList&quot;: { # Optional. All Certificates issued by the CertificateAuthority must match at least one listed ReusableConfigWrapper in the list.
      &quot;allowedConfigValues&quot;: [ # Required. All Certificates issued by the CertificateAuthority must match at least one listed ReusableConfigWrapper. If a ReusableConfigWrapper has an empty field, any value will be allowed for that field.
        { # A ReusableConfigWrapper describes values that may assist in creating an X.509 certificate, or a reference to a pre-defined set of values.
          &quot;reusableConfigValues&quot;: { # A ReusableConfigValues is used to describe certain fields of an X.509 certificate, such as the key usage fields, fields specific to CA certificates, certificate policy extensions and custom extensions. # Required. A user-specified inline ReusableConfigValues.
            &quot;additionalExtensions&quot;: [ # Optional. Describes custom X.509 extensions.
              { # An X509Extension specifies an X.509 extension, which may be used in different parts of X.509 objects like certificates, CSRs, and CRLs.
                &quot;objectId&quot;: { # An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages. # Required. The OID for this X.509 extension.
                  &quot;objectIdPath&quot;: [ # Required. The parts of an OID path. The most significant parts of the path come first.
                    42,
                  ],
                },
                &quot;critical&quot;: True or False, # Required. Indicates whether or not this extension is critical (i.e., if the client does not know how to handle this extension, the client should consider this to be an error).
                &quot;value&quot;: &quot;A String&quot;, # Required. The value of this X.509 extension.
              },
            ],
            &quot;caOptions&quot;: { # Describes values that are relevant in a CA certificate. # Optional. Describes options in this ReusableConfigValues that are relevant in a CA certificate.
              &quot;maxIssuerPathLength&quot;: 42, # Optional. Refers to the path length restriction X.509 extension. For a CA certificate, this value describes the depth of subordinate CA certificates that are allowed. If this value is less than 0, the request will fail. If this value is missing, the max path length will be omitted from the CA certificate.
              &quot;isCa&quot;: True or False, # Optional. Refers to the &quot;CA&quot; X.509 extension, which is a boolean value. When this value is missing, the extension will be omitted from the CA certificate.
            },
            &quot;aiaOcspServers&quot;: [ # Optional. Describes Online Certificate Status Protocol (OCSP) endpoint addresses that appear in the &quot;Authority Information Access&quot; extension in the certificate.
              &quot;A String&quot;,
            ],
            &quot;keyUsage&quot;: { # A KeyUsage describes key usage values that may appear in an X.509 certificate. # Optional. Indicates the intended use for keys that correspond to a certificate.
              &quot;unknownExtendedKeyUsages&quot;: [ # Used to describe extended key usages that are not listed in the KeyUsage.ExtendedKeyUsageOptions message.
                { # An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages.
                  &quot;objectIdPath&quot;: [ # Required. The parts of an OID path. The most significant parts of the path come first.
                    42,
                  ],
                },
              ],
              &quot;baseKeyUsage&quot;: { # KeyUsage.KeyUsageOptions corresponds to the key usage values described in https://tools.ietf.org/html/rfc5280#section-4.2.1.3. # Describes high-level ways in which a key may be used.
                &quot;decipherOnly&quot;: True or False, # The key may be used to decipher only.
                &quot;keyEncipherment&quot;: True or False, # The key may be used to encipher other keys.
                &quot;crlSign&quot;: True or False, # The key may be used sign certificate revocation lists.
                &quot;digitalSignature&quot;: True or False, # The key may be used for digital signatures.
                &quot;contentCommitment&quot;: True or False, # The key may be used for cryptographic commitments. Note that this may also be referred to as &quot;non-repudiation&quot;.
                &quot;encipherOnly&quot;: True or False, # The key may be used to encipher only.
                &quot;certSign&quot;: True or False, # The key may be used to sign certificates.
                &quot;keyAgreement&quot;: True or False, # The key may be used in a key agreement protocol.
                &quot;dataEncipherment&quot;: True or False, # The key may be used to encipher data.
              },
              &quot;extendedKeyUsage&quot;: { # KeyUsage.ExtendedKeyUsageOptions has fields that correspond to certain common OIDs that could be specified as an extended key usage value. # Detailed scenarios in which a key may be used.
                &quot;emailProtection&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.4. Officially described as &quot;Email protection&quot;.
                &quot;clientAuth&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.2. Officially described as &quot;TLS WWW client authentication&quot;, though regularly used for non-WWW TLS.
                &quot;ocspSigning&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.9. Officially described as &quot;Signing OCSP responses&quot;.
                &quot;serverAuth&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.1. Officially described as &quot;TLS WWW server authentication&quot;, though regularly used for non-WWW TLS.
                &quot;timeStamping&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.8. Officially described as &quot;Binding the hash of an object to a time&quot;.
                &quot;codeSigning&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.3. Officially described as &quot;Signing of downloadable executable code client authentication&quot;.
              },
            },
            &quot;policyIds&quot;: [ # Optional. Describes the X.509 certificate policy object identifiers, per https://tools.ietf.org/html/rfc5280#section-4.2.1.4.
              { # An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages.
                &quot;objectIdPath&quot;: [ # Required. The parts of an OID path. The most significant parts of the path come first.
                  42,
                ],
              },
            ],
          },
          &quot;reusableConfig&quot;: &quot;A String&quot;, # Required. A resource path to a ReusableConfig in the format `projects/*/locations/*/reusableConfigs/*`.
        },
      ],
    },
    &quot;allowedSans&quot;: { # AllowedSubjectAltNames specifies the allowed values for SubjectAltNames by the CertificateAuthority when issuing Certificates. # Optional. If a AllowedSubjectAltNames is specified here, then all Certificates issued by the CertificateAuthority must match AllowedSubjectAltNames. If no value or an empty value is specified, any value will be allowed for the SubjectAltNames field.
      &quot;allowedUris&quot;: [ # Optional. Contains valid RFC 3986 URIs. Glob patterns are also supported. To match across path seperators (i.e. &#x27;/&#x27;) use the double star glob pattern (i.e. &#x27;**&#x27;).
        &quot;A String&quot;,
      ],
      &quot;allowCustomSans&quot;: True or False, # Optional. Specifies if to allow custom X509Extension values.
      &quot;allowedEmailAddresses&quot;: [ # Optional. Contains valid RFC 2822 E-mail addresses. Glob patterns are also supported.
        &quot;A String&quot;,
      ],
      &quot;allowedIps&quot;: [ # Optional. Contains valid 32-bit IPv4 addresses and subnet ranges or RFC 4291 IPv6 addresses and subnet ranges. Subnet ranges are specified using the &#x27;/&#x27; notation (e.g. 10.0.0.0/8, 2001:700:300:1800::/64). Glob patterns are supported only for ip address entries (i.e. not for subnet ranges).
        &quot;A String&quot;,
      ],
      &quot;allowedDnsNames&quot;: [ # Optional. Contains valid, fully-qualified host names. Glob patterns are also supported. To allow an explicit wildcard certificate, escape with backlash (i.e. &quot;\*&quot;). E.g. for globbed entries: &#x27;*bar.com&#x27; will allow &#x27;foo.bar.com&#x27;, but not &#x27;*.bar.com&#x27;, unless the allow_globbing_dns_wildcards field is set. E.g. for wildcard entries: &#x27;\*.bar.com&#x27; will allow &#x27;*.bar.com&#x27;, but not &#x27;foo.bar.com&#x27;.
        &quot;A String&quot;,
      ],
      &quot;allowGlobbingDnsWildcards&quot;: True or False, # Optional. Specifies if glob patterns used for allowed_dns_names allow wildcard certificates. If this is set, certificate requests with wildcard domains will be permitted to match a glob pattern specified in allowed_dns_names. Otherwise, certificate requests with wildcard domains will be permitted only if allowed_dns_names contains a literal wildcard.
    },
    &quot;allowedCommonNames&quot;: [ # Optional. If any value is specified here, then all Certificates issued by the CertificateAuthority must match at least one listed value. If no value is specified, all values will be allowed for this fied. Glob patterns are also supported.
      &quot;A String&quot;,
    ],
    &quot;allowedLocationsAndOrganizations&quot;: [ # Optional. If any Subject is specified here, then all Certificates issued by the CertificateAuthority must match at least one listed Subject. If a Subject has an empty field, any value will be allowed for that field.
      { # Subject describes parts of a distinguished name that, in turn, describes the subject of the certificate.
        &quot;countryCode&quot;: &quot;A String&quot;, # The country code of the subject.
        &quot;locality&quot;: &quot;A String&quot;, # The locality or city of the subject.
        &quot;province&quot;: &quot;A String&quot;, # The province, territory, or regional state of the subject.
        &quot;organizationalUnit&quot;: &quot;A String&quot;, # The organizational_unit of the subject.
        &quot;streetAddress&quot;: &quot;A String&quot;, # The street address of the subject.
        &quot;organization&quot;: &quot;A String&quot;, # The organization of the subject.
        &quot;postalCode&quot;: &quot;A String&quot;, # The postal code of the subject.
      },
    ],
    &quot;allowedIssuanceModes&quot;: { # IssuanceModes specifies the allowed ways in which Certificates may be requested from this CertificateAuthority. # Optional. If specified, then only methods allowed in the IssuanceModes may be used to issue Certificates.
      &quot;allowCsrBasedIssuance&quot;: True or False, # Required. When true, allows callers to create Certificates by specifying a CSR.
      &quot;allowConfigBasedIssuance&quot;: True or False, # Required. When true, allows callers to create Certificates by specifying a CertificateConfig.
    },
  },
  &quot;config&quot;: { # A CertificateConfig describes an X.509 certificate or CSR that is to be created, as an alternative to using ASN.1. # Required. Immutable. The config used to create a self-signed X.509 certificate or CSR.
    &quot;publicKey&quot;: { # A PublicKey describes a public key. # Optional. The public key that corresponds to this config. This is, for example, used when issuing Certificates, but not when creating a self-signed CertificateAuthority or CertificateAuthority CSR.
      &quot;key&quot;: &quot;A String&quot;, # Required. A public key. When this is specified in a request, the padding and encoding can be any of the options described by the respective &#x27;KeyType&#x27; value. When this is generated by the service, it will always be an RFC 5280 [SubjectPublicKeyInfo](https://tools.ietf.org/html/rfc5280#section-4.1) structure containing an algorithm identifier and a key.
      &quot;type&quot;: &quot;A String&quot;, # Required. The type of public key.
    },
    &quot;subjectConfig&quot;: { # These values are used to create the distinguished name and subject alternative name fields in an X.509 certificate. # Required. Specifies some of the values in a certificate that are related to the subject.
      &quot;commonName&quot;: &quot;A String&quot;, # Optional. The &quot;common name&quot; of the distinguished name.
      &quot;subjectAltName&quot;: { # SubjectAltNames corresponds to a more modern way of listing what the asserted identity is in a certificate (i.e., compared to the &quot;common name&quot; in the distinguished name). # Optional. The subject alternative name fields.
        &quot;customSans&quot;: [ # Contains additional subject alternative name values.
          { # An X509Extension specifies an X.509 extension, which may be used in different parts of X.509 objects like certificates, CSRs, and CRLs.
            &quot;objectId&quot;: { # An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages. # Required. The OID for this X.509 extension.
              &quot;objectIdPath&quot;: [ # Required. The parts of an OID path. The most significant parts of the path come first.
                42,
              ],
            },
            &quot;critical&quot;: True or False, # Required. Indicates whether or not this extension is critical (i.e., if the client does not know how to handle this extension, the client should consider this to be an error).
            &quot;value&quot;: &quot;A String&quot;, # Required. The value of this X.509 extension.
          },
        ],
        &quot;emailAddresses&quot;: [ # Contains only valid RFC 2822 E-mail addresses.
          &quot;A String&quot;,
        ],
        &quot;dnsNames&quot;: [ # Contains only valid, fully-qualified host names.
          &quot;A String&quot;,
        ],
        &quot;uris&quot;: [ # Contains only valid RFC 3986 URIs.
          &quot;A String&quot;,
        ],
        &quot;ipAddresses&quot;: [ # Contains only valid 32-bit IPv4 addresses or RFC 4291 IPv6 addresses.
          &quot;A String&quot;,
        ],
      },
      &quot;subject&quot;: { # Subject describes parts of a distinguished name that, in turn, describes the subject of the certificate. # Required. Contains distinguished name fields such as the location and organization.
        &quot;countryCode&quot;: &quot;A String&quot;, # The country code of the subject.
        &quot;locality&quot;: &quot;A String&quot;, # The locality or city of the subject.
        &quot;province&quot;: &quot;A String&quot;, # The province, territory, or regional state of the subject.
        &quot;organizationalUnit&quot;: &quot;A String&quot;, # The organizational_unit of the subject.
        &quot;streetAddress&quot;: &quot;A String&quot;, # The street address of the subject.
        &quot;organization&quot;: &quot;A String&quot;, # The organization of the subject.
        &quot;postalCode&quot;: &quot;A String&quot;, # The postal code of the subject.
      },
    },
    &quot;reusableConfig&quot;: { # A ReusableConfigWrapper describes values that may assist in creating an X.509 certificate, or a reference to a pre-defined set of values. # Required. Describes how some of the technical fields in a certificate should be populated.
      &quot;reusableConfigValues&quot;: { # A ReusableConfigValues is used to describe certain fields of an X.509 certificate, such as the key usage fields, fields specific to CA certificates, certificate policy extensions and custom extensions. # Required. A user-specified inline ReusableConfigValues.
        &quot;additionalExtensions&quot;: [ # Optional. Describes custom X.509 extensions.
          { # An X509Extension specifies an X.509 extension, which may be used in different parts of X.509 objects like certificates, CSRs, and CRLs.
            &quot;objectId&quot;: { # An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages. # Required. The OID for this X.509 extension.
              &quot;objectIdPath&quot;: [ # Required. The parts of an OID path. The most significant parts of the path come first.
                42,
              ],
            },
            &quot;critical&quot;: True or False, # Required. Indicates whether or not this extension is critical (i.e., if the client does not know how to handle this extension, the client should consider this to be an error).
            &quot;value&quot;: &quot;A String&quot;, # Required. The value of this X.509 extension.
          },
        ],
        &quot;caOptions&quot;: { # Describes values that are relevant in a CA certificate. # Optional. Describes options in this ReusableConfigValues that are relevant in a CA certificate.
          &quot;maxIssuerPathLength&quot;: 42, # Optional. Refers to the path length restriction X.509 extension. For a CA certificate, this value describes the depth of subordinate CA certificates that are allowed. If this value is less than 0, the request will fail. If this value is missing, the max path length will be omitted from the CA certificate.
          &quot;isCa&quot;: True or False, # Optional. Refers to the &quot;CA&quot; X.509 extension, which is a boolean value. When this value is missing, the extension will be omitted from the CA certificate.
        },
        &quot;aiaOcspServers&quot;: [ # Optional. Describes Online Certificate Status Protocol (OCSP) endpoint addresses that appear in the &quot;Authority Information Access&quot; extension in the certificate.
          &quot;A String&quot;,
        ],
        &quot;keyUsage&quot;: { # A KeyUsage describes key usage values that may appear in an X.509 certificate. # Optional. Indicates the intended use for keys that correspond to a certificate.
          &quot;unknownExtendedKeyUsages&quot;: [ # Used to describe extended key usages that are not listed in the KeyUsage.ExtendedKeyUsageOptions message.
            { # An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages.
              &quot;objectIdPath&quot;: [ # Required. The parts of an OID path. The most significant parts of the path come first.
                42,
              ],
            },
          ],
          &quot;baseKeyUsage&quot;: { # KeyUsage.KeyUsageOptions corresponds to the key usage values described in https://tools.ietf.org/html/rfc5280#section-4.2.1.3. # Describes high-level ways in which a key may be used.
            &quot;decipherOnly&quot;: True or False, # The key may be used to decipher only.
            &quot;keyEncipherment&quot;: True or False, # The key may be used to encipher other keys.
            &quot;crlSign&quot;: True or False, # The key may be used sign certificate revocation lists.
            &quot;digitalSignature&quot;: True or False, # The key may be used for digital signatures.
            &quot;contentCommitment&quot;: True or False, # The key may be used for cryptographic commitments. Note that this may also be referred to as &quot;non-repudiation&quot;.
            &quot;encipherOnly&quot;: True or False, # The key may be used to encipher only.
            &quot;certSign&quot;: True or False, # The key may be used to sign certificates.
            &quot;keyAgreement&quot;: True or False, # The key may be used in a key agreement protocol.
            &quot;dataEncipherment&quot;: True or False, # The key may be used to encipher data.
          },
          &quot;extendedKeyUsage&quot;: { # KeyUsage.ExtendedKeyUsageOptions has fields that correspond to certain common OIDs that could be specified as an extended key usage value. # Detailed scenarios in which a key may be used.
            &quot;emailProtection&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.4. Officially described as &quot;Email protection&quot;.
            &quot;clientAuth&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.2. Officially described as &quot;TLS WWW client authentication&quot;, though regularly used for non-WWW TLS.
            &quot;ocspSigning&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.9. Officially described as &quot;Signing OCSP responses&quot;.
            &quot;serverAuth&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.1. Officially described as &quot;TLS WWW server authentication&quot;, though regularly used for non-WWW TLS.
            &quot;timeStamping&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.8. Officially described as &quot;Binding the hash of an object to a time&quot;.
            &quot;codeSigning&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.3. Officially described as &quot;Signing of downloadable executable code client authentication&quot;.
          },
        },
        &quot;policyIds&quot;: [ # Optional. Describes the X.509 certificate policy object identifiers, per https://tools.ietf.org/html/rfc5280#section-4.2.1.4.
          { # An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages.
            &quot;objectIdPath&quot;: [ # Required. The parts of an OID path. The most significant parts of the path come first.
              42,
            ],
          },
        ],
      },
      &quot;reusableConfig&quot;: &quot;A String&quot;, # Required. A resource path to a ReusableConfig in the format `projects/*/locations/*/reusableConfigs/*`.
    },
  },
  &quot;tier&quot;: &quot;A String&quot;, # Required. Immutable. The Tier of this CertificateAuthority.
  &quot;lifetime&quot;: &quot;A String&quot;, # Required. The desired lifetime of the CA certificate. Used to create the &quot;not_before_time&quot; and &quot;not_after_time&quot; fields inside an X.509 certificate.
  &quot;deleteTime&quot;: &quot;A String&quot;, # Output only. The time at which this CertificateAuthority will be deleted, if scheduled for deletion.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name for this CertificateAuthority in the format `projects/*/locations/*/certificateAuthorities/*`.
  &quot;accessUrls&quot;: { # URLs where a CertificateAuthority will publish content. # Output only. URLs for accessing content published by this CA, such as the CA certificate and CRLs.
    &quot;crlAccessUrl&quot;: &quot;A String&quot;, # The URL where this CertificateAuthority&#x27;s CRLs are published. This will only be set for CAs that have been activated.
    &quot;caCertificateAccessUrl&quot;: &quot;A String&quot;, # The URL where this CertificateAuthority&#x27;s CA certificate is published. This will only be set for CAs that have been activated.
  },
  &quot;issuingOptions&quot;: { # Options that affect all certificates issued by a CertificateAuthority. # Optional. The IssuingOptions to follow when issuing Certificates from this CertificateAuthority.
    &quot;includeCrlAccessUrl&quot;: True or False, # Required. When true, includes a URL to the CRL corresponding to certificates issued from a CertificateAuthority. CRLs will expire 7 days from their creation. However, we will rebuild daily. CRLs are also rebuilt shortly after a certificate is revoked.
    &quot;includeCaCertUrl&quot;: True or False, # Required. When true, includes a URL to the issuing CA certificate in the &quot;authority information access&quot; X.509 extension.
  },
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time at which this CertificateAuthority was created.
}

  certificateAuthorityId: string, Required. It must be unique within a location and match the regular expression `[a-zA-Z0-9_-]{1,63}`
  requestId: string, Optional. An ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and t he request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a network API call.
    &quot;metadata&quot;: { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
    },
    &quot;response&quot;: { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
    },
    &quot;done&quot;: True or False, # If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.
    &quot;error&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). # The error result of the operation in case of failure or cancellation.
      &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.
      &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    },
    &quot;name&quot;: &quot;A String&quot;, # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.
  }</pre>
</div>

<div class="method">
    <code class="details" id="disable">disable(name, body=None, x__xgafv=None)</code>
  <pre>Disable a CertificateAuthority.

Args:
  name: string, Required. The resource name for this CertificateAuthority in the format `projects/*/locations/*/certificateAuthorities/*`. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for CertificateAuthorityService.DisableCertificateAuthority.
    &quot;requestId&quot;: &quot;A String&quot;, # Optional. An ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and t he request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).
  }

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

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a network API call.
    &quot;metadata&quot;: { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
    },
    &quot;response&quot;: { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
    },
    &quot;done&quot;: True or False, # If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.
    &quot;error&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). # The error result of the operation in case of failure or cancellation.
      &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.
      &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    },
    &quot;name&quot;: &quot;A String&quot;, # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.
  }</pre>
</div>

<div class="method">
    <code class="details" id="enable">enable(name, body=None, x__xgafv=None)</code>
  <pre>Enable a CertificateAuthority.

Args:
  name: string, Required. The resource name for this CertificateAuthority in the format `projects/*/locations/*/certificateAuthorities/*`. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for CertificateAuthorityService.EnableCertificateAuthority.
    &quot;requestId&quot;: &quot;A String&quot;, # Optional. An ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and t he request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).
  }

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

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a network API call.
    &quot;metadata&quot;: { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
    },
    &quot;response&quot;: { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
    },
    &quot;done&quot;: True or False, # If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.
    &quot;error&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). # The error result of the operation in case of failure or cancellation.
      &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.
      &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    },
    &quot;name&quot;: &quot;A String&quot;, # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.
  }</pre>
</div>

<div class="method">
    <code class="details" id="fetch">fetch(name, x__xgafv=None)</code>
  <pre>Fetch a certificate signing request (CSR) from a CertificateAuthority that is in state PENDING_ACTIVATION and is of type SUBORDINATE. The CSR must then be signed by the desired parent Certificate Authority, which could be another CertificateAuthority resource, or could be an on-prem certificate authority. See also ActivateCertificateAuthority.

Args:
  name: string, Required. The resource name for this CertificateAuthority in the format `projects/*/locations/*/certificateAuthorities/*`. (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 CertificateAuthorityService.FetchCertificateAuthorityCsr.
    &quot;pemCsr&quot;: &quot;A String&quot;, # Output only. The PEM-encoded signed certificate signing request (CSR).
  }</pre>
</div>

<div class="method">
    <code class="details" id="get">get(name, x__xgafv=None)</code>
  <pre>Returns a CertificateAuthority.

Args:
  name: string, Required. The name of the CertificateAuthority to get. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A CertificateAuthority represents an individual Certificate Authority. A CertificateAuthority can be used to create Certificates.
    &quot;type&quot;: &quot;A String&quot;, # Required. Immutable. The Type of this CertificateAuthority.
    &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time at which this CertificateAuthority was updated.
    &quot;state&quot;: &quot;A String&quot;, # Output only. The State for this CertificateAuthority.
    &quot;pemCaCertificates&quot;: [ # Output only. This CertificateAuthority&#x27;s certificate chain, including the current CertificateAuthority&#x27;s certificate. Ordered such that the root issuer is the final element (consistent with RFC 5246). For a self-signed CA, this will only list the current CertificateAuthority&#x27;s certificate.
      &quot;A String&quot;,
    ],
    &quot;subordinateConfig&quot;: { # Describes a subordinate CA&#x27;s issuers. This is either a resource path to a known issuing CertificateAuthority, or a PEM issuer certificate chain. # Optional. If this is a subordinate CertificateAuthority, this field will be set with the subordinate configuration, which describes its issuers. This may be updated, but this CertificateAuthority must continue to validate.
      &quot;certificateAuthority&quot;: &quot;A String&quot;, # Required. This can refer to a CertificateAuthority in the same project that was used to create a subordinate CertificateAuthority. This field is used for information and usability purposes only. The resource name is in the format `projects/*/locations/*/certificateAuthorities/*`.
      &quot;pemIssuerChain&quot;: { # This message describes a subordinate CA&#x27;s issuer certificate chain. This wrapper exists for compatibility reasons. # Required. Contains the PEM certificate chain for the issuers of this CertificateAuthority, but not pem certificate for this CA itself.
        &quot;pemCertificates&quot;: [ # Required. Expected to be in leaf-to-root order according to RFC 5246.
          &quot;A String&quot;,
        ],
      },
    },
    &quot;keySpec&quot;: { # A Cloud KMS key configuration that a CertificateAuthority will use. # Required. Immutable. Used when issuing certificates for this CertificateAuthority. If this CertificateAuthority is a self-signed CertificateAuthority, this key is also used to sign the self-signed CA certificate. Otherwise, it is used to sign a CSR.
      &quot;cloudKmsKeyVersion&quot;: &quot;A String&quot;, # Required. The resource name for an existing Cloud KMS CryptoKeyVersion in the format `projects/*/locations/*/keyRings/*/cryptoKeys/*/cryptoKeyVersions/*`. This option enables full flexibility in the key&#x27;s capabilities and properties.
      &quot;algorithm&quot;: &quot;A String&quot;, # Required. The algorithm to use for creating a managed Cloud KMS key for a for a simplified experience. All managed keys will be have their ProtectionLevel as `HSM`.
    },
    &quot;labels&quot;: { # Optional. Labels with user-defined metadata.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;caCertificateDescriptions&quot;: [ # Output only. A structured description of this CertificateAuthority&#x27;s CA certificate and its issuers. Ordered as self-to-root.
      { # A CertificateDescription describes an X.509 certificate or CSR that has been issued, as an alternative to using ASN.1 / X.509.
        &quot;aiaIssuingCertificateUrls&quot;: [ # Describes lists of issuer CA certificate URLs that appear in the &quot;Authority Information Access&quot; extension in the certificate.
          &quot;A String&quot;,
        ],
        &quot;configValues&quot;: { # A ReusableConfigValues is used to describe certain fields of an X.509 certificate, such as the key usage fields, fields specific to CA certificates, certificate policy extensions and custom extensions. # Describes some of the technical fields in a certificate.
          &quot;additionalExtensions&quot;: [ # Optional. Describes custom X.509 extensions.
            { # An X509Extension specifies an X.509 extension, which may be used in different parts of X.509 objects like certificates, CSRs, and CRLs.
              &quot;objectId&quot;: { # An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages. # Required. The OID for this X.509 extension.
                &quot;objectIdPath&quot;: [ # Required. The parts of an OID path. The most significant parts of the path come first.
                  42,
                ],
              },
              &quot;critical&quot;: True or False, # Required. Indicates whether or not this extension is critical (i.e., if the client does not know how to handle this extension, the client should consider this to be an error).
              &quot;value&quot;: &quot;A String&quot;, # Required. The value of this X.509 extension.
            },
          ],
          &quot;caOptions&quot;: { # Describes values that are relevant in a CA certificate. # Optional. Describes options in this ReusableConfigValues that are relevant in a CA certificate.
            &quot;maxIssuerPathLength&quot;: 42, # Optional. Refers to the path length restriction X.509 extension. For a CA certificate, this value describes the depth of subordinate CA certificates that are allowed. If this value is less than 0, the request will fail. If this value is missing, the max path length will be omitted from the CA certificate.
            &quot;isCa&quot;: True or False, # Optional. Refers to the &quot;CA&quot; X.509 extension, which is a boolean value. When this value is missing, the extension will be omitted from the CA certificate.
          },
          &quot;aiaOcspServers&quot;: [ # Optional. Describes Online Certificate Status Protocol (OCSP) endpoint addresses that appear in the &quot;Authority Information Access&quot; extension in the certificate.
            &quot;A String&quot;,
          ],
          &quot;keyUsage&quot;: { # A KeyUsage describes key usage values that may appear in an X.509 certificate. # Optional. Indicates the intended use for keys that correspond to a certificate.
            &quot;unknownExtendedKeyUsages&quot;: [ # Used to describe extended key usages that are not listed in the KeyUsage.ExtendedKeyUsageOptions message.
              { # An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages.
                &quot;objectIdPath&quot;: [ # Required. The parts of an OID path. The most significant parts of the path come first.
                  42,
                ],
              },
            ],
            &quot;baseKeyUsage&quot;: { # KeyUsage.KeyUsageOptions corresponds to the key usage values described in https://tools.ietf.org/html/rfc5280#section-4.2.1.3. # Describes high-level ways in which a key may be used.
              &quot;decipherOnly&quot;: True or False, # The key may be used to decipher only.
              &quot;keyEncipherment&quot;: True or False, # The key may be used to encipher other keys.
              &quot;crlSign&quot;: True or False, # The key may be used sign certificate revocation lists.
              &quot;digitalSignature&quot;: True or False, # The key may be used for digital signatures.
              &quot;contentCommitment&quot;: True or False, # The key may be used for cryptographic commitments. Note that this may also be referred to as &quot;non-repudiation&quot;.
              &quot;encipherOnly&quot;: True or False, # The key may be used to encipher only.
              &quot;certSign&quot;: True or False, # The key may be used to sign certificates.
              &quot;keyAgreement&quot;: True or False, # The key may be used in a key agreement protocol.
              &quot;dataEncipherment&quot;: True or False, # The key may be used to encipher data.
            },
            &quot;extendedKeyUsage&quot;: { # KeyUsage.ExtendedKeyUsageOptions has fields that correspond to certain common OIDs that could be specified as an extended key usage value. # Detailed scenarios in which a key may be used.
              &quot;emailProtection&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.4. Officially described as &quot;Email protection&quot;.
              &quot;clientAuth&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.2. Officially described as &quot;TLS WWW client authentication&quot;, though regularly used for non-WWW TLS.
              &quot;ocspSigning&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.9. Officially described as &quot;Signing OCSP responses&quot;.
              &quot;serverAuth&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.1. Officially described as &quot;TLS WWW server authentication&quot;, though regularly used for non-WWW TLS.
              &quot;timeStamping&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.8. Officially described as &quot;Binding the hash of an object to a time&quot;.
              &quot;codeSigning&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.3. Officially described as &quot;Signing of downloadable executable code client authentication&quot;.
            },
          },
          &quot;policyIds&quot;: [ # Optional. Describes the X.509 certificate policy object identifiers, per https://tools.ietf.org/html/rfc5280#section-4.2.1.4.
            { # An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages.
              &quot;objectIdPath&quot;: [ # Required. The parts of an OID path. The most significant parts of the path come first.
                42,
              ],
            },
          ],
        },
        &quot;certFingerprint&quot;: { # A group of fingerprints for the x509 certificate. # The hash of the x.509 certificate.
          &quot;sha256Hash&quot;: &quot;A String&quot;, # The SHA 256 hash, encoded in hexadecimal, of the DER x509 certificate.
        },
        &quot;publicKey&quot;: { # A PublicKey describes a public key. # The public key that corresponds to an issued certificate.
          &quot;key&quot;: &quot;A String&quot;, # Required. A public key. When this is specified in a request, the padding and encoding can be any of the options described by the respective &#x27;KeyType&#x27; value. When this is generated by the service, it will always be an RFC 5280 [SubjectPublicKeyInfo](https://tools.ietf.org/html/rfc5280#section-4.1) structure containing an algorithm identifier and a key.
          &quot;type&quot;: &quot;A String&quot;, # Required. The type of public key.
        },
        &quot;subjectDescription&quot;: { # These values describe fields in an issued X.509 certificate such as the distinguished name, subject alternative names, serial number, and lifetime. # Describes some of the values in a certificate that are related to the subject and lifetime.
          &quot;notBeforeTime&quot;: &quot;A String&quot;, # The time at which the certificate becomes valid.
          &quot;lifetime&quot;: &quot;A String&quot;, # For convenience, the actual lifetime of an issued certificate. Corresponds to &#x27;not_after_time&#x27; - &#x27;not_before_time&#x27;.
          &quot;notAfterTime&quot;: &quot;A String&quot;, # The time at which the certificate expires.
          &quot;subject&quot;: { # Subject describes parts of a distinguished name that, in turn, describes the subject of the certificate. # Contains distinguished name fields such as the location and organization.
            &quot;countryCode&quot;: &quot;A String&quot;, # The country code of the subject.
            &quot;locality&quot;: &quot;A String&quot;, # The locality or city of the subject.
            &quot;province&quot;: &quot;A String&quot;, # The province, territory, or regional state of the subject.
            &quot;organizationalUnit&quot;: &quot;A String&quot;, # The organizational_unit of the subject.
            &quot;streetAddress&quot;: &quot;A String&quot;, # The street address of the subject.
            &quot;organization&quot;: &quot;A String&quot;, # The organization of the subject.
            &quot;postalCode&quot;: &quot;A String&quot;, # The postal code of the subject.
          },
          &quot;commonName&quot;: &quot;A String&quot;, # The &quot;common name&quot; of the distinguished name.
          &quot;subjectAltName&quot;: { # SubjectAltNames corresponds to a more modern way of listing what the asserted identity is in a certificate (i.e., compared to the &quot;common name&quot; in the distinguished name). # The subject alternative name fields.
            &quot;customSans&quot;: [ # Contains additional subject alternative name values.
              { # An X509Extension specifies an X.509 extension, which may be used in different parts of X.509 objects like certificates, CSRs, and CRLs.
                &quot;objectId&quot;: { # An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages. # Required. The OID for this X.509 extension.
                  &quot;objectIdPath&quot;: [ # Required. The parts of an OID path. The most significant parts of the path come first.
                    42,
                  ],
                },
                &quot;critical&quot;: True or False, # Required. Indicates whether or not this extension is critical (i.e., if the client does not know how to handle this extension, the client should consider this to be an error).
                &quot;value&quot;: &quot;A String&quot;, # Required. The value of this X.509 extension.
              },
            ],
            &quot;emailAddresses&quot;: [ # Contains only valid RFC 2822 E-mail addresses.
              &quot;A String&quot;,
            ],
            &quot;dnsNames&quot;: [ # Contains only valid, fully-qualified host names.
              &quot;A String&quot;,
            ],
            &quot;uris&quot;: [ # Contains only valid RFC 3986 URIs.
              &quot;A String&quot;,
            ],
            &quot;ipAddresses&quot;: [ # Contains only valid 32-bit IPv4 addresses or RFC 4291 IPv6 addresses.
              &quot;A String&quot;,
            ],
          },
          &quot;hexSerialNumber&quot;: &quot;A String&quot;, # The serial number encoded in lowercase hexadecimal.
        },
        &quot;subjectKeyId&quot;: { # A KeyId identifies a specific public key, usually by hashing the public key. # Provides a means of identifiying certificates that contain a particular public key, per https://tools.ietf.org/html/rfc5280#section-4.2.1.2.
          &quot;keyId&quot;: &quot;A String&quot;, # Optional. The value of this KeyId encoded in lowercase hexadecimal. This is most likely the 160 bit SHA-1 hash of the public key.
        },
        &quot;authorityKeyId&quot;: { # A KeyId identifies a specific public key, usually by hashing the public key. # Identifies the subject_key_id of the parent certificate, per https://tools.ietf.org/html/rfc5280#section-4.2.1.1
          &quot;keyId&quot;: &quot;A String&quot;, # Optional. The value of this KeyId encoded in lowercase hexadecimal. This is most likely the 160 bit SHA-1 hash of the public key.
        },
        &quot;crlDistributionPoints&quot;: [ # Describes a list of locations to obtain CRL information, i.e. the DistributionPoint.fullName described by https://tools.ietf.org/html/rfc5280#section-4.2.1.13
          &quot;A String&quot;,
        ],
      },
    ],
    &quot;gcsBucket&quot;: &quot;A String&quot;, # Immutable. The name of a Cloud Storage bucket where this CertificateAuthority will publish content, such as the CA certificate and CRLs. This must be a bucket name, without any prefixes (such as `gs://`) or suffixes (such as `.googleapis.com`). For example, to use a bucket named `my-bucket`, you would simply specify `my-bucket`. If not specified, a managed bucket will be created.
    &quot;certificatePolicy&quot;: { # The issuing policy for a CertificateAuthority. Certificates will not be successfully issued from this CertificateAuthority if they violate the policy. # Optional. The CertificateAuthorityPolicy to enforce when issuing Certificates from this CertificateAuthority.
      &quot;maximumLifetime&quot;: &quot;A String&quot;, # Optional. The maximum lifetime allowed by the CertificateAuthority. Note that if the any part if the issuing chain expires before a Certificate&#x27;s requested maximum_lifetime, the effective lifetime will be explicitly truncated.
      &quot;overwriteConfigValues&quot;: { # A ReusableConfigWrapper describes values that may assist in creating an X.509 certificate, or a reference to a pre-defined set of values. # Optional. All Certificates issued by the CertificateAuthority will use the provided configuration values, overwriting any requested configuration values.
        &quot;reusableConfigValues&quot;: { # A ReusableConfigValues is used to describe certain fields of an X.509 certificate, such as the key usage fields, fields specific to CA certificates, certificate policy extensions and custom extensions. # Required. A user-specified inline ReusableConfigValues.
          &quot;additionalExtensions&quot;: [ # Optional. Describes custom X.509 extensions.
            { # An X509Extension specifies an X.509 extension, which may be used in different parts of X.509 objects like certificates, CSRs, and CRLs.
              &quot;objectId&quot;: { # An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages. # Required. The OID for this X.509 extension.
                &quot;objectIdPath&quot;: [ # Required. The parts of an OID path. The most significant parts of the path come first.
                  42,
                ],
              },
              &quot;critical&quot;: True or False, # Required. Indicates whether or not this extension is critical (i.e., if the client does not know how to handle this extension, the client should consider this to be an error).
              &quot;value&quot;: &quot;A String&quot;, # Required. The value of this X.509 extension.
            },
          ],
          &quot;caOptions&quot;: { # Describes values that are relevant in a CA certificate. # Optional. Describes options in this ReusableConfigValues that are relevant in a CA certificate.
            &quot;maxIssuerPathLength&quot;: 42, # Optional. Refers to the path length restriction X.509 extension. For a CA certificate, this value describes the depth of subordinate CA certificates that are allowed. If this value is less than 0, the request will fail. If this value is missing, the max path length will be omitted from the CA certificate.
            &quot;isCa&quot;: True or False, # Optional. Refers to the &quot;CA&quot; X.509 extension, which is a boolean value. When this value is missing, the extension will be omitted from the CA certificate.
          },
          &quot;aiaOcspServers&quot;: [ # Optional. Describes Online Certificate Status Protocol (OCSP) endpoint addresses that appear in the &quot;Authority Information Access&quot; extension in the certificate.
            &quot;A String&quot;,
          ],
          &quot;keyUsage&quot;: { # A KeyUsage describes key usage values that may appear in an X.509 certificate. # Optional. Indicates the intended use for keys that correspond to a certificate.
            &quot;unknownExtendedKeyUsages&quot;: [ # Used to describe extended key usages that are not listed in the KeyUsage.ExtendedKeyUsageOptions message.
              { # An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages.
                &quot;objectIdPath&quot;: [ # Required. The parts of an OID path. The most significant parts of the path come first.
                  42,
                ],
              },
            ],
            &quot;baseKeyUsage&quot;: { # KeyUsage.KeyUsageOptions corresponds to the key usage values described in https://tools.ietf.org/html/rfc5280#section-4.2.1.3. # Describes high-level ways in which a key may be used.
              &quot;decipherOnly&quot;: True or False, # The key may be used to decipher only.
              &quot;keyEncipherment&quot;: True or False, # The key may be used to encipher other keys.
              &quot;crlSign&quot;: True or False, # The key may be used sign certificate revocation lists.
              &quot;digitalSignature&quot;: True or False, # The key may be used for digital signatures.
              &quot;contentCommitment&quot;: True or False, # The key may be used for cryptographic commitments. Note that this may also be referred to as &quot;non-repudiation&quot;.
              &quot;encipherOnly&quot;: True or False, # The key may be used to encipher only.
              &quot;certSign&quot;: True or False, # The key may be used to sign certificates.
              &quot;keyAgreement&quot;: True or False, # The key may be used in a key agreement protocol.
              &quot;dataEncipherment&quot;: True or False, # The key may be used to encipher data.
            },
            &quot;extendedKeyUsage&quot;: { # KeyUsage.ExtendedKeyUsageOptions has fields that correspond to certain common OIDs that could be specified as an extended key usage value. # Detailed scenarios in which a key may be used.
              &quot;emailProtection&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.4. Officially described as &quot;Email protection&quot;.
              &quot;clientAuth&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.2. Officially described as &quot;TLS WWW client authentication&quot;, though regularly used for non-WWW TLS.
              &quot;ocspSigning&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.9. Officially described as &quot;Signing OCSP responses&quot;.
              &quot;serverAuth&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.1. Officially described as &quot;TLS WWW server authentication&quot;, though regularly used for non-WWW TLS.
              &quot;timeStamping&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.8. Officially described as &quot;Binding the hash of an object to a time&quot;.
              &quot;codeSigning&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.3. Officially described as &quot;Signing of downloadable executable code client authentication&quot;.
            },
          },
          &quot;policyIds&quot;: [ # Optional. Describes the X.509 certificate policy object identifiers, per https://tools.ietf.org/html/rfc5280#section-4.2.1.4.
            { # An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages.
              &quot;objectIdPath&quot;: [ # Required. The parts of an OID path. The most significant parts of the path come first.
                42,
              ],
            },
          ],
        },
        &quot;reusableConfig&quot;: &quot;A String&quot;, # Required. A resource path to a ReusableConfig in the format `projects/*/locations/*/reusableConfigs/*`.
      },
      &quot;allowedConfigList&quot;: { # Optional. All Certificates issued by the CertificateAuthority must match at least one listed ReusableConfigWrapper in the list.
        &quot;allowedConfigValues&quot;: [ # Required. All Certificates issued by the CertificateAuthority must match at least one listed ReusableConfigWrapper. If a ReusableConfigWrapper has an empty field, any value will be allowed for that field.
          { # A ReusableConfigWrapper describes values that may assist in creating an X.509 certificate, or a reference to a pre-defined set of values.
            &quot;reusableConfigValues&quot;: { # A ReusableConfigValues is used to describe certain fields of an X.509 certificate, such as the key usage fields, fields specific to CA certificates, certificate policy extensions and custom extensions. # Required. A user-specified inline ReusableConfigValues.
              &quot;additionalExtensions&quot;: [ # Optional. Describes custom X.509 extensions.
                { # An X509Extension specifies an X.509 extension, which may be used in different parts of X.509 objects like certificates, CSRs, and CRLs.
                  &quot;objectId&quot;: { # An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages. # Required. The OID for this X.509 extension.
                    &quot;objectIdPath&quot;: [ # Required. The parts of an OID path. The most significant parts of the path come first.
                      42,
                    ],
                  },
                  &quot;critical&quot;: True or False, # Required. Indicates whether or not this extension is critical (i.e., if the client does not know how to handle this extension, the client should consider this to be an error).
                  &quot;value&quot;: &quot;A String&quot;, # Required. The value of this X.509 extension.
                },
              ],
              &quot;caOptions&quot;: { # Describes values that are relevant in a CA certificate. # Optional. Describes options in this ReusableConfigValues that are relevant in a CA certificate.
                &quot;maxIssuerPathLength&quot;: 42, # Optional. Refers to the path length restriction X.509 extension. For a CA certificate, this value describes the depth of subordinate CA certificates that are allowed. If this value is less than 0, the request will fail. If this value is missing, the max path length will be omitted from the CA certificate.
                &quot;isCa&quot;: True or False, # Optional. Refers to the &quot;CA&quot; X.509 extension, which is a boolean value. When this value is missing, the extension will be omitted from the CA certificate.
              },
              &quot;aiaOcspServers&quot;: [ # Optional. Describes Online Certificate Status Protocol (OCSP) endpoint addresses that appear in the &quot;Authority Information Access&quot; extension in the certificate.
                &quot;A String&quot;,
              ],
              &quot;keyUsage&quot;: { # A KeyUsage describes key usage values that may appear in an X.509 certificate. # Optional. Indicates the intended use for keys that correspond to a certificate.
                &quot;unknownExtendedKeyUsages&quot;: [ # Used to describe extended key usages that are not listed in the KeyUsage.ExtendedKeyUsageOptions message.
                  { # An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages.
                    &quot;objectIdPath&quot;: [ # Required. The parts of an OID path. The most significant parts of the path come first.
                      42,
                    ],
                  },
                ],
                &quot;baseKeyUsage&quot;: { # KeyUsage.KeyUsageOptions corresponds to the key usage values described in https://tools.ietf.org/html/rfc5280#section-4.2.1.3. # Describes high-level ways in which a key may be used.
                  &quot;decipherOnly&quot;: True or False, # The key may be used to decipher only.
                  &quot;keyEncipherment&quot;: True or False, # The key may be used to encipher other keys.
                  &quot;crlSign&quot;: True or False, # The key may be used sign certificate revocation lists.
                  &quot;digitalSignature&quot;: True or False, # The key may be used for digital signatures.
                  &quot;contentCommitment&quot;: True or False, # The key may be used for cryptographic commitments. Note that this may also be referred to as &quot;non-repudiation&quot;.
                  &quot;encipherOnly&quot;: True or False, # The key may be used to encipher only.
                  &quot;certSign&quot;: True or False, # The key may be used to sign certificates.
                  &quot;keyAgreement&quot;: True or False, # The key may be used in a key agreement protocol.
                  &quot;dataEncipherment&quot;: True or False, # The key may be used to encipher data.
                },
                &quot;extendedKeyUsage&quot;: { # KeyUsage.ExtendedKeyUsageOptions has fields that correspond to certain common OIDs that could be specified as an extended key usage value. # Detailed scenarios in which a key may be used.
                  &quot;emailProtection&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.4. Officially described as &quot;Email protection&quot;.
                  &quot;clientAuth&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.2. Officially described as &quot;TLS WWW client authentication&quot;, though regularly used for non-WWW TLS.
                  &quot;ocspSigning&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.9. Officially described as &quot;Signing OCSP responses&quot;.
                  &quot;serverAuth&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.1. Officially described as &quot;TLS WWW server authentication&quot;, though regularly used for non-WWW TLS.
                  &quot;timeStamping&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.8. Officially described as &quot;Binding the hash of an object to a time&quot;.
                  &quot;codeSigning&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.3. Officially described as &quot;Signing of downloadable executable code client authentication&quot;.
                },
              },
              &quot;policyIds&quot;: [ # Optional. Describes the X.509 certificate policy object identifiers, per https://tools.ietf.org/html/rfc5280#section-4.2.1.4.
                { # An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages.
                  &quot;objectIdPath&quot;: [ # Required. The parts of an OID path. The most significant parts of the path come first.
                    42,
                  ],
                },
              ],
            },
            &quot;reusableConfig&quot;: &quot;A String&quot;, # Required. A resource path to a ReusableConfig in the format `projects/*/locations/*/reusableConfigs/*`.
          },
        ],
      },
      &quot;allowedSans&quot;: { # AllowedSubjectAltNames specifies the allowed values for SubjectAltNames by the CertificateAuthority when issuing Certificates. # Optional. If a AllowedSubjectAltNames is specified here, then all Certificates issued by the CertificateAuthority must match AllowedSubjectAltNames. If no value or an empty value is specified, any value will be allowed for the SubjectAltNames field.
        &quot;allowedUris&quot;: [ # Optional. Contains valid RFC 3986 URIs. Glob patterns are also supported. To match across path seperators (i.e. &#x27;/&#x27;) use the double star glob pattern (i.e. &#x27;**&#x27;).
          &quot;A String&quot;,
        ],
        &quot;allowCustomSans&quot;: True or False, # Optional. Specifies if to allow custom X509Extension values.
        &quot;allowedEmailAddresses&quot;: [ # Optional. Contains valid RFC 2822 E-mail addresses. Glob patterns are also supported.
          &quot;A String&quot;,
        ],
        &quot;allowedIps&quot;: [ # Optional. Contains valid 32-bit IPv4 addresses and subnet ranges or RFC 4291 IPv6 addresses and subnet ranges. Subnet ranges are specified using the &#x27;/&#x27; notation (e.g. 10.0.0.0/8, 2001:700:300:1800::/64). Glob patterns are supported only for ip address entries (i.e. not for subnet ranges).
          &quot;A String&quot;,
        ],
        &quot;allowedDnsNames&quot;: [ # Optional. Contains valid, fully-qualified host names. Glob patterns are also supported. To allow an explicit wildcard certificate, escape with backlash (i.e. &quot;\*&quot;). E.g. for globbed entries: &#x27;*bar.com&#x27; will allow &#x27;foo.bar.com&#x27;, but not &#x27;*.bar.com&#x27;, unless the allow_globbing_dns_wildcards field is set. E.g. for wildcard entries: &#x27;\*.bar.com&#x27; will allow &#x27;*.bar.com&#x27;, but not &#x27;foo.bar.com&#x27;.
          &quot;A String&quot;,
        ],
        &quot;allowGlobbingDnsWildcards&quot;: True or False, # Optional. Specifies if glob patterns used for allowed_dns_names allow wildcard certificates. If this is set, certificate requests with wildcard domains will be permitted to match a glob pattern specified in allowed_dns_names. Otherwise, certificate requests with wildcard domains will be permitted only if allowed_dns_names contains a literal wildcard.
      },
      &quot;allowedCommonNames&quot;: [ # Optional. If any value is specified here, then all Certificates issued by the CertificateAuthority must match at least one listed value. If no value is specified, all values will be allowed for this fied. Glob patterns are also supported.
        &quot;A String&quot;,
      ],
      &quot;allowedLocationsAndOrganizations&quot;: [ # Optional. If any Subject is specified here, then all Certificates issued by the CertificateAuthority must match at least one listed Subject. If a Subject has an empty field, any value will be allowed for that field.
        { # Subject describes parts of a distinguished name that, in turn, describes the subject of the certificate.
          &quot;countryCode&quot;: &quot;A String&quot;, # The country code of the subject.
          &quot;locality&quot;: &quot;A String&quot;, # The locality or city of the subject.
          &quot;province&quot;: &quot;A String&quot;, # The province, territory, or regional state of the subject.
          &quot;organizationalUnit&quot;: &quot;A String&quot;, # The organizational_unit of the subject.
          &quot;streetAddress&quot;: &quot;A String&quot;, # The street address of the subject.
          &quot;organization&quot;: &quot;A String&quot;, # The organization of the subject.
          &quot;postalCode&quot;: &quot;A String&quot;, # The postal code of the subject.
        },
      ],
      &quot;allowedIssuanceModes&quot;: { # IssuanceModes specifies the allowed ways in which Certificates may be requested from this CertificateAuthority. # Optional. If specified, then only methods allowed in the IssuanceModes may be used to issue Certificates.
        &quot;allowCsrBasedIssuance&quot;: True or False, # Required. When true, allows callers to create Certificates by specifying a CSR.
        &quot;allowConfigBasedIssuance&quot;: True or False, # Required. When true, allows callers to create Certificates by specifying a CertificateConfig.
      },
    },
    &quot;config&quot;: { # A CertificateConfig describes an X.509 certificate or CSR that is to be created, as an alternative to using ASN.1. # Required. Immutable. The config used to create a self-signed X.509 certificate or CSR.
      &quot;publicKey&quot;: { # A PublicKey describes a public key. # Optional. The public key that corresponds to this config. This is, for example, used when issuing Certificates, but not when creating a self-signed CertificateAuthority or CertificateAuthority CSR.
        &quot;key&quot;: &quot;A String&quot;, # Required. A public key. When this is specified in a request, the padding and encoding can be any of the options described by the respective &#x27;KeyType&#x27; value. When this is generated by the service, it will always be an RFC 5280 [SubjectPublicKeyInfo](https://tools.ietf.org/html/rfc5280#section-4.1) structure containing an algorithm identifier and a key.
        &quot;type&quot;: &quot;A String&quot;, # Required. The type of public key.
      },
      &quot;subjectConfig&quot;: { # These values are used to create the distinguished name and subject alternative name fields in an X.509 certificate. # Required. Specifies some of the values in a certificate that are related to the subject.
        &quot;commonName&quot;: &quot;A String&quot;, # Optional. The &quot;common name&quot; of the distinguished name.
        &quot;subjectAltName&quot;: { # SubjectAltNames corresponds to a more modern way of listing what the asserted identity is in a certificate (i.e., compared to the &quot;common name&quot; in the distinguished name). # Optional. The subject alternative name fields.
          &quot;customSans&quot;: [ # Contains additional subject alternative name values.
            { # An X509Extension specifies an X.509 extension, which may be used in different parts of X.509 objects like certificates, CSRs, and CRLs.
              &quot;objectId&quot;: { # An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages. # Required. The OID for this X.509 extension.
                &quot;objectIdPath&quot;: [ # Required. The parts of an OID path. The most significant parts of the path come first.
                  42,
                ],
              },
              &quot;critical&quot;: True or False, # Required. Indicates whether or not this extension is critical (i.e., if the client does not know how to handle this extension, the client should consider this to be an error).
              &quot;value&quot;: &quot;A String&quot;, # Required. The value of this X.509 extension.
            },
          ],
          &quot;emailAddresses&quot;: [ # Contains only valid RFC 2822 E-mail addresses.
            &quot;A String&quot;,
          ],
          &quot;dnsNames&quot;: [ # Contains only valid, fully-qualified host names.
            &quot;A String&quot;,
          ],
          &quot;uris&quot;: [ # Contains only valid RFC 3986 URIs.
            &quot;A String&quot;,
          ],
          &quot;ipAddresses&quot;: [ # Contains only valid 32-bit IPv4 addresses or RFC 4291 IPv6 addresses.
            &quot;A String&quot;,
          ],
        },
        &quot;subject&quot;: { # Subject describes parts of a distinguished name that, in turn, describes the subject of the certificate. # Required. Contains distinguished name fields such as the location and organization.
          &quot;countryCode&quot;: &quot;A String&quot;, # The country code of the subject.
          &quot;locality&quot;: &quot;A String&quot;, # The locality or city of the subject.
          &quot;province&quot;: &quot;A String&quot;, # The province, territory, or regional state of the subject.
          &quot;organizationalUnit&quot;: &quot;A String&quot;, # The organizational_unit of the subject.
          &quot;streetAddress&quot;: &quot;A String&quot;, # The street address of the subject.
          &quot;organization&quot;: &quot;A String&quot;, # The organization of the subject.
          &quot;postalCode&quot;: &quot;A String&quot;, # The postal code of the subject.
        },
      },
      &quot;reusableConfig&quot;: { # A ReusableConfigWrapper describes values that may assist in creating an X.509 certificate, or a reference to a pre-defined set of values. # Required. Describes how some of the technical fields in a certificate should be populated.
        &quot;reusableConfigValues&quot;: { # A ReusableConfigValues is used to describe certain fields of an X.509 certificate, such as the key usage fields, fields specific to CA certificates, certificate policy extensions and custom extensions. # Required. A user-specified inline ReusableConfigValues.
          &quot;additionalExtensions&quot;: [ # Optional. Describes custom X.509 extensions.
            { # An X509Extension specifies an X.509 extension, which may be used in different parts of X.509 objects like certificates, CSRs, and CRLs.
              &quot;objectId&quot;: { # An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages. # Required. The OID for this X.509 extension.
                &quot;objectIdPath&quot;: [ # Required. The parts of an OID path. The most significant parts of the path come first.
                  42,
                ],
              },
              &quot;critical&quot;: True or False, # Required. Indicates whether or not this extension is critical (i.e., if the client does not know how to handle this extension, the client should consider this to be an error).
              &quot;value&quot;: &quot;A String&quot;, # Required. The value of this X.509 extension.
            },
          ],
          &quot;caOptions&quot;: { # Describes values that are relevant in a CA certificate. # Optional. Describes options in this ReusableConfigValues that are relevant in a CA certificate.
            &quot;maxIssuerPathLength&quot;: 42, # Optional. Refers to the path length restriction X.509 extension. For a CA certificate, this value describes the depth of subordinate CA certificates that are allowed. If this value is less than 0, the request will fail. If this value is missing, the max path length will be omitted from the CA certificate.
            &quot;isCa&quot;: True or False, # Optional. Refers to the &quot;CA&quot; X.509 extension, which is a boolean value. When this value is missing, the extension will be omitted from the CA certificate.
          },
          &quot;aiaOcspServers&quot;: [ # Optional. Describes Online Certificate Status Protocol (OCSP) endpoint addresses that appear in the &quot;Authority Information Access&quot; extension in the certificate.
            &quot;A String&quot;,
          ],
          &quot;keyUsage&quot;: { # A KeyUsage describes key usage values that may appear in an X.509 certificate. # Optional. Indicates the intended use for keys that correspond to a certificate.
            &quot;unknownExtendedKeyUsages&quot;: [ # Used to describe extended key usages that are not listed in the KeyUsage.ExtendedKeyUsageOptions message.
              { # An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages.
                &quot;objectIdPath&quot;: [ # Required. The parts of an OID path. The most significant parts of the path come first.
                  42,
                ],
              },
            ],
            &quot;baseKeyUsage&quot;: { # KeyUsage.KeyUsageOptions corresponds to the key usage values described in https://tools.ietf.org/html/rfc5280#section-4.2.1.3. # Describes high-level ways in which a key may be used.
              &quot;decipherOnly&quot;: True or False, # The key may be used to decipher only.
              &quot;keyEncipherment&quot;: True or False, # The key may be used to encipher other keys.
              &quot;crlSign&quot;: True or False, # The key may be used sign certificate revocation lists.
              &quot;digitalSignature&quot;: True or False, # The key may be used for digital signatures.
              &quot;contentCommitment&quot;: True or False, # The key may be used for cryptographic commitments. Note that this may also be referred to as &quot;non-repudiation&quot;.
              &quot;encipherOnly&quot;: True or False, # The key may be used to encipher only.
              &quot;certSign&quot;: True or False, # The key may be used to sign certificates.
              &quot;keyAgreement&quot;: True or False, # The key may be used in a key agreement protocol.
              &quot;dataEncipherment&quot;: True or False, # The key may be used to encipher data.
            },
            &quot;extendedKeyUsage&quot;: { # KeyUsage.ExtendedKeyUsageOptions has fields that correspond to certain common OIDs that could be specified as an extended key usage value. # Detailed scenarios in which a key may be used.
              &quot;emailProtection&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.4. Officially described as &quot;Email protection&quot;.
              &quot;clientAuth&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.2. Officially described as &quot;TLS WWW client authentication&quot;, though regularly used for non-WWW TLS.
              &quot;ocspSigning&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.9. Officially described as &quot;Signing OCSP responses&quot;.
              &quot;serverAuth&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.1. Officially described as &quot;TLS WWW server authentication&quot;, though regularly used for non-WWW TLS.
              &quot;timeStamping&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.8. Officially described as &quot;Binding the hash of an object to a time&quot;.
              &quot;codeSigning&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.3. Officially described as &quot;Signing of downloadable executable code client authentication&quot;.
            },
          },
          &quot;policyIds&quot;: [ # Optional. Describes the X.509 certificate policy object identifiers, per https://tools.ietf.org/html/rfc5280#section-4.2.1.4.
            { # An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages.
              &quot;objectIdPath&quot;: [ # Required. The parts of an OID path. The most significant parts of the path come first.
                42,
              ],
            },
          ],
        },
        &quot;reusableConfig&quot;: &quot;A String&quot;, # Required. A resource path to a ReusableConfig in the format `projects/*/locations/*/reusableConfigs/*`.
      },
    },
    &quot;tier&quot;: &quot;A String&quot;, # Required. Immutable. The Tier of this CertificateAuthority.
    &quot;lifetime&quot;: &quot;A String&quot;, # Required. The desired lifetime of the CA certificate. Used to create the &quot;not_before_time&quot; and &quot;not_after_time&quot; fields inside an X.509 certificate.
    &quot;deleteTime&quot;: &quot;A String&quot;, # Output only. The time at which this CertificateAuthority will be deleted, if scheduled for deletion.
    &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name for this CertificateAuthority in the format `projects/*/locations/*/certificateAuthorities/*`.
    &quot;accessUrls&quot;: { # URLs where a CertificateAuthority will publish content. # Output only. URLs for accessing content published by this CA, such as the CA certificate and CRLs.
      &quot;crlAccessUrl&quot;: &quot;A String&quot;, # The URL where this CertificateAuthority&#x27;s CRLs are published. This will only be set for CAs that have been activated.
      &quot;caCertificateAccessUrl&quot;: &quot;A String&quot;, # The URL where this CertificateAuthority&#x27;s CA certificate is published. This will only be set for CAs that have been activated.
    },
    &quot;issuingOptions&quot;: { # Options that affect all certificates issued by a CertificateAuthority. # Optional. The IssuingOptions to follow when issuing Certificates from this CertificateAuthority.
      &quot;includeCrlAccessUrl&quot;: True or False, # Required. When true, includes a URL to the CRL corresponding to certificates issued from a CertificateAuthority. CRLs will expire 7 days from their creation. However, we will rebuild daily. CRLs are also rebuilt shortly after a certificate is revoked.
      &quot;includeCaCertUrl&quot;: True or False, # Required. When true, includes a URL to the issuing CA certificate in the &quot;authority information access&quot; X.509 extension.
    },
    &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time at which this CertificateAuthority was created.
  }</pre>
</div>

<div class="method">
    <code class="details" id="getIamPolicy">getIamPolicy(resource, options_requestedPolicyVersion=None, x__xgafv=None)</code>
  <pre>Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.

Args:
  resource: string, REQUIRED: The resource for which the policy is being requested. See the operation documentation for the appropriate value for this field. (required)
  options_requestedPolicyVersion: integer, Optional. The policy format version to be returned. Valid values are 0, 1, and 3. Requests specifying an invalid value will be rejected. Requests for policies with any conditional bindings must specify version 3. Policies without any conditional bindings may specify any valid value or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # An Identity and Access Management (IAM) policy, which specifies access controls for Google Cloud resources. A `Policy` is a collection of `bindings`. A `binding` binds one or more `members` to a single `role`. Members can be user accounts, service accounts, Google groups, and domains (such as G Suite). A `role` is a named list of permissions; each `role` can be an IAM predefined role or a user-created custom role. For some types of Google Cloud resources, a `binding` can also specify a `condition`, which is a logical expression that allows access to a resource only if the expression evaluates to `true`. A condition can add constraints based on attributes of the request, the resource, or both. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies). **JSON example:** { &quot;bindings&quot;: [ { &quot;role&quot;: &quot;roles/resourcemanager.organizationAdmin&quot;, &quot;members&quot;: [ &quot;user:mike@example.com&quot;, &quot;group:admins@example.com&quot;, &quot;domain:google.com&quot;, &quot;serviceAccount:my-project-id@appspot.gserviceaccount.com&quot; ] }, { &quot;role&quot;: &quot;roles/resourcemanager.organizationViewer&quot;, &quot;members&quot;: [ &quot;user:eve@example.com&quot; ], &quot;condition&quot;: { &quot;title&quot;: &quot;expirable access&quot;, &quot;description&quot;: &quot;Does not grant access after Sep 2020&quot;, &quot;expression&quot;: &quot;request.time &lt; timestamp(&#x27;2020-10-01T00:00:00.000Z&#x27;)&quot;, } } ], &quot;etag&quot;: &quot;BwWWja0YfJA=&quot;, &quot;version&quot;: 3 } **YAML example:** bindings: - members: - user:mike@example.com - group:admins@example.com - domain:google.com - serviceAccount:my-project-id@appspot.gserviceaccount.com role: roles/resourcemanager.organizationAdmin - members: - user:eve@example.com role: roles/resourcemanager.organizationViewer condition: title: expirable access description: Does not grant access after Sep 2020 expression: request.time &lt; timestamp(&#x27;2020-10-01T00:00:00.000Z&#x27;) - etag: BwWWja0YfJA= - version: 3 For a description of IAM and its features, see the [IAM documentation](https://cloud.google.com/iam/docs/).
    &quot;version&quot;: 42, # Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
    &quot;auditConfigs&quot;: [ # Specifies cloud audit logging configuration for this policy.
      { # Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { &quot;audit_configs&quot;: [ { &quot;service&quot;: &quot;allServices&quot;, &quot;audit_log_configs&quot;: [ { &quot;log_type&quot;: &quot;DATA_READ&quot;, &quot;exempted_members&quot;: [ &quot;user:jose@example.com&quot; ] }, { &quot;log_type&quot;: &quot;DATA_WRITE&quot; }, { &quot;log_type&quot;: &quot;ADMIN_READ&quot; } ] }, { &quot;service&quot;: &quot;sampleservice.googleapis.com&quot;, &quot;audit_log_configs&quot;: [ { &quot;log_type&quot;: &quot;DATA_READ&quot; }, { &quot;log_type&quot;: &quot;DATA_WRITE&quot;, &quot;exempted_members&quot;: [ &quot;user:aliya@example.com&quot; ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts jose@example.com from DATA_READ logging, and aliya@example.com from DATA_WRITE logging.
        &quot;auditLogConfigs&quot;: [ # The configuration for logging of each type of permission.
          { # Provides the configuration for logging a type of permissions. Example: { &quot;audit_log_configs&quot;: [ { &quot;log_type&quot;: &quot;DATA_READ&quot;, &quot;exempted_members&quot;: [ &quot;user:jose@example.com&quot; ] }, { &quot;log_type&quot;: &quot;DATA_WRITE&quot; } ] } This enables &#x27;DATA_READ&#x27; and &#x27;DATA_WRITE&#x27; logging, while exempting jose@example.com from DATA_READ logging.
            &quot;logType&quot;: &quot;A String&quot;, # The log type that this config enables.
            &quot;exemptedMembers&quot;: [ # Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members.
              &quot;A String&quot;,
            ],
          },
        ],
        &quot;service&quot;: &quot;A String&quot;, # Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services.
      },
    ],
    &quot;bindings&quot;: [ # Associates a list of `members` to a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one member.
      { # Associates `members` with a `role`.
        &quot;members&quot;: [ # Specifies the identities requesting access for a Cloud Platform resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`.
          &quot;A String&quot;,
        ],
        &quot;role&quot;: &quot;A String&quot;, # Role that is assigned to `members`. For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
        &quot;bindingId&quot;: &quot;A String&quot;,
        &quot;condition&quot;: { # Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: &quot;Summary size limit&quot; description: &quot;Determines if a summary is less than 100 chars&quot; expression: &quot;document.summary.size() &lt; 100&quot; Example (Equality): title: &quot;Requestor is owner&quot; description: &quot;Determines if requestor is the document owner&quot; expression: &quot;document.owner == request.auth.claims.email&quot; Example (Logic): title: &quot;Public documents&quot; description: &quot;Determine whether the document should be publicly visible&quot; expression: &quot;document.type != &#x27;private&#x27; &amp;&amp; document.type != &#x27;internal&#x27;&quot; Example (Data Manipulation): title: &quot;Notification string&quot; description: &quot;Create a notification string with a timestamp.&quot; expression: &quot;&#x27;New message received at &#x27; + string(document.create_time)&quot; The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information. # The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the members in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
          &quot;expression&quot;: &quot;A String&quot;, # Textual representation of an expression in Common Expression Language syntax.
          &quot;title&quot;: &quot;A String&quot;, # Optional. Title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression.
          &quot;location&quot;: &quot;A String&quot;, # Optional. String indicating the location of the expression for error reporting, e.g. a file name and a position in the file.
          &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.
        },
      },
    ],
    &quot;etag&quot;: &quot;A String&quot;, # `etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, filter=None, orderBy=None, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists CertificateAuthorities.

Args:
  parent: string, Required. The resource name of the location associated with the CertificateAuthorities, in the format `projects/*/locations/*`. (required)
  filter: string, Optional. Only include resources that match the filter in the response.
  orderBy: string, Optional. Specify how the results should be sorted.
  pageSize: integer, Optional. Limit on the number of CertificateAuthorities to include in the response. Further CertificateAuthorities can subsequently be obtained by including the ListCertificateAuthoritiesResponse.next_page_token in a subsequent request. If unspecified, the server will pick an appropriate default.
  pageToken: string, Optional. Pagination token, returned earlier via ListCertificateAuthoritiesResponse.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 CertificateAuthorityService.ListCertificateAuthorities.
    &quot;unreachable&quot;: [ # A list of locations (e.g. &quot;us-west1&quot;) that could not be reached.
      &quot;A String&quot;,
    ],
    &quot;nextPageToken&quot;: &quot;A String&quot;, # A token to retrieve next page of results. Pass this value in ListCertificateAuthoritiesRequest.next_page_token to retrieve the next page of results.
    &quot;certificateAuthorities&quot;: [ # The list of CertificateAuthorities.
      { # A CertificateAuthority represents an individual Certificate Authority. A CertificateAuthority can be used to create Certificates.
        &quot;type&quot;: &quot;A String&quot;, # Required. Immutable. The Type of this CertificateAuthority.
        &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time at which this CertificateAuthority was updated.
        &quot;state&quot;: &quot;A String&quot;, # Output only. The State for this CertificateAuthority.
        &quot;pemCaCertificates&quot;: [ # Output only. This CertificateAuthority&#x27;s certificate chain, including the current CertificateAuthority&#x27;s certificate. Ordered such that the root issuer is the final element (consistent with RFC 5246). For a self-signed CA, this will only list the current CertificateAuthority&#x27;s certificate.
          &quot;A String&quot;,
        ],
        &quot;subordinateConfig&quot;: { # Describes a subordinate CA&#x27;s issuers. This is either a resource path to a known issuing CertificateAuthority, or a PEM issuer certificate chain. # Optional. If this is a subordinate CertificateAuthority, this field will be set with the subordinate configuration, which describes its issuers. This may be updated, but this CertificateAuthority must continue to validate.
          &quot;certificateAuthority&quot;: &quot;A String&quot;, # Required. This can refer to a CertificateAuthority in the same project that was used to create a subordinate CertificateAuthority. This field is used for information and usability purposes only. The resource name is in the format `projects/*/locations/*/certificateAuthorities/*`.
          &quot;pemIssuerChain&quot;: { # This message describes a subordinate CA&#x27;s issuer certificate chain. This wrapper exists for compatibility reasons. # Required. Contains the PEM certificate chain for the issuers of this CertificateAuthority, but not pem certificate for this CA itself.
            &quot;pemCertificates&quot;: [ # Required. Expected to be in leaf-to-root order according to RFC 5246.
              &quot;A String&quot;,
            ],
          },
        },
        &quot;keySpec&quot;: { # A Cloud KMS key configuration that a CertificateAuthority will use. # Required. Immutable. Used when issuing certificates for this CertificateAuthority. If this CertificateAuthority is a self-signed CertificateAuthority, this key is also used to sign the self-signed CA certificate. Otherwise, it is used to sign a CSR.
          &quot;cloudKmsKeyVersion&quot;: &quot;A String&quot;, # Required. The resource name for an existing Cloud KMS CryptoKeyVersion in the format `projects/*/locations/*/keyRings/*/cryptoKeys/*/cryptoKeyVersions/*`. This option enables full flexibility in the key&#x27;s capabilities and properties.
          &quot;algorithm&quot;: &quot;A String&quot;, # Required. The algorithm to use for creating a managed Cloud KMS key for a for a simplified experience. All managed keys will be have their ProtectionLevel as `HSM`.
        },
        &quot;labels&quot;: { # Optional. Labels with user-defined metadata.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;caCertificateDescriptions&quot;: [ # Output only. A structured description of this CertificateAuthority&#x27;s CA certificate and its issuers. Ordered as self-to-root.
          { # A CertificateDescription describes an X.509 certificate or CSR that has been issued, as an alternative to using ASN.1 / X.509.
            &quot;aiaIssuingCertificateUrls&quot;: [ # Describes lists of issuer CA certificate URLs that appear in the &quot;Authority Information Access&quot; extension in the certificate.
              &quot;A String&quot;,
            ],
            &quot;configValues&quot;: { # A ReusableConfigValues is used to describe certain fields of an X.509 certificate, such as the key usage fields, fields specific to CA certificates, certificate policy extensions and custom extensions. # Describes some of the technical fields in a certificate.
              &quot;additionalExtensions&quot;: [ # Optional. Describes custom X.509 extensions.
                { # An X509Extension specifies an X.509 extension, which may be used in different parts of X.509 objects like certificates, CSRs, and CRLs.
                  &quot;objectId&quot;: { # An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages. # Required. The OID for this X.509 extension.
                    &quot;objectIdPath&quot;: [ # Required. The parts of an OID path. The most significant parts of the path come first.
                      42,
                    ],
                  },
                  &quot;critical&quot;: True or False, # Required. Indicates whether or not this extension is critical (i.e., if the client does not know how to handle this extension, the client should consider this to be an error).
                  &quot;value&quot;: &quot;A String&quot;, # Required. The value of this X.509 extension.
                },
              ],
              &quot;caOptions&quot;: { # Describes values that are relevant in a CA certificate. # Optional. Describes options in this ReusableConfigValues that are relevant in a CA certificate.
                &quot;maxIssuerPathLength&quot;: 42, # Optional. Refers to the path length restriction X.509 extension. For a CA certificate, this value describes the depth of subordinate CA certificates that are allowed. If this value is less than 0, the request will fail. If this value is missing, the max path length will be omitted from the CA certificate.
                &quot;isCa&quot;: True or False, # Optional. Refers to the &quot;CA&quot; X.509 extension, which is a boolean value. When this value is missing, the extension will be omitted from the CA certificate.
              },
              &quot;aiaOcspServers&quot;: [ # Optional. Describes Online Certificate Status Protocol (OCSP) endpoint addresses that appear in the &quot;Authority Information Access&quot; extension in the certificate.
                &quot;A String&quot;,
              ],
              &quot;keyUsage&quot;: { # A KeyUsage describes key usage values that may appear in an X.509 certificate. # Optional. Indicates the intended use for keys that correspond to a certificate.
                &quot;unknownExtendedKeyUsages&quot;: [ # Used to describe extended key usages that are not listed in the KeyUsage.ExtendedKeyUsageOptions message.
                  { # An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages.
                    &quot;objectIdPath&quot;: [ # Required. The parts of an OID path. The most significant parts of the path come first.
                      42,
                    ],
                  },
                ],
                &quot;baseKeyUsage&quot;: { # KeyUsage.KeyUsageOptions corresponds to the key usage values described in https://tools.ietf.org/html/rfc5280#section-4.2.1.3. # Describes high-level ways in which a key may be used.
                  &quot;decipherOnly&quot;: True or False, # The key may be used to decipher only.
                  &quot;keyEncipherment&quot;: True or False, # The key may be used to encipher other keys.
                  &quot;crlSign&quot;: True or False, # The key may be used sign certificate revocation lists.
                  &quot;digitalSignature&quot;: True or False, # The key may be used for digital signatures.
                  &quot;contentCommitment&quot;: True or False, # The key may be used for cryptographic commitments. Note that this may also be referred to as &quot;non-repudiation&quot;.
                  &quot;encipherOnly&quot;: True or False, # The key may be used to encipher only.
                  &quot;certSign&quot;: True or False, # The key may be used to sign certificates.
                  &quot;keyAgreement&quot;: True or False, # The key may be used in a key agreement protocol.
                  &quot;dataEncipherment&quot;: True or False, # The key may be used to encipher data.
                },
                &quot;extendedKeyUsage&quot;: { # KeyUsage.ExtendedKeyUsageOptions has fields that correspond to certain common OIDs that could be specified as an extended key usage value. # Detailed scenarios in which a key may be used.
                  &quot;emailProtection&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.4. Officially described as &quot;Email protection&quot;.
                  &quot;clientAuth&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.2. Officially described as &quot;TLS WWW client authentication&quot;, though regularly used for non-WWW TLS.
                  &quot;ocspSigning&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.9. Officially described as &quot;Signing OCSP responses&quot;.
                  &quot;serverAuth&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.1. Officially described as &quot;TLS WWW server authentication&quot;, though regularly used for non-WWW TLS.
                  &quot;timeStamping&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.8. Officially described as &quot;Binding the hash of an object to a time&quot;.
                  &quot;codeSigning&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.3. Officially described as &quot;Signing of downloadable executable code client authentication&quot;.
                },
              },
              &quot;policyIds&quot;: [ # Optional. Describes the X.509 certificate policy object identifiers, per https://tools.ietf.org/html/rfc5280#section-4.2.1.4.
                { # An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages.
                  &quot;objectIdPath&quot;: [ # Required. The parts of an OID path. The most significant parts of the path come first.
                    42,
                  ],
                },
              ],
            },
            &quot;certFingerprint&quot;: { # A group of fingerprints for the x509 certificate. # The hash of the x.509 certificate.
              &quot;sha256Hash&quot;: &quot;A String&quot;, # The SHA 256 hash, encoded in hexadecimal, of the DER x509 certificate.
            },
            &quot;publicKey&quot;: { # A PublicKey describes a public key. # The public key that corresponds to an issued certificate.
              &quot;key&quot;: &quot;A String&quot;, # Required. A public key. When this is specified in a request, the padding and encoding can be any of the options described by the respective &#x27;KeyType&#x27; value. When this is generated by the service, it will always be an RFC 5280 [SubjectPublicKeyInfo](https://tools.ietf.org/html/rfc5280#section-4.1) structure containing an algorithm identifier and a key.
              &quot;type&quot;: &quot;A String&quot;, # Required. The type of public key.
            },
            &quot;subjectDescription&quot;: { # These values describe fields in an issued X.509 certificate such as the distinguished name, subject alternative names, serial number, and lifetime. # Describes some of the values in a certificate that are related to the subject and lifetime.
              &quot;notBeforeTime&quot;: &quot;A String&quot;, # The time at which the certificate becomes valid.
              &quot;lifetime&quot;: &quot;A String&quot;, # For convenience, the actual lifetime of an issued certificate. Corresponds to &#x27;not_after_time&#x27; - &#x27;not_before_time&#x27;.
              &quot;notAfterTime&quot;: &quot;A String&quot;, # The time at which the certificate expires.
              &quot;subject&quot;: { # Subject describes parts of a distinguished name that, in turn, describes the subject of the certificate. # Contains distinguished name fields such as the location and organization.
                &quot;countryCode&quot;: &quot;A String&quot;, # The country code of the subject.
                &quot;locality&quot;: &quot;A String&quot;, # The locality or city of the subject.
                &quot;province&quot;: &quot;A String&quot;, # The province, territory, or regional state of the subject.
                &quot;organizationalUnit&quot;: &quot;A String&quot;, # The organizational_unit of the subject.
                &quot;streetAddress&quot;: &quot;A String&quot;, # The street address of the subject.
                &quot;organization&quot;: &quot;A String&quot;, # The organization of the subject.
                &quot;postalCode&quot;: &quot;A String&quot;, # The postal code of the subject.
              },
              &quot;commonName&quot;: &quot;A String&quot;, # The &quot;common name&quot; of the distinguished name.
              &quot;subjectAltName&quot;: { # SubjectAltNames corresponds to a more modern way of listing what the asserted identity is in a certificate (i.e., compared to the &quot;common name&quot; in the distinguished name). # The subject alternative name fields.
                &quot;customSans&quot;: [ # Contains additional subject alternative name values.
                  { # An X509Extension specifies an X.509 extension, which may be used in different parts of X.509 objects like certificates, CSRs, and CRLs.
                    &quot;objectId&quot;: { # An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages. # Required. The OID for this X.509 extension.
                      &quot;objectIdPath&quot;: [ # Required. The parts of an OID path. The most significant parts of the path come first.
                        42,
                      ],
                    },
                    &quot;critical&quot;: True or False, # Required. Indicates whether or not this extension is critical (i.e., if the client does not know how to handle this extension, the client should consider this to be an error).
                    &quot;value&quot;: &quot;A String&quot;, # Required. The value of this X.509 extension.
                  },
                ],
                &quot;emailAddresses&quot;: [ # Contains only valid RFC 2822 E-mail addresses.
                  &quot;A String&quot;,
                ],
                &quot;dnsNames&quot;: [ # Contains only valid, fully-qualified host names.
                  &quot;A String&quot;,
                ],
                &quot;uris&quot;: [ # Contains only valid RFC 3986 URIs.
                  &quot;A String&quot;,
                ],
                &quot;ipAddresses&quot;: [ # Contains only valid 32-bit IPv4 addresses or RFC 4291 IPv6 addresses.
                  &quot;A String&quot;,
                ],
              },
              &quot;hexSerialNumber&quot;: &quot;A String&quot;, # The serial number encoded in lowercase hexadecimal.
            },
            &quot;subjectKeyId&quot;: { # A KeyId identifies a specific public key, usually by hashing the public key. # Provides a means of identifiying certificates that contain a particular public key, per https://tools.ietf.org/html/rfc5280#section-4.2.1.2.
              &quot;keyId&quot;: &quot;A String&quot;, # Optional. The value of this KeyId encoded in lowercase hexadecimal. This is most likely the 160 bit SHA-1 hash of the public key.
            },
            &quot;authorityKeyId&quot;: { # A KeyId identifies a specific public key, usually by hashing the public key. # Identifies the subject_key_id of the parent certificate, per https://tools.ietf.org/html/rfc5280#section-4.2.1.1
              &quot;keyId&quot;: &quot;A String&quot;, # Optional. The value of this KeyId encoded in lowercase hexadecimal. This is most likely the 160 bit SHA-1 hash of the public key.
            },
            &quot;crlDistributionPoints&quot;: [ # Describes a list of locations to obtain CRL information, i.e. the DistributionPoint.fullName described by https://tools.ietf.org/html/rfc5280#section-4.2.1.13
              &quot;A String&quot;,
            ],
          },
        ],
        &quot;gcsBucket&quot;: &quot;A String&quot;, # Immutable. The name of a Cloud Storage bucket where this CertificateAuthority will publish content, such as the CA certificate and CRLs. This must be a bucket name, without any prefixes (such as `gs://`) or suffixes (such as `.googleapis.com`). For example, to use a bucket named `my-bucket`, you would simply specify `my-bucket`. If not specified, a managed bucket will be created.
        &quot;certificatePolicy&quot;: { # The issuing policy for a CertificateAuthority. Certificates will not be successfully issued from this CertificateAuthority if they violate the policy. # Optional. The CertificateAuthorityPolicy to enforce when issuing Certificates from this CertificateAuthority.
          &quot;maximumLifetime&quot;: &quot;A String&quot;, # Optional. The maximum lifetime allowed by the CertificateAuthority. Note that if the any part if the issuing chain expires before a Certificate&#x27;s requested maximum_lifetime, the effective lifetime will be explicitly truncated.
          &quot;overwriteConfigValues&quot;: { # A ReusableConfigWrapper describes values that may assist in creating an X.509 certificate, or a reference to a pre-defined set of values. # Optional. All Certificates issued by the CertificateAuthority will use the provided configuration values, overwriting any requested configuration values.
            &quot;reusableConfigValues&quot;: { # A ReusableConfigValues is used to describe certain fields of an X.509 certificate, such as the key usage fields, fields specific to CA certificates, certificate policy extensions and custom extensions. # Required. A user-specified inline ReusableConfigValues.
              &quot;additionalExtensions&quot;: [ # Optional. Describes custom X.509 extensions.
                { # An X509Extension specifies an X.509 extension, which may be used in different parts of X.509 objects like certificates, CSRs, and CRLs.
                  &quot;objectId&quot;: { # An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages. # Required. The OID for this X.509 extension.
                    &quot;objectIdPath&quot;: [ # Required. The parts of an OID path. The most significant parts of the path come first.
                      42,
                    ],
                  },
                  &quot;critical&quot;: True or False, # Required. Indicates whether or not this extension is critical (i.e., if the client does not know how to handle this extension, the client should consider this to be an error).
                  &quot;value&quot;: &quot;A String&quot;, # Required. The value of this X.509 extension.
                },
              ],
              &quot;caOptions&quot;: { # Describes values that are relevant in a CA certificate. # Optional. Describes options in this ReusableConfigValues that are relevant in a CA certificate.
                &quot;maxIssuerPathLength&quot;: 42, # Optional. Refers to the path length restriction X.509 extension. For a CA certificate, this value describes the depth of subordinate CA certificates that are allowed. If this value is less than 0, the request will fail. If this value is missing, the max path length will be omitted from the CA certificate.
                &quot;isCa&quot;: True or False, # Optional. Refers to the &quot;CA&quot; X.509 extension, which is a boolean value. When this value is missing, the extension will be omitted from the CA certificate.
              },
              &quot;aiaOcspServers&quot;: [ # Optional. Describes Online Certificate Status Protocol (OCSP) endpoint addresses that appear in the &quot;Authority Information Access&quot; extension in the certificate.
                &quot;A String&quot;,
              ],
              &quot;keyUsage&quot;: { # A KeyUsage describes key usage values that may appear in an X.509 certificate. # Optional. Indicates the intended use for keys that correspond to a certificate.
                &quot;unknownExtendedKeyUsages&quot;: [ # Used to describe extended key usages that are not listed in the KeyUsage.ExtendedKeyUsageOptions message.
                  { # An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages.
                    &quot;objectIdPath&quot;: [ # Required. The parts of an OID path. The most significant parts of the path come first.
                      42,
                    ],
                  },
                ],
                &quot;baseKeyUsage&quot;: { # KeyUsage.KeyUsageOptions corresponds to the key usage values described in https://tools.ietf.org/html/rfc5280#section-4.2.1.3. # Describes high-level ways in which a key may be used.
                  &quot;decipherOnly&quot;: True or False, # The key may be used to decipher only.
                  &quot;keyEncipherment&quot;: True or False, # The key may be used to encipher other keys.
                  &quot;crlSign&quot;: True or False, # The key may be used sign certificate revocation lists.
                  &quot;digitalSignature&quot;: True or False, # The key may be used for digital signatures.
                  &quot;contentCommitment&quot;: True or False, # The key may be used for cryptographic commitments. Note that this may also be referred to as &quot;non-repudiation&quot;.
                  &quot;encipherOnly&quot;: True or False, # The key may be used to encipher only.
                  &quot;certSign&quot;: True or False, # The key may be used to sign certificates.
                  &quot;keyAgreement&quot;: True or False, # The key may be used in a key agreement protocol.
                  &quot;dataEncipherment&quot;: True or False, # The key may be used to encipher data.
                },
                &quot;extendedKeyUsage&quot;: { # KeyUsage.ExtendedKeyUsageOptions has fields that correspond to certain common OIDs that could be specified as an extended key usage value. # Detailed scenarios in which a key may be used.
                  &quot;emailProtection&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.4. Officially described as &quot;Email protection&quot;.
                  &quot;clientAuth&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.2. Officially described as &quot;TLS WWW client authentication&quot;, though regularly used for non-WWW TLS.
                  &quot;ocspSigning&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.9. Officially described as &quot;Signing OCSP responses&quot;.
                  &quot;serverAuth&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.1. Officially described as &quot;TLS WWW server authentication&quot;, though regularly used for non-WWW TLS.
                  &quot;timeStamping&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.8. Officially described as &quot;Binding the hash of an object to a time&quot;.
                  &quot;codeSigning&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.3. Officially described as &quot;Signing of downloadable executable code client authentication&quot;.
                },
              },
              &quot;policyIds&quot;: [ # Optional. Describes the X.509 certificate policy object identifiers, per https://tools.ietf.org/html/rfc5280#section-4.2.1.4.
                { # An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages.
                  &quot;objectIdPath&quot;: [ # Required. The parts of an OID path. The most significant parts of the path come first.
                    42,
                  ],
                },
              ],
            },
            &quot;reusableConfig&quot;: &quot;A String&quot;, # Required. A resource path to a ReusableConfig in the format `projects/*/locations/*/reusableConfigs/*`.
          },
          &quot;allowedConfigList&quot;: { # Optional. All Certificates issued by the CertificateAuthority must match at least one listed ReusableConfigWrapper in the list.
            &quot;allowedConfigValues&quot;: [ # Required. All Certificates issued by the CertificateAuthority must match at least one listed ReusableConfigWrapper. If a ReusableConfigWrapper has an empty field, any value will be allowed for that field.
              { # A ReusableConfigWrapper describes values that may assist in creating an X.509 certificate, or a reference to a pre-defined set of values.
                &quot;reusableConfigValues&quot;: { # A ReusableConfigValues is used to describe certain fields of an X.509 certificate, such as the key usage fields, fields specific to CA certificates, certificate policy extensions and custom extensions. # Required. A user-specified inline ReusableConfigValues.
                  &quot;additionalExtensions&quot;: [ # Optional. Describes custom X.509 extensions.
                    { # An X509Extension specifies an X.509 extension, which may be used in different parts of X.509 objects like certificates, CSRs, and CRLs.
                      &quot;objectId&quot;: { # An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages. # Required. The OID for this X.509 extension.
                        &quot;objectIdPath&quot;: [ # Required. The parts of an OID path. The most significant parts of the path come first.
                          42,
                        ],
                      },
                      &quot;critical&quot;: True or False, # Required. Indicates whether or not this extension is critical (i.e., if the client does not know how to handle this extension, the client should consider this to be an error).
                      &quot;value&quot;: &quot;A String&quot;, # Required. The value of this X.509 extension.
                    },
                  ],
                  &quot;caOptions&quot;: { # Describes values that are relevant in a CA certificate. # Optional. Describes options in this ReusableConfigValues that are relevant in a CA certificate.
                    &quot;maxIssuerPathLength&quot;: 42, # Optional. Refers to the path length restriction X.509 extension. For a CA certificate, this value describes the depth of subordinate CA certificates that are allowed. If this value is less than 0, the request will fail. If this value is missing, the max path length will be omitted from the CA certificate.
                    &quot;isCa&quot;: True or False, # Optional. Refers to the &quot;CA&quot; X.509 extension, which is a boolean value. When this value is missing, the extension will be omitted from the CA certificate.
                  },
                  &quot;aiaOcspServers&quot;: [ # Optional. Describes Online Certificate Status Protocol (OCSP) endpoint addresses that appear in the &quot;Authority Information Access&quot; extension in the certificate.
                    &quot;A String&quot;,
                  ],
                  &quot;keyUsage&quot;: { # A KeyUsage describes key usage values that may appear in an X.509 certificate. # Optional. Indicates the intended use for keys that correspond to a certificate.
                    &quot;unknownExtendedKeyUsages&quot;: [ # Used to describe extended key usages that are not listed in the KeyUsage.ExtendedKeyUsageOptions message.
                      { # An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages.
                        &quot;objectIdPath&quot;: [ # Required. The parts of an OID path. The most significant parts of the path come first.
                          42,
                        ],
                      },
                    ],
                    &quot;baseKeyUsage&quot;: { # KeyUsage.KeyUsageOptions corresponds to the key usage values described in https://tools.ietf.org/html/rfc5280#section-4.2.1.3. # Describes high-level ways in which a key may be used.
                      &quot;decipherOnly&quot;: True or False, # The key may be used to decipher only.
                      &quot;keyEncipherment&quot;: True or False, # The key may be used to encipher other keys.
                      &quot;crlSign&quot;: True or False, # The key may be used sign certificate revocation lists.
                      &quot;digitalSignature&quot;: True or False, # The key may be used for digital signatures.
                      &quot;contentCommitment&quot;: True or False, # The key may be used for cryptographic commitments. Note that this may also be referred to as &quot;non-repudiation&quot;.
                      &quot;encipherOnly&quot;: True or False, # The key may be used to encipher only.
                      &quot;certSign&quot;: True or False, # The key may be used to sign certificates.
                      &quot;keyAgreement&quot;: True or False, # The key may be used in a key agreement protocol.
                      &quot;dataEncipherment&quot;: True or False, # The key may be used to encipher data.
                    },
                    &quot;extendedKeyUsage&quot;: { # KeyUsage.ExtendedKeyUsageOptions has fields that correspond to certain common OIDs that could be specified as an extended key usage value. # Detailed scenarios in which a key may be used.
                      &quot;emailProtection&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.4. Officially described as &quot;Email protection&quot;.
                      &quot;clientAuth&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.2. Officially described as &quot;TLS WWW client authentication&quot;, though regularly used for non-WWW TLS.
                      &quot;ocspSigning&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.9. Officially described as &quot;Signing OCSP responses&quot;.
                      &quot;serverAuth&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.1. Officially described as &quot;TLS WWW server authentication&quot;, though regularly used for non-WWW TLS.
                      &quot;timeStamping&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.8. Officially described as &quot;Binding the hash of an object to a time&quot;.
                      &quot;codeSigning&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.3. Officially described as &quot;Signing of downloadable executable code client authentication&quot;.
                    },
                  },
                  &quot;policyIds&quot;: [ # Optional. Describes the X.509 certificate policy object identifiers, per https://tools.ietf.org/html/rfc5280#section-4.2.1.4.
                    { # An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages.
                      &quot;objectIdPath&quot;: [ # Required. The parts of an OID path. The most significant parts of the path come first.
                        42,
                      ],
                    },
                  ],
                },
                &quot;reusableConfig&quot;: &quot;A String&quot;, # Required. A resource path to a ReusableConfig in the format `projects/*/locations/*/reusableConfigs/*`.
              },
            ],
          },
          &quot;allowedSans&quot;: { # AllowedSubjectAltNames specifies the allowed values for SubjectAltNames by the CertificateAuthority when issuing Certificates. # Optional. If a AllowedSubjectAltNames is specified here, then all Certificates issued by the CertificateAuthority must match AllowedSubjectAltNames. If no value or an empty value is specified, any value will be allowed for the SubjectAltNames field.
            &quot;allowedUris&quot;: [ # Optional. Contains valid RFC 3986 URIs. Glob patterns are also supported. To match across path seperators (i.e. &#x27;/&#x27;) use the double star glob pattern (i.e. &#x27;**&#x27;).
              &quot;A String&quot;,
            ],
            &quot;allowCustomSans&quot;: True or False, # Optional. Specifies if to allow custom X509Extension values.
            &quot;allowedEmailAddresses&quot;: [ # Optional. Contains valid RFC 2822 E-mail addresses. Glob patterns are also supported.
              &quot;A String&quot;,
            ],
            &quot;allowedIps&quot;: [ # Optional. Contains valid 32-bit IPv4 addresses and subnet ranges or RFC 4291 IPv6 addresses and subnet ranges. Subnet ranges are specified using the &#x27;/&#x27; notation (e.g. 10.0.0.0/8, 2001:700:300:1800::/64). Glob patterns are supported only for ip address entries (i.e. not for subnet ranges).
              &quot;A String&quot;,
            ],
            &quot;allowedDnsNames&quot;: [ # Optional. Contains valid, fully-qualified host names. Glob patterns are also supported. To allow an explicit wildcard certificate, escape with backlash (i.e. &quot;\*&quot;). E.g. for globbed entries: &#x27;*bar.com&#x27; will allow &#x27;foo.bar.com&#x27;, but not &#x27;*.bar.com&#x27;, unless the allow_globbing_dns_wildcards field is set. E.g. for wildcard entries: &#x27;\*.bar.com&#x27; will allow &#x27;*.bar.com&#x27;, but not &#x27;foo.bar.com&#x27;.
              &quot;A String&quot;,
            ],
            &quot;allowGlobbingDnsWildcards&quot;: True or False, # Optional. Specifies if glob patterns used for allowed_dns_names allow wildcard certificates. If this is set, certificate requests with wildcard domains will be permitted to match a glob pattern specified in allowed_dns_names. Otherwise, certificate requests with wildcard domains will be permitted only if allowed_dns_names contains a literal wildcard.
          },
          &quot;allowedCommonNames&quot;: [ # Optional. If any value is specified here, then all Certificates issued by the CertificateAuthority must match at least one listed value. If no value is specified, all values will be allowed for this fied. Glob patterns are also supported.
            &quot;A String&quot;,
          ],
          &quot;allowedLocationsAndOrganizations&quot;: [ # Optional. If any Subject is specified here, then all Certificates issued by the CertificateAuthority must match at least one listed Subject. If a Subject has an empty field, any value will be allowed for that field.
            { # Subject describes parts of a distinguished name that, in turn, describes the subject of the certificate.
              &quot;countryCode&quot;: &quot;A String&quot;, # The country code of the subject.
              &quot;locality&quot;: &quot;A String&quot;, # The locality or city of the subject.
              &quot;province&quot;: &quot;A String&quot;, # The province, territory, or regional state of the subject.
              &quot;organizationalUnit&quot;: &quot;A String&quot;, # The organizational_unit of the subject.
              &quot;streetAddress&quot;: &quot;A String&quot;, # The street address of the subject.
              &quot;organization&quot;: &quot;A String&quot;, # The organization of the subject.
              &quot;postalCode&quot;: &quot;A String&quot;, # The postal code of the subject.
            },
          ],
          &quot;allowedIssuanceModes&quot;: { # IssuanceModes specifies the allowed ways in which Certificates may be requested from this CertificateAuthority. # Optional. If specified, then only methods allowed in the IssuanceModes may be used to issue Certificates.
            &quot;allowCsrBasedIssuance&quot;: True or False, # Required. When true, allows callers to create Certificates by specifying a CSR.
            &quot;allowConfigBasedIssuance&quot;: True or False, # Required. When true, allows callers to create Certificates by specifying a CertificateConfig.
          },
        },
        &quot;config&quot;: { # A CertificateConfig describes an X.509 certificate or CSR that is to be created, as an alternative to using ASN.1. # Required. Immutable. The config used to create a self-signed X.509 certificate or CSR.
          &quot;publicKey&quot;: { # A PublicKey describes a public key. # Optional. The public key that corresponds to this config. This is, for example, used when issuing Certificates, but not when creating a self-signed CertificateAuthority or CertificateAuthority CSR.
            &quot;key&quot;: &quot;A String&quot;, # Required. A public key. When this is specified in a request, the padding and encoding can be any of the options described by the respective &#x27;KeyType&#x27; value. When this is generated by the service, it will always be an RFC 5280 [SubjectPublicKeyInfo](https://tools.ietf.org/html/rfc5280#section-4.1) structure containing an algorithm identifier and a key.
            &quot;type&quot;: &quot;A String&quot;, # Required. The type of public key.
          },
          &quot;subjectConfig&quot;: { # These values are used to create the distinguished name and subject alternative name fields in an X.509 certificate. # Required. Specifies some of the values in a certificate that are related to the subject.
            &quot;commonName&quot;: &quot;A String&quot;, # Optional. The &quot;common name&quot; of the distinguished name.
            &quot;subjectAltName&quot;: { # SubjectAltNames corresponds to a more modern way of listing what the asserted identity is in a certificate (i.e., compared to the &quot;common name&quot; in the distinguished name). # Optional. The subject alternative name fields.
              &quot;customSans&quot;: [ # Contains additional subject alternative name values.
                { # An X509Extension specifies an X.509 extension, which may be used in different parts of X.509 objects like certificates, CSRs, and CRLs.
                  &quot;objectId&quot;: { # An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages. # Required. The OID for this X.509 extension.
                    &quot;objectIdPath&quot;: [ # Required. The parts of an OID path. The most significant parts of the path come first.
                      42,
                    ],
                  },
                  &quot;critical&quot;: True or False, # Required. Indicates whether or not this extension is critical (i.e., if the client does not know how to handle this extension, the client should consider this to be an error).
                  &quot;value&quot;: &quot;A String&quot;, # Required. The value of this X.509 extension.
                },
              ],
              &quot;emailAddresses&quot;: [ # Contains only valid RFC 2822 E-mail addresses.
                &quot;A String&quot;,
              ],
              &quot;dnsNames&quot;: [ # Contains only valid, fully-qualified host names.
                &quot;A String&quot;,
              ],
              &quot;uris&quot;: [ # Contains only valid RFC 3986 URIs.
                &quot;A String&quot;,
              ],
              &quot;ipAddresses&quot;: [ # Contains only valid 32-bit IPv4 addresses or RFC 4291 IPv6 addresses.
                &quot;A String&quot;,
              ],
            },
            &quot;subject&quot;: { # Subject describes parts of a distinguished name that, in turn, describes the subject of the certificate. # Required. Contains distinguished name fields such as the location and organization.
              &quot;countryCode&quot;: &quot;A String&quot;, # The country code of the subject.
              &quot;locality&quot;: &quot;A String&quot;, # The locality or city of the subject.
              &quot;province&quot;: &quot;A String&quot;, # The province, territory, or regional state of the subject.
              &quot;organizationalUnit&quot;: &quot;A String&quot;, # The organizational_unit of the subject.
              &quot;streetAddress&quot;: &quot;A String&quot;, # The street address of the subject.
              &quot;organization&quot;: &quot;A String&quot;, # The organization of the subject.
              &quot;postalCode&quot;: &quot;A String&quot;, # The postal code of the subject.
            },
          },
          &quot;reusableConfig&quot;: { # A ReusableConfigWrapper describes values that may assist in creating an X.509 certificate, or a reference to a pre-defined set of values. # Required. Describes how some of the technical fields in a certificate should be populated.
            &quot;reusableConfigValues&quot;: { # A ReusableConfigValues is used to describe certain fields of an X.509 certificate, such as the key usage fields, fields specific to CA certificates, certificate policy extensions and custom extensions. # Required. A user-specified inline ReusableConfigValues.
              &quot;additionalExtensions&quot;: [ # Optional. Describes custom X.509 extensions.
                { # An X509Extension specifies an X.509 extension, which may be used in different parts of X.509 objects like certificates, CSRs, and CRLs.
                  &quot;objectId&quot;: { # An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages. # Required. The OID for this X.509 extension.
                    &quot;objectIdPath&quot;: [ # Required. The parts of an OID path. The most significant parts of the path come first.
                      42,
                    ],
                  },
                  &quot;critical&quot;: True or False, # Required. Indicates whether or not this extension is critical (i.e., if the client does not know how to handle this extension, the client should consider this to be an error).
                  &quot;value&quot;: &quot;A String&quot;, # Required. The value of this X.509 extension.
                },
              ],
              &quot;caOptions&quot;: { # Describes values that are relevant in a CA certificate. # Optional. Describes options in this ReusableConfigValues that are relevant in a CA certificate.
                &quot;maxIssuerPathLength&quot;: 42, # Optional. Refers to the path length restriction X.509 extension. For a CA certificate, this value describes the depth of subordinate CA certificates that are allowed. If this value is less than 0, the request will fail. If this value is missing, the max path length will be omitted from the CA certificate.
                &quot;isCa&quot;: True or False, # Optional. Refers to the &quot;CA&quot; X.509 extension, which is a boolean value. When this value is missing, the extension will be omitted from the CA certificate.
              },
              &quot;aiaOcspServers&quot;: [ # Optional. Describes Online Certificate Status Protocol (OCSP) endpoint addresses that appear in the &quot;Authority Information Access&quot; extension in the certificate.
                &quot;A String&quot;,
              ],
              &quot;keyUsage&quot;: { # A KeyUsage describes key usage values that may appear in an X.509 certificate. # Optional. Indicates the intended use for keys that correspond to a certificate.
                &quot;unknownExtendedKeyUsages&quot;: [ # Used to describe extended key usages that are not listed in the KeyUsage.ExtendedKeyUsageOptions message.
                  { # An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages.
                    &quot;objectIdPath&quot;: [ # Required. The parts of an OID path. The most significant parts of the path come first.
                      42,
                    ],
                  },
                ],
                &quot;baseKeyUsage&quot;: { # KeyUsage.KeyUsageOptions corresponds to the key usage values described in https://tools.ietf.org/html/rfc5280#section-4.2.1.3. # Describes high-level ways in which a key may be used.
                  &quot;decipherOnly&quot;: True or False, # The key may be used to decipher only.
                  &quot;keyEncipherment&quot;: True or False, # The key may be used to encipher other keys.
                  &quot;crlSign&quot;: True or False, # The key may be used sign certificate revocation lists.
                  &quot;digitalSignature&quot;: True or False, # The key may be used for digital signatures.
                  &quot;contentCommitment&quot;: True or False, # The key may be used for cryptographic commitments. Note that this may also be referred to as &quot;non-repudiation&quot;.
                  &quot;encipherOnly&quot;: True or False, # The key may be used to encipher only.
                  &quot;certSign&quot;: True or False, # The key may be used to sign certificates.
                  &quot;keyAgreement&quot;: True or False, # The key may be used in a key agreement protocol.
                  &quot;dataEncipherment&quot;: True or False, # The key may be used to encipher data.
                },
                &quot;extendedKeyUsage&quot;: { # KeyUsage.ExtendedKeyUsageOptions has fields that correspond to certain common OIDs that could be specified as an extended key usage value. # Detailed scenarios in which a key may be used.
                  &quot;emailProtection&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.4. Officially described as &quot;Email protection&quot;.
                  &quot;clientAuth&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.2. Officially described as &quot;TLS WWW client authentication&quot;, though regularly used for non-WWW TLS.
                  &quot;ocspSigning&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.9. Officially described as &quot;Signing OCSP responses&quot;.
                  &quot;serverAuth&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.1. Officially described as &quot;TLS WWW server authentication&quot;, though regularly used for non-WWW TLS.
                  &quot;timeStamping&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.8. Officially described as &quot;Binding the hash of an object to a time&quot;.
                  &quot;codeSigning&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.3. Officially described as &quot;Signing of downloadable executable code client authentication&quot;.
                },
              },
              &quot;policyIds&quot;: [ # Optional. Describes the X.509 certificate policy object identifiers, per https://tools.ietf.org/html/rfc5280#section-4.2.1.4.
                { # An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages.
                  &quot;objectIdPath&quot;: [ # Required. The parts of an OID path. The most significant parts of the path come first.
                    42,
                  ],
                },
              ],
            },
            &quot;reusableConfig&quot;: &quot;A String&quot;, # Required. A resource path to a ReusableConfig in the format `projects/*/locations/*/reusableConfigs/*`.
          },
        },
        &quot;tier&quot;: &quot;A String&quot;, # Required. Immutable. The Tier of this CertificateAuthority.
        &quot;lifetime&quot;: &quot;A String&quot;, # Required. The desired lifetime of the CA certificate. Used to create the &quot;not_before_time&quot; and &quot;not_after_time&quot; fields inside an X.509 certificate.
        &quot;deleteTime&quot;: &quot;A String&quot;, # Output only. The time at which this CertificateAuthority will be deleted, if scheduled for deletion.
        &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name for this CertificateAuthority in the format `projects/*/locations/*/certificateAuthorities/*`.
        &quot;accessUrls&quot;: { # URLs where a CertificateAuthority will publish content. # Output only. URLs for accessing content published by this CA, such as the CA certificate and CRLs.
          &quot;crlAccessUrl&quot;: &quot;A String&quot;, # The URL where this CertificateAuthority&#x27;s CRLs are published. This will only be set for CAs that have been activated.
          &quot;caCertificateAccessUrl&quot;: &quot;A String&quot;, # The URL where this CertificateAuthority&#x27;s CA certificate is published. This will only be set for CAs that have been activated.
        },
        &quot;issuingOptions&quot;: { # Options that affect all certificates issued by a CertificateAuthority. # Optional. The IssuingOptions to follow when issuing Certificates from this CertificateAuthority.
          &quot;includeCrlAccessUrl&quot;: True or False, # Required. When true, includes a URL to the CRL corresponding to certificates issued from a CertificateAuthority. CRLs will expire 7 days from their creation. However, we will rebuild daily. CRLs are also rebuilt shortly after a certificate is revoked.
          &quot;includeCaCertUrl&quot;: True or False, # Required. When true, includes a URL to the issuing CA certificate in the &quot;authority information access&quot; X.509 extension.
        },
        &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time at which this CertificateAuthority 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 &#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="patch">patch(name, body=None, updateMask=None, requestId=None, x__xgafv=None)</code>
  <pre>Update a CertificateAuthority.

Args:
  name: string, Output only. The resource name for this CertificateAuthority in the format `projects/*/locations/*/certificateAuthorities/*`. (required)
  body: object, The request body.
    The object takes the form of:

{ # A CertificateAuthority represents an individual Certificate Authority. A CertificateAuthority can be used to create Certificates.
  &quot;type&quot;: &quot;A String&quot;, # Required. Immutable. The Type of this CertificateAuthority.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time at which this CertificateAuthority was updated.
  &quot;state&quot;: &quot;A String&quot;, # Output only. The State for this CertificateAuthority.
  &quot;pemCaCertificates&quot;: [ # Output only. This CertificateAuthority&#x27;s certificate chain, including the current CertificateAuthority&#x27;s certificate. Ordered such that the root issuer is the final element (consistent with RFC 5246). For a self-signed CA, this will only list the current CertificateAuthority&#x27;s certificate.
    &quot;A String&quot;,
  ],
  &quot;subordinateConfig&quot;: { # Describes a subordinate CA&#x27;s issuers. This is either a resource path to a known issuing CertificateAuthority, or a PEM issuer certificate chain. # Optional. If this is a subordinate CertificateAuthority, this field will be set with the subordinate configuration, which describes its issuers. This may be updated, but this CertificateAuthority must continue to validate.
    &quot;certificateAuthority&quot;: &quot;A String&quot;, # Required. This can refer to a CertificateAuthority in the same project that was used to create a subordinate CertificateAuthority. This field is used for information and usability purposes only. The resource name is in the format `projects/*/locations/*/certificateAuthorities/*`.
    &quot;pemIssuerChain&quot;: { # This message describes a subordinate CA&#x27;s issuer certificate chain. This wrapper exists for compatibility reasons. # Required. Contains the PEM certificate chain for the issuers of this CertificateAuthority, but not pem certificate for this CA itself.
      &quot;pemCertificates&quot;: [ # Required. Expected to be in leaf-to-root order according to RFC 5246.
        &quot;A String&quot;,
      ],
    },
  },
  &quot;keySpec&quot;: { # A Cloud KMS key configuration that a CertificateAuthority will use. # Required. Immutable. Used when issuing certificates for this CertificateAuthority. If this CertificateAuthority is a self-signed CertificateAuthority, this key is also used to sign the self-signed CA certificate. Otherwise, it is used to sign a CSR.
    &quot;cloudKmsKeyVersion&quot;: &quot;A String&quot;, # Required. The resource name for an existing Cloud KMS CryptoKeyVersion in the format `projects/*/locations/*/keyRings/*/cryptoKeys/*/cryptoKeyVersions/*`. This option enables full flexibility in the key&#x27;s capabilities and properties.
    &quot;algorithm&quot;: &quot;A String&quot;, # Required. The algorithm to use for creating a managed Cloud KMS key for a for a simplified experience. All managed keys will be have their ProtectionLevel as `HSM`.
  },
  &quot;labels&quot;: { # Optional. Labels with user-defined metadata.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;caCertificateDescriptions&quot;: [ # Output only. A structured description of this CertificateAuthority&#x27;s CA certificate and its issuers. Ordered as self-to-root.
    { # A CertificateDescription describes an X.509 certificate or CSR that has been issued, as an alternative to using ASN.1 / X.509.
      &quot;aiaIssuingCertificateUrls&quot;: [ # Describes lists of issuer CA certificate URLs that appear in the &quot;Authority Information Access&quot; extension in the certificate.
        &quot;A String&quot;,
      ],
      &quot;configValues&quot;: { # A ReusableConfigValues is used to describe certain fields of an X.509 certificate, such as the key usage fields, fields specific to CA certificates, certificate policy extensions and custom extensions. # Describes some of the technical fields in a certificate.
        &quot;additionalExtensions&quot;: [ # Optional. Describes custom X.509 extensions.
          { # An X509Extension specifies an X.509 extension, which may be used in different parts of X.509 objects like certificates, CSRs, and CRLs.
            &quot;objectId&quot;: { # An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages. # Required. The OID for this X.509 extension.
              &quot;objectIdPath&quot;: [ # Required. The parts of an OID path. The most significant parts of the path come first.
                42,
              ],
            },
            &quot;critical&quot;: True or False, # Required. Indicates whether or not this extension is critical (i.e., if the client does not know how to handle this extension, the client should consider this to be an error).
            &quot;value&quot;: &quot;A String&quot;, # Required. The value of this X.509 extension.
          },
        ],
        &quot;caOptions&quot;: { # Describes values that are relevant in a CA certificate. # Optional. Describes options in this ReusableConfigValues that are relevant in a CA certificate.
          &quot;maxIssuerPathLength&quot;: 42, # Optional. Refers to the path length restriction X.509 extension. For a CA certificate, this value describes the depth of subordinate CA certificates that are allowed. If this value is less than 0, the request will fail. If this value is missing, the max path length will be omitted from the CA certificate.
          &quot;isCa&quot;: True or False, # Optional. Refers to the &quot;CA&quot; X.509 extension, which is a boolean value. When this value is missing, the extension will be omitted from the CA certificate.
        },
        &quot;aiaOcspServers&quot;: [ # Optional. Describes Online Certificate Status Protocol (OCSP) endpoint addresses that appear in the &quot;Authority Information Access&quot; extension in the certificate.
          &quot;A String&quot;,
        ],
        &quot;keyUsage&quot;: { # A KeyUsage describes key usage values that may appear in an X.509 certificate. # Optional. Indicates the intended use for keys that correspond to a certificate.
          &quot;unknownExtendedKeyUsages&quot;: [ # Used to describe extended key usages that are not listed in the KeyUsage.ExtendedKeyUsageOptions message.
            { # An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages.
              &quot;objectIdPath&quot;: [ # Required. The parts of an OID path. The most significant parts of the path come first.
                42,
              ],
            },
          ],
          &quot;baseKeyUsage&quot;: { # KeyUsage.KeyUsageOptions corresponds to the key usage values described in https://tools.ietf.org/html/rfc5280#section-4.2.1.3. # Describes high-level ways in which a key may be used.
            &quot;decipherOnly&quot;: True or False, # The key may be used to decipher only.
            &quot;keyEncipherment&quot;: True or False, # The key may be used to encipher other keys.
            &quot;crlSign&quot;: True or False, # The key may be used sign certificate revocation lists.
            &quot;digitalSignature&quot;: True or False, # The key may be used for digital signatures.
            &quot;contentCommitment&quot;: True or False, # The key may be used for cryptographic commitments. Note that this may also be referred to as &quot;non-repudiation&quot;.
            &quot;encipherOnly&quot;: True or False, # The key may be used to encipher only.
            &quot;certSign&quot;: True or False, # The key may be used to sign certificates.
            &quot;keyAgreement&quot;: True or False, # The key may be used in a key agreement protocol.
            &quot;dataEncipherment&quot;: True or False, # The key may be used to encipher data.
          },
          &quot;extendedKeyUsage&quot;: { # KeyUsage.ExtendedKeyUsageOptions has fields that correspond to certain common OIDs that could be specified as an extended key usage value. # Detailed scenarios in which a key may be used.
            &quot;emailProtection&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.4. Officially described as &quot;Email protection&quot;.
            &quot;clientAuth&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.2. Officially described as &quot;TLS WWW client authentication&quot;, though regularly used for non-WWW TLS.
            &quot;ocspSigning&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.9. Officially described as &quot;Signing OCSP responses&quot;.
            &quot;serverAuth&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.1. Officially described as &quot;TLS WWW server authentication&quot;, though regularly used for non-WWW TLS.
            &quot;timeStamping&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.8. Officially described as &quot;Binding the hash of an object to a time&quot;.
            &quot;codeSigning&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.3. Officially described as &quot;Signing of downloadable executable code client authentication&quot;.
          },
        },
        &quot;policyIds&quot;: [ # Optional. Describes the X.509 certificate policy object identifiers, per https://tools.ietf.org/html/rfc5280#section-4.2.1.4.
          { # An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages.
            &quot;objectIdPath&quot;: [ # Required. The parts of an OID path. The most significant parts of the path come first.
              42,
            ],
          },
        ],
      },
      &quot;certFingerprint&quot;: { # A group of fingerprints for the x509 certificate. # The hash of the x.509 certificate.
        &quot;sha256Hash&quot;: &quot;A String&quot;, # The SHA 256 hash, encoded in hexadecimal, of the DER x509 certificate.
      },
      &quot;publicKey&quot;: { # A PublicKey describes a public key. # The public key that corresponds to an issued certificate.
        &quot;key&quot;: &quot;A String&quot;, # Required. A public key. When this is specified in a request, the padding and encoding can be any of the options described by the respective &#x27;KeyType&#x27; value. When this is generated by the service, it will always be an RFC 5280 [SubjectPublicKeyInfo](https://tools.ietf.org/html/rfc5280#section-4.1) structure containing an algorithm identifier and a key.
        &quot;type&quot;: &quot;A String&quot;, # Required. The type of public key.
      },
      &quot;subjectDescription&quot;: { # These values describe fields in an issued X.509 certificate such as the distinguished name, subject alternative names, serial number, and lifetime. # Describes some of the values in a certificate that are related to the subject and lifetime.
        &quot;notBeforeTime&quot;: &quot;A String&quot;, # The time at which the certificate becomes valid.
        &quot;lifetime&quot;: &quot;A String&quot;, # For convenience, the actual lifetime of an issued certificate. Corresponds to &#x27;not_after_time&#x27; - &#x27;not_before_time&#x27;.
        &quot;notAfterTime&quot;: &quot;A String&quot;, # The time at which the certificate expires.
        &quot;subject&quot;: { # Subject describes parts of a distinguished name that, in turn, describes the subject of the certificate. # Contains distinguished name fields such as the location and organization.
          &quot;countryCode&quot;: &quot;A String&quot;, # The country code of the subject.
          &quot;locality&quot;: &quot;A String&quot;, # The locality or city of the subject.
          &quot;province&quot;: &quot;A String&quot;, # The province, territory, or regional state of the subject.
          &quot;organizationalUnit&quot;: &quot;A String&quot;, # The organizational_unit of the subject.
          &quot;streetAddress&quot;: &quot;A String&quot;, # The street address of the subject.
          &quot;organization&quot;: &quot;A String&quot;, # The organization of the subject.
          &quot;postalCode&quot;: &quot;A String&quot;, # The postal code of the subject.
        },
        &quot;commonName&quot;: &quot;A String&quot;, # The &quot;common name&quot; of the distinguished name.
        &quot;subjectAltName&quot;: { # SubjectAltNames corresponds to a more modern way of listing what the asserted identity is in a certificate (i.e., compared to the &quot;common name&quot; in the distinguished name). # The subject alternative name fields.
          &quot;customSans&quot;: [ # Contains additional subject alternative name values.
            { # An X509Extension specifies an X.509 extension, which may be used in different parts of X.509 objects like certificates, CSRs, and CRLs.
              &quot;objectId&quot;: { # An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages. # Required. The OID for this X.509 extension.
                &quot;objectIdPath&quot;: [ # Required. The parts of an OID path. The most significant parts of the path come first.
                  42,
                ],
              },
              &quot;critical&quot;: True or False, # Required. Indicates whether or not this extension is critical (i.e., if the client does not know how to handle this extension, the client should consider this to be an error).
              &quot;value&quot;: &quot;A String&quot;, # Required. The value of this X.509 extension.
            },
          ],
          &quot;emailAddresses&quot;: [ # Contains only valid RFC 2822 E-mail addresses.
            &quot;A String&quot;,
          ],
          &quot;dnsNames&quot;: [ # Contains only valid, fully-qualified host names.
            &quot;A String&quot;,
          ],
          &quot;uris&quot;: [ # Contains only valid RFC 3986 URIs.
            &quot;A String&quot;,
          ],
          &quot;ipAddresses&quot;: [ # Contains only valid 32-bit IPv4 addresses or RFC 4291 IPv6 addresses.
            &quot;A String&quot;,
          ],
        },
        &quot;hexSerialNumber&quot;: &quot;A String&quot;, # The serial number encoded in lowercase hexadecimal.
      },
      &quot;subjectKeyId&quot;: { # A KeyId identifies a specific public key, usually by hashing the public key. # Provides a means of identifiying certificates that contain a particular public key, per https://tools.ietf.org/html/rfc5280#section-4.2.1.2.
        &quot;keyId&quot;: &quot;A String&quot;, # Optional. The value of this KeyId encoded in lowercase hexadecimal. This is most likely the 160 bit SHA-1 hash of the public key.
      },
      &quot;authorityKeyId&quot;: { # A KeyId identifies a specific public key, usually by hashing the public key. # Identifies the subject_key_id of the parent certificate, per https://tools.ietf.org/html/rfc5280#section-4.2.1.1
        &quot;keyId&quot;: &quot;A String&quot;, # Optional. The value of this KeyId encoded in lowercase hexadecimal. This is most likely the 160 bit SHA-1 hash of the public key.
      },
      &quot;crlDistributionPoints&quot;: [ # Describes a list of locations to obtain CRL information, i.e. the DistributionPoint.fullName described by https://tools.ietf.org/html/rfc5280#section-4.2.1.13
        &quot;A String&quot;,
      ],
    },
  ],
  &quot;gcsBucket&quot;: &quot;A String&quot;, # Immutable. The name of a Cloud Storage bucket where this CertificateAuthority will publish content, such as the CA certificate and CRLs. This must be a bucket name, without any prefixes (such as `gs://`) or suffixes (such as `.googleapis.com`). For example, to use a bucket named `my-bucket`, you would simply specify `my-bucket`. If not specified, a managed bucket will be created.
  &quot;certificatePolicy&quot;: { # The issuing policy for a CertificateAuthority. Certificates will not be successfully issued from this CertificateAuthority if they violate the policy. # Optional. The CertificateAuthorityPolicy to enforce when issuing Certificates from this CertificateAuthority.
    &quot;maximumLifetime&quot;: &quot;A String&quot;, # Optional. The maximum lifetime allowed by the CertificateAuthority. Note that if the any part if the issuing chain expires before a Certificate&#x27;s requested maximum_lifetime, the effective lifetime will be explicitly truncated.
    &quot;overwriteConfigValues&quot;: { # A ReusableConfigWrapper describes values that may assist in creating an X.509 certificate, or a reference to a pre-defined set of values. # Optional. All Certificates issued by the CertificateAuthority will use the provided configuration values, overwriting any requested configuration values.
      &quot;reusableConfigValues&quot;: { # A ReusableConfigValues is used to describe certain fields of an X.509 certificate, such as the key usage fields, fields specific to CA certificates, certificate policy extensions and custom extensions. # Required. A user-specified inline ReusableConfigValues.
        &quot;additionalExtensions&quot;: [ # Optional. Describes custom X.509 extensions.
          { # An X509Extension specifies an X.509 extension, which may be used in different parts of X.509 objects like certificates, CSRs, and CRLs.
            &quot;objectId&quot;: { # An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages. # Required. The OID for this X.509 extension.
              &quot;objectIdPath&quot;: [ # Required. The parts of an OID path. The most significant parts of the path come first.
                42,
              ],
            },
            &quot;critical&quot;: True or False, # Required. Indicates whether or not this extension is critical (i.e., if the client does not know how to handle this extension, the client should consider this to be an error).
            &quot;value&quot;: &quot;A String&quot;, # Required. The value of this X.509 extension.
          },
        ],
        &quot;caOptions&quot;: { # Describes values that are relevant in a CA certificate. # Optional. Describes options in this ReusableConfigValues that are relevant in a CA certificate.
          &quot;maxIssuerPathLength&quot;: 42, # Optional. Refers to the path length restriction X.509 extension. For a CA certificate, this value describes the depth of subordinate CA certificates that are allowed. If this value is less than 0, the request will fail. If this value is missing, the max path length will be omitted from the CA certificate.
          &quot;isCa&quot;: True or False, # Optional. Refers to the &quot;CA&quot; X.509 extension, which is a boolean value. When this value is missing, the extension will be omitted from the CA certificate.
        },
        &quot;aiaOcspServers&quot;: [ # Optional. Describes Online Certificate Status Protocol (OCSP) endpoint addresses that appear in the &quot;Authority Information Access&quot; extension in the certificate.
          &quot;A String&quot;,
        ],
        &quot;keyUsage&quot;: { # A KeyUsage describes key usage values that may appear in an X.509 certificate. # Optional. Indicates the intended use for keys that correspond to a certificate.
          &quot;unknownExtendedKeyUsages&quot;: [ # Used to describe extended key usages that are not listed in the KeyUsage.ExtendedKeyUsageOptions message.
            { # An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages.
              &quot;objectIdPath&quot;: [ # Required. The parts of an OID path. The most significant parts of the path come first.
                42,
              ],
            },
          ],
          &quot;baseKeyUsage&quot;: { # KeyUsage.KeyUsageOptions corresponds to the key usage values described in https://tools.ietf.org/html/rfc5280#section-4.2.1.3. # Describes high-level ways in which a key may be used.
            &quot;decipherOnly&quot;: True or False, # The key may be used to decipher only.
            &quot;keyEncipherment&quot;: True or False, # The key may be used to encipher other keys.
            &quot;crlSign&quot;: True or False, # The key may be used sign certificate revocation lists.
            &quot;digitalSignature&quot;: True or False, # The key may be used for digital signatures.
            &quot;contentCommitment&quot;: True or False, # The key may be used for cryptographic commitments. Note that this may also be referred to as &quot;non-repudiation&quot;.
            &quot;encipherOnly&quot;: True or False, # The key may be used to encipher only.
            &quot;certSign&quot;: True or False, # The key may be used to sign certificates.
            &quot;keyAgreement&quot;: True or False, # The key may be used in a key agreement protocol.
            &quot;dataEncipherment&quot;: True or False, # The key may be used to encipher data.
          },
          &quot;extendedKeyUsage&quot;: { # KeyUsage.ExtendedKeyUsageOptions has fields that correspond to certain common OIDs that could be specified as an extended key usage value. # Detailed scenarios in which a key may be used.
            &quot;emailProtection&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.4. Officially described as &quot;Email protection&quot;.
            &quot;clientAuth&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.2. Officially described as &quot;TLS WWW client authentication&quot;, though regularly used for non-WWW TLS.
            &quot;ocspSigning&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.9. Officially described as &quot;Signing OCSP responses&quot;.
            &quot;serverAuth&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.1. Officially described as &quot;TLS WWW server authentication&quot;, though regularly used for non-WWW TLS.
            &quot;timeStamping&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.8. Officially described as &quot;Binding the hash of an object to a time&quot;.
            &quot;codeSigning&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.3. Officially described as &quot;Signing of downloadable executable code client authentication&quot;.
          },
        },
        &quot;policyIds&quot;: [ # Optional. Describes the X.509 certificate policy object identifiers, per https://tools.ietf.org/html/rfc5280#section-4.2.1.4.
          { # An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages.
            &quot;objectIdPath&quot;: [ # Required. The parts of an OID path. The most significant parts of the path come first.
              42,
            ],
          },
        ],
      },
      &quot;reusableConfig&quot;: &quot;A String&quot;, # Required. A resource path to a ReusableConfig in the format `projects/*/locations/*/reusableConfigs/*`.
    },
    &quot;allowedConfigList&quot;: { # Optional. All Certificates issued by the CertificateAuthority must match at least one listed ReusableConfigWrapper in the list.
      &quot;allowedConfigValues&quot;: [ # Required. All Certificates issued by the CertificateAuthority must match at least one listed ReusableConfigWrapper. If a ReusableConfigWrapper has an empty field, any value will be allowed for that field.
        { # A ReusableConfigWrapper describes values that may assist in creating an X.509 certificate, or a reference to a pre-defined set of values.
          &quot;reusableConfigValues&quot;: { # A ReusableConfigValues is used to describe certain fields of an X.509 certificate, such as the key usage fields, fields specific to CA certificates, certificate policy extensions and custom extensions. # Required. A user-specified inline ReusableConfigValues.
            &quot;additionalExtensions&quot;: [ # Optional. Describes custom X.509 extensions.
              { # An X509Extension specifies an X.509 extension, which may be used in different parts of X.509 objects like certificates, CSRs, and CRLs.
                &quot;objectId&quot;: { # An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages. # Required. The OID for this X.509 extension.
                  &quot;objectIdPath&quot;: [ # Required. The parts of an OID path. The most significant parts of the path come first.
                    42,
                  ],
                },
                &quot;critical&quot;: True or False, # Required. Indicates whether or not this extension is critical (i.e., if the client does not know how to handle this extension, the client should consider this to be an error).
                &quot;value&quot;: &quot;A String&quot;, # Required. The value of this X.509 extension.
              },
            ],
            &quot;caOptions&quot;: { # Describes values that are relevant in a CA certificate. # Optional. Describes options in this ReusableConfigValues that are relevant in a CA certificate.
              &quot;maxIssuerPathLength&quot;: 42, # Optional. Refers to the path length restriction X.509 extension. For a CA certificate, this value describes the depth of subordinate CA certificates that are allowed. If this value is less than 0, the request will fail. If this value is missing, the max path length will be omitted from the CA certificate.
              &quot;isCa&quot;: True or False, # Optional. Refers to the &quot;CA&quot; X.509 extension, which is a boolean value. When this value is missing, the extension will be omitted from the CA certificate.
            },
            &quot;aiaOcspServers&quot;: [ # Optional. Describes Online Certificate Status Protocol (OCSP) endpoint addresses that appear in the &quot;Authority Information Access&quot; extension in the certificate.
              &quot;A String&quot;,
            ],
            &quot;keyUsage&quot;: { # A KeyUsage describes key usage values that may appear in an X.509 certificate. # Optional. Indicates the intended use for keys that correspond to a certificate.
              &quot;unknownExtendedKeyUsages&quot;: [ # Used to describe extended key usages that are not listed in the KeyUsage.ExtendedKeyUsageOptions message.
                { # An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages.
                  &quot;objectIdPath&quot;: [ # Required. The parts of an OID path. The most significant parts of the path come first.
                    42,
                  ],
                },
              ],
              &quot;baseKeyUsage&quot;: { # KeyUsage.KeyUsageOptions corresponds to the key usage values described in https://tools.ietf.org/html/rfc5280#section-4.2.1.3. # Describes high-level ways in which a key may be used.
                &quot;decipherOnly&quot;: True or False, # The key may be used to decipher only.
                &quot;keyEncipherment&quot;: True or False, # The key may be used to encipher other keys.
                &quot;crlSign&quot;: True or False, # The key may be used sign certificate revocation lists.
                &quot;digitalSignature&quot;: True or False, # The key may be used for digital signatures.
                &quot;contentCommitment&quot;: True or False, # The key may be used for cryptographic commitments. Note that this may also be referred to as &quot;non-repudiation&quot;.
                &quot;encipherOnly&quot;: True or False, # The key may be used to encipher only.
                &quot;certSign&quot;: True or False, # The key may be used to sign certificates.
                &quot;keyAgreement&quot;: True or False, # The key may be used in a key agreement protocol.
                &quot;dataEncipherment&quot;: True or False, # The key may be used to encipher data.
              },
              &quot;extendedKeyUsage&quot;: { # KeyUsage.ExtendedKeyUsageOptions has fields that correspond to certain common OIDs that could be specified as an extended key usage value. # Detailed scenarios in which a key may be used.
                &quot;emailProtection&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.4. Officially described as &quot;Email protection&quot;.
                &quot;clientAuth&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.2. Officially described as &quot;TLS WWW client authentication&quot;, though regularly used for non-WWW TLS.
                &quot;ocspSigning&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.9. Officially described as &quot;Signing OCSP responses&quot;.
                &quot;serverAuth&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.1. Officially described as &quot;TLS WWW server authentication&quot;, though regularly used for non-WWW TLS.
                &quot;timeStamping&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.8. Officially described as &quot;Binding the hash of an object to a time&quot;.
                &quot;codeSigning&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.3. Officially described as &quot;Signing of downloadable executable code client authentication&quot;.
              },
            },
            &quot;policyIds&quot;: [ # Optional. Describes the X.509 certificate policy object identifiers, per https://tools.ietf.org/html/rfc5280#section-4.2.1.4.
              { # An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages.
                &quot;objectIdPath&quot;: [ # Required. The parts of an OID path. The most significant parts of the path come first.
                  42,
                ],
              },
            ],
          },
          &quot;reusableConfig&quot;: &quot;A String&quot;, # Required. A resource path to a ReusableConfig in the format `projects/*/locations/*/reusableConfigs/*`.
        },
      ],
    },
    &quot;allowedSans&quot;: { # AllowedSubjectAltNames specifies the allowed values for SubjectAltNames by the CertificateAuthority when issuing Certificates. # Optional. If a AllowedSubjectAltNames is specified here, then all Certificates issued by the CertificateAuthority must match AllowedSubjectAltNames. If no value or an empty value is specified, any value will be allowed for the SubjectAltNames field.
      &quot;allowedUris&quot;: [ # Optional. Contains valid RFC 3986 URIs. Glob patterns are also supported. To match across path seperators (i.e. &#x27;/&#x27;) use the double star glob pattern (i.e. &#x27;**&#x27;).
        &quot;A String&quot;,
      ],
      &quot;allowCustomSans&quot;: True or False, # Optional. Specifies if to allow custom X509Extension values.
      &quot;allowedEmailAddresses&quot;: [ # Optional. Contains valid RFC 2822 E-mail addresses. Glob patterns are also supported.
        &quot;A String&quot;,
      ],
      &quot;allowedIps&quot;: [ # Optional. Contains valid 32-bit IPv4 addresses and subnet ranges or RFC 4291 IPv6 addresses and subnet ranges. Subnet ranges are specified using the &#x27;/&#x27; notation (e.g. 10.0.0.0/8, 2001:700:300:1800::/64). Glob patterns are supported only for ip address entries (i.e. not for subnet ranges).
        &quot;A String&quot;,
      ],
      &quot;allowedDnsNames&quot;: [ # Optional. Contains valid, fully-qualified host names. Glob patterns are also supported. To allow an explicit wildcard certificate, escape with backlash (i.e. &quot;\*&quot;). E.g. for globbed entries: &#x27;*bar.com&#x27; will allow &#x27;foo.bar.com&#x27;, but not &#x27;*.bar.com&#x27;, unless the allow_globbing_dns_wildcards field is set. E.g. for wildcard entries: &#x27;\*.bar.com&#x27; will allow &#x27;*.bar.com&#x27;, but not &#x27;foo.bar.com&#x27;.
        &quot;A String&quot;,
      ],
      &quot;allowGlobbingDnsWildcards&quot;: True or False, # Optional. Specifies if glob patterns used for allowed_dns_names allow wildcard certificates. If this is set, certificate requests with wildcard domains will be permitted to match a glob pattern specified in allowed_dns_names. Otherwise, certificate requests with wildcard domains will be permitted only if allowed_dns_names contains a literal wildcard.
    },
    &quot;allowedCommonNames&quot;: [ # Optional. If any value is specified here, then all Certificates issued by the CertificateAuthority must match at least one listed value. If no value is specified, all values will be allowed for this fied. Glob patterns are also supported.
      &quot;A String&quot;,
    ],
    &quot;allowedLocationsAndOrganizations&quot;: [ # Optional. If any Subject is specified here, then all Certificates issued by the CertificateAuthority must match at least one listed Subject. If a Subject has an empty field, any value will be allowed for that field.
      { # Subject describes parts of a distinguished name that, in turn, describes the subject of the certificate.
        &quot;countryCode&quot;: &quot;A String&quot;, # The country code of the subject.
        &quot;locality&quot;: &quot;A String&quot;, # The locality or city of the subject.
        &quot;province&quot;: &quot;A String&quot;, # The province, territory, or regional state of the subject.
        &quot;organizationalUnit&quot;: &quot;A String&quot;, # The organizational_unit of the subject.
        &quot;streetAddress&quot;: &quot;A String&quot;, # The street address of the subject.
        &quot;organization&quot;: &quot;A String&quot;, # The organization of the subject.
        &quot;postalCode&quot;: &quot;A String&quot;, # The postal code of the subject.
      },
    ],
    &quot;allowedIssuanceModes&quot;: { # IssuanceModes specifies the allowed ways in which Certificates may be requested from this CertificateAuthority. # Optional. If specified, then only methods allowed in the IssuanceModes may be used to issue Certificates.
      &quot;allowCsrBasedIssuance&quot;: True or False, # Required. When true, allows callers to create Certificates by specifying a CSR.
      &quot;allowConfigBasedIssuance&quot;: True or False, # Required. When true, allows callers to create Certificates by specifying a CertificateConfig.
    },
  },
  &quot;config&quot;: { # A CertificateConfig describes an X.509 certificate or CSR that is to be created, as an alternative to using ASN.1. # Required. Immutable. The config used to create a self-signed X.509 certificate or CSR.
    &quot;publicKey&quot;: { # A PublicKey describes a public key. # Optional. The public key that corresponds to this config. This is, for example, used when issuing Certificates, but not when creating a self-signed CertificateAuthority or CertificateAuthority CSR.
      &quot;key&quot;: &quot;A String&quot;, # Required. A public key. When this is specified in a request, the padding and encoding can be any of the options described by the respective &#x27;KeyType&#x27; value. When this is generated by the service, it will always be an RFC 5280 [SubjectPublicKeyInfo](https://tools.ietf.org/html/rfc5280#section-4.1) structure containing an algorithm identifier and a key.
      &quot;type&quot;: &quot;A String&quot;, # Required. The type of public key.
    },
    &quot;subjectConfig&quot;: { # These values are used to create the distinguished name and subject alternative name fields in an X.509 certificate. # Required. Specifies some of the values in a certificate that are related to the subject.
      &quot;commonName&quot;: &quot;A String&quot;, # Optional. The &quot;common name&quot; of the distinguished name.
      &quot;subjectAltName&quot;: { # SubjectAltNames corresponds to a more modern way of listing what the asserted identity is in a certificate (i.e., compared to the &quot;common name&quot; in the distinguished name). # Optional. The subject alternative name fields.
        &quot;customSans&quot;: [ # Contains additional subject alternative name values.
          { # An X509Extension specifies an X.509 extension, which may be used in different parts of X.509 objects like certificates, CSRs, and CRLs.
            &quot;objectId&quot;: { # An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages. # Required. The OID for this X.509 extension.
              &quot;objectIdPath&quot;: [ # Required. The parts of an OID path. The most significant parts of the path come first.
                42,
              ],
            },
            &quot;critical&quot;: True or False, # Required. Indicates whether or not this extension is critical (i.e., if the client does not know how to handle this extension, the client should consider this to be an error).
            &quot;value&quot;: &quot;A String&quot;, # Required. The value of this X.509 extension.
          },
        ],
        &quot;emailAddresses&quot;: [ # Contains only valid RFC 2822 E-mail addresses.
          &quot;A String&quot;,
        ],
        &quot;dnsNames&quot;: [ # Contains only valid, fully-qualified host names.
          &quot;A String&quot;,
        ],
        &quot;uris&quot;: [ # Contains only valid RFC 3986 URIs.
          &quot;A String&quot;,
        ],
        &quot;ipAddresses&quot;: [ # Contains only valid 32-bit IPv4 addresses or RFC 4291 IPv6 addresses.
          &quot;A String&quot;,
        ],
      },
      &quot;subject&quot;: { # Subject describes parts of a distinguished name that, in turn, describes the subject of the certificate. # Required. Contains distinguished name fields such as the location and organization.
        &quot;countryCode&quot;: &quot;A String&quot;, # The country code of the subject.
        &quot;locality&quot;: &quot;A String&quot;, # The locality or city of the subject.
        &quot;province&quot;: &quot;A String&quot;, # The province, territory, or regional state of the subject.
        &quot;organizationalUnit&quot;: &quot;A String&quot;, # The organizational_unit of the subject.
        &quot;streetAddress&quot;: &quot;A String&quot;, # The street address of the subject.
        &quot;organization&quot;: &quot;A String&quot;, # The organization of the subject.
        &quot;postalCode&quot;: &quot;A String&quot;, # The postal code of the subject.
      },
    },
    &quot;reusableConfig&quot;: { # A ReusableConfigWrapper describes values that may assist in creating an X.509 certificate, or a reference to a pre-defined set of values. # Required. Describes how some of the technical fields in a certificate should be populated.
      &quot;reusableConfigValues&quot;: { # A ReusableConfigValues is used to describe certain fields of an X.509 certificate, such as the key usage fields, fields specific to CA certificates, certificate policy extensions and custom extensions. # Required. A user-specified inline ReusableConfigValues.
        &quot;additionalExtensions&quot;: [ # Optional. Describes custom X.509 extensions.
          { # An X509Extension specifies an X.509 extension, which may be used in different parts of X.509 objects like certificates, CSRs, and CRLs.
            &quot;objectId&quot;: { # An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages. # Required. The OID for this X.509 extension.
              &quot;objectIdPath&quot;: [ # Required. The parts of an OID path. The most significant parts of the path come first.
                42,
              ],
            },
            &quot;critical&quot;: True or False, # Required. Indicates whether or not this extension is critical (i.e., if the client does not know how to handle this extension, the client should consider this to be an error).
            &quot;value&quot;: &quot;A String&quot;, # Required. The value of this X.509 extension.
          },
        ],
        &quot;caOptions&quot;: { # Describes values that are relevant in a CA certificate. # Optional. Describes options in this ReusableConfigValues that are relevant in a CA certificate.
          &quot;maxIssuerPathLength&quot;: 42, # Optional. Refers to the path length restriction X.509 extension. For a CA certificate, this value describes the depth of subordinate CA certificates that are allowed. If this value is less than 0, the request will fail. If this value is missing, the max path length will be omitted from the CA certificate.
          &quot;isCa&quot;: True or False, # Optional. Refers to the &quot;CA&quot; X.509 extension, which is a boolean value. When this value is missing, the extension will be omitted from the CA certificate.
        },
        &quot;aiaOcspServers&quot;: [ # Optional. Describes Online Certificate Status Protocol (OCSP) endpoint addresses that appear in the &quot;Authority Information Access&quot; extension in the certificate.
          &quot;A String&quot;,
        ],
        &quot;keyUsage&quot;: { # A KeyUsage describes key usage values that may appear in an X.509 certificate. # Optional. Indicates the intended use for keys that correspond to a certificate.
          &quot;unknownExtendedKeyUsages&quot;: [ # Used to describe extended key usages that are not listed in the KeyUsage.ExtendedKeyUsageOptions message.
            { # An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages.
              &quot;objectIdPath&quot;: [ # Required. The parts of an OID path. The most significant parts of the path come first.
                42,
              ],
            },
          ],
          &quot;baseKeyUsage&quot;: { # KeyUsage.KeyUsageOptions corresponds to the key usage values described in https://tools.ietf.org/html/rfc5280#section-4.2.1.3. # Describes high-level ways in which a key may be used.
            &quot;decipherOnly&quot;: True or False, # The key may be used to decipher only.
            &quot;keyEncipherment&quot;: True or False, # The key may be used to encipher other keys.
            &quot;crlSign&quot;: True or False, # The key may be used sign certificate revocation lists.
            &quot;digitalSignature&quot;: True or False, # The key may be used for digital signatures.
            &quot;contentCommitment&quot;: True or False, # The key may be used for cryptographic commitments. Note that this may also be referred to as &quot;non-repudiation&quot;.
            &quot;encipherOnly&quot;: True or False, # The key may be used to encipher only.
            &quot;certSign&quot;: True or False, # The key may be used to sign certificates.
            &quot;keyAgreement&quot;: True or False, # The key may be used in a key agreement protocol.
            &quot;dataEncipherment&quot;: True or False, # The key may be used to encipher data.
          },
          &quot;extendedKeyUsage&quot;: { # KeyUsage.ExtendedKeyUsageOptions has fields that correspond to certain common OIDs that could be specified as an extended key usage value. # Detailed scenarios in which a key may be used.
            &quot;emailProtection&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.4. Officially described as &quot;Email protection&quot;.
            &quot;clientAuth&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.2. Officially described as &quot;TLS WWW client authentication&quot;, though regularly used for non-WWW TLS.
            &quot;ocspSigning&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.9. Officially described as &quot;Signing OCSP responses&quot;.
            &quot;serverAuth&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.1. Officially described as &quot;TLS WWW server authentication&quot;, though regularly used for non-WWW TLS.
            &quot;timeStamping&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.8. Officially described as &quot;Binding the hash of an object to a time&quot;.
            &quot;codeSigning&quot;: True or False, # Corresponds to OID 1.3.6.1.5.5.7.3.3. Officially described as &quot;Signing of downloadable executable code client authentication&quot;.
          },
        },
        &quot;policyIds&quot;: [ # Optional. Describes the X.509 certificate policy object identifiers, per https://tools.ietf.org/html/rfc5280#section-4.2.1.4.
          { # An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages.
            &quot;objectIdPath&quot;: [ # Required. The parts of an OID path. The most significant parts of the path come first.
              42,
            ],
          },
        ],
      },
      &quot;reusableConfig&quot;: &quot;A String&quot;, # Required. A resource path to a ReusableConfig in the format `projects/*/locations/*/reusableConfigs/*`.
    },
  },
  &quot;tier&quot;: &quot;A String&quot;, # Required. Immutable. The Tier of this CertificateAuthority.
  &quot;lifetime&quot;: &quot;A String&quot;, # Required. The desired lifetime of the CA certificate. Used to create the &quot;not_before_time&quot; and &quot;not_after_time&quot; fields inside an X.509 certificate.
  &quot;deleteTime&quot;: &quot;A String&quot;, # Output only. The time at which this CertificateAuthority will be deleted, if scheduled for deletion.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name for this CertificateAuthority in the format `projects/*/locations/*/certificateAuthorities/*`.
  &quot;accessUrls&quot;: { # URLs where a CertificateAuthority will publish content. # Output only. URLs for accessing content published by this CA, such as the CA certificate and CRLs.
    &quot;crlAccessUrl&quot;: &quot;A String&quot;, # The URL where this CertificateAuthority&#x27;s CRLs are published. This will only be set for CAs that have been activated.
    &quot;caCertificateAccessUrl&quot;: &quot;A String&quot;, # The URL where this CertificateAuthority&#x27;s CA certificate is published. This will only be set for CAs that have been activated.
  },
  &quot;issuingOptions&quot;: { # Options that affect all certificates issued by a CertificateAuthority. # Optional. The IssuingOptions to follow when issuing Certificates from this CertificateAuthority.
    &quot;includeCrlAccessUrl&quot;: True or False, # Required. When true, includes a URL to the CRL corresponding to certificates issued from a CertificateAuthority. CRLs will expire 7 days from their creation. However, we will rebuild daily. CRLs are also rebuilt shortly after a certificate is revoked.
    &quot;includeCaCertUrl&quot;: True or False, # Required. When true, includes a URL to the issuing CA certificate in the &quot;authority information access&quot; X.509 extension.
  },
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time at which this CertificateAuthority was created.
}

  updateMask: string, Required. A list of fields to be updated in this request.
  requestId: string, Optional. An ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and t he request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a network API call.
    &quot;metadata&quot;: { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
    },
    &quot;response&quot;: { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
    },
    &quot;done&quot;: True or False, # If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.
    &quot;error&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). # The error result of the operation in case of failure or cancellation.
      &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.
      &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    },
    &quot;name&quot;: &quot;A String&quot;, # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.
  }</pre>
</div>

<div class="method">
    <code class="details" id="restore">restore(name, body=None, x__xgafv=None)</code>
  <pre>Restore a CertificateAuthority that is scheduled for deletion.

Args:
  name: string, Required. The resource name for this CertificateAuthority in the format `projects/*/locations/*/certificateAuthorities/*`. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for CertificateAuthorityService.RestoreCertificateAuthority.
    &quot;requestId&quot;: &quot;A String&quot;, # Optional. An ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and t he request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).
  }

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

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a network API call.
    &quot;metadata&quot;: { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
    },
    &quot;response&quot;: { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
    },
    &quot;done&quot;: True or False, # If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.
    &quot;error&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). # The error result of the operation in case of failure or cancellation.
      &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.
      &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    },
    &quot;name&quot;: &quot;A String&quot;, # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.
  }</pre>
</div>

<div class="method">
    <code class="details" id="scheduleDelete">scheduleDelete(name, body=None, x__xgafv=None)</code>
  <pre>Schedule a CertificateAuthority for deletion.

Args:
  name: string, Required. The resource name for this CertificateAuthority in the format `projects/*/locations/*/certificateAuthorities/*`. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for CertificateAuthorityService.ScheduleDeleteCertificateAuthority.
    &quot;requestId&quot;: &quot;A String&quot;, # Optional. An ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and t he request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).
  }

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

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a network API call.
    &quot;metadata&quot;: { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
    },
    &quot;response&quot;: { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
    },
    &quot;done&quot;: True or False, # If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.
    &quot;error&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). # The error result of the operation in case of failure or cancellation.
      &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.
      &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    },
    &quot;name&quot;: &quot;A String&quot;, # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.
  }</pre>
</div>

<div class="method">
    <code class="details" id="setIamPolicy">setIamPolicy(resource, body=None, x__xgafv=None)</code>
  <pre>Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.

Args:
  resource: string, REQUIRED: The resource for which the policy is being specified. See the operation documentation for the appropriate value for this field. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for `SetIamPolicy` method.
    &quot;policy&quot;: { # An Identity and Access Management (IAM) policy, which specifies access controls for Google Cloud resources. A `Policy` is a collection of `bindings`. A `binding` binds one or more `members` to a single `role`. Members can be user accounts, service accounts, Google groups, and domains (such as G Suite). A `role` is a named list of permissions; each `role` can be an IAM predefined role or a user-created custom role. For some types of Google Cloud resources, a `binding` can also specify a `condition`, which is a logical expression that allows access to a resource only if the expression evaluates to `true`. A condition can add constraints based on attributes of the request, the resource, or both. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies). **JSON example:** { &quot;bindings&quot;: [ { &quot;role&quot;: &quot;roles/resourcemanager.organizationAdmin&quot;, &quot;members&quot;: [ &quot;user:mike@example.com&quot;, &quot;group:admins@example.com&quot;, &quot;domain:google.com&quot;, &quot;serviceAccount:my-project-id@appspot.gserviceaccount.com&quot; ] }, { &quot;role&quot;: &quot;roles/resourcemanager.organizationViewer&quot;, &quot;members&quot;: [ &quot;user:eve@example.com&quot; ], &quot;condition&quot;: { &quot;title&quot;: &quot;expirable access&quot;, &quot;description&quot;: &quot;Does not grant access after Sep 2020&quot;, &quot;expression&quot;: &quot;request.time &lt; timestamp(&#x27;2020-10-01T00:00:00.000Z&#x27;)&quot;, } } ], &quot;etag&quot;: &quot;BwWWja0YfJA=&quot;, &quot;version&quot;: 3 } **YAML example:** bindings: - members: - user:mike@example.com - group:admins@example.com - domain:google.com - serviceAccount:my-project-id@appspot.gserviceaccount.com role: roles/resourcemanager.organizationAdmin - members: - user:eve@example.com role: roles/resourcemanager.organizationViewer condition: title: expirable access description: Does not grant access after Sep 2020 expression: request.time &lt; timestamp(&#x27;2020-10-01T00:00:00.000Z&#x27;) - etag: BwWWja0YfJA= - version: 3 For a description of IAM and its features, see the [IAM documentation](https://cloud.google.com/iam/docs/). # REQUIRED: The complete policy to be applied to the `resource`. The size of the policy is limited to a few 10s of KB. An empty policy is a valid policy but certain Cloud Platform services (such as Projects) might reject them.
      &quot;version&quot;: 42, # Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
      &quot;auditConfigs&quot;: [ # Specifies cloud audit logging configuration for this policy.
        { # Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { &quot;audit_configs&quot;: [ { &quot;service&quot;: &quot;allServices&quot;, &quot;audit_log_configs&quot;: [ { &quot;log_type&quot;: &quot;DATA_READ&quot;, &quot;exempted_members&quot;: [ &quot;user:jose@example.com&quot; ] }, { &quot;log_type&quot;: &quot;DATA_WRITE&quot; }, { &quot;log_type&quot;: &quot;ADMIN_READ&quot; } ] }, { &quot;service&quot;: &quot;sampleservice.googleapis.com&quot;, &quot;audit_log_configs&quot;: [ { &quot;log_type&quot;: &quot;DATA_READ&quot; }, { &quot;log_type&quot;: &quot;DATA_WRITE&quot;, &quot;exempted_members&quot;: [ &quot;user:aliya@example.com&quot; ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts jose@example.com from DATA_READ logging, and aliya@example.com from DATA_WRITE logging.
          &quot;auditLogConfigs&quot;: [ # The configuration for logging of each type of permission.
            { # Provides the configuration for logging a type of permissions. Example: { &quot;audit_log_configs&quot;: [ { &quot;log_type&quot;: &quot;DATA_READ&quot;, &quot;exempted_members&quot;: [ &quot;user:jose@example.com&quot; ] }, { &quot;log_type&quot;: &quot;DATA_WRITE&quot; } ] } This enables &#x27;DATA_READ&#x27; and &#x27;DATA_WRITE&#x27; logging, while exempting jose@example.com from DATA_READ logging.
              &quot;logType&quot;: &quot;A String&quot;, # The log type that this config enables.
              &quot;exemptedMembers&quot;: [ # Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members.
                &quot;A String&quot;,
              ],
            },
          ],
          &quot;service&quot;: &quot;A String&quot;, # Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services.
        },
      ],
      &quot;bindings&quot;: [ # Associates a list of `members` to a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one member.
        { # Associates `members` with a `role`.
          &quot;members&quot;: [ # Specifies the identities requesting access for a Cloud Platform resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`.
            &quot;A String&quot;,
          ],
          &quot;role&quot;: &quot;A String&quot;, # Role that is assigned to `members`. For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
          &quot;bindingId&quot;: &quot;A String&quot;,
          &quot;condition&quot;: { # Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: &quot;Summary size limit&quot; description: &quot;Determines if a summary is less than 100 chars&quot; expression: &quot;document.summary.size() &lt; 100&quot; Example (Equality): title: &quot;Requestor is owner&quot; description: &quot;Determines if requestor is the document owner&quot; expression: &quot;document.owner == request.auth.claims.email&quot; Example (Logic): title: &quot;Public documents&quot; description: &quot;Determine whether the document should be publicly visible&quot; expression: &quot;document.type != &#x27;private&#x27; &amp;&amp; document.type != &#x27;internal&#x27;&quot; Example (Data Manipulation): title: &quot;Notification string&quot; description: &quot;Create a notification string with a timestamp.&quot; expression: &quot;&#x27;New message received at &#x27; + string(document.create_time)&quot; The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information. # The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the members in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
            &quot;expression&quot;: &quot;A String&quot;, # Textual representation of an expression in Common Expression Language syntax.
            &quot;title&quot;: &quot;A String&quot;, # Optional. Title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression.
            &quot;location&quot;: &quot;A String&quot;, # Optional. String indicating the location of the expression for error reporting, e.g. a file name and a position in the file.
            &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.
          },
        },
      ],
      &quot;etag&quot;: &quot;A String&quot;, # `etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.
    },
    &quot;updateMask&quot;: &quot;A String&quot;, # OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: &quot;bindings, etag&quot;`
  }

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

Returns:
  An object of the form:

    { # An Identity and Access Management (IAM) policy, which specifies access controls for Google Cloud resources. A `Policy` is a collection of `bindings`. A `binding` binds one or more `members` to a single `role`. Members can be user accounts, service accounts, Google groups, and domains (such as G Suite). A `role` is a named list of permissions; each `role` can be an IAM predefined role or a user-created custom role. For some types of Google Cloud resources, a `binding` can also specify a `condition`, which is a logical expression that allows access to a resource only if the expression evaluates to `true`. A condition can add constraints based on attributes of the request, the resource, or both. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies). **JSON example:** { &quot;bindings&quot;: [ { &quot;role&quot;: &quot;roles/resourcemanager.organizationAdmin&quot;, &quot;members&quot;: [ &quot;user:mike@example.com&quot;, &quot;group:admins@example.com&quot;, &quot;domain:google.com&quot;, &quot;serviceAccount:my-project-id@appspot.gserviceaccount.com&quot; ] }, { &quot;role&quot;: &quot;roles/resourcemanager.organizationViewer&quot;, &quot;members&quot;: [ &quot;user:eve@example.com&quot; ], &quot;condition&quot;: { &quot;title&quot;: &quot;expirable access&quot;, &quot;description&quot;: &quot;Does not grant access after Sep 2020&quot;, &quot;expression&quot;: &quot;request.time &lt; timestamp(&#x27;2020-10-01T00:00:00.000Z&#x27;)&quot;, } } ], &quot;etag&quot;: &quot;BwWWja0YfJA=&quot;, &quot;version&quot;: 3 } **YAML example:** bindings: - members: - user:mike@example.com - group:admins@example.com - domain:google.com - serviceAccount:my-project-id@appspot.gserviceaccount.com role: roles/resourcemanager.organizationAdmin - members: - user:eve@example.com role: roles/resourcemanager.organizationViewer condition: title: expirable access description: Does not grant access after Sep 2020 expression: request.time &lt; timestamp(&#x27;2020-10-01T00:00:00.000Z&#x27;) - etag: BwWWja0YfJA= - version: 3 For a description of IAM and its features, see the [IAM documentation](https://cloud.google.com/iam/docs/).
    &quot;version&quot;: 42, # Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
    &quot;auditConfigs&quot;: [ # Specifies cloud audit logging configuration for this policy.
      { # Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { &quot;audit_configs&quot;: [ { &quot;service&quot;: &quot;allServices&quot;, &quot;audit_log_configs&quot;: [ { &quot;log_type&quot;: &quot;DATA_READ&quot;, &quot;exempted_members&quot;: [ &quot;user:jose@example.com&quot; ] }, { &quot;log_type&quot;: &quot;DATA_WRITE&quot; }, { &quot;log_type&quot;: &quot;ADMIN_READ&quot; } ] }, { &quot;service&quot;: &quot;sampleservice.googleapis.com&quot;, &quot;audit_log_configs&quot;: [ { &quot;log_type&quot;: &quot;DATA_READ&quot; }, { &quot;log_type&quot;: &quot;DATA_WRITE&quot;, &quot;exempted_members&quot;: [ &quot;user:aliya@example.com&quot; ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts jose@example.com from DATA_READ logging, and aliya@example.com from DATA_WRITE logging.
        &quot;auditLogConfigs&quot;: [ # The configuration for logging of each type of permission.
          { # Provides the configuration for logging a type of permissions. Example: { &quot;audit_log_configs&quot;: [ { &quot;log_type&quot;: &quot;DATA_READ&quot;, &quot;exempted_members&quot;: [ &quot;user:jose@example.com&quot; ] }, { &quot;log_type&quot;: &quot;DATA_WRITE&quot; } ] } This enables &#x27;DATA_READ&#x27; and &#x27;DATA_WRITE&#x27; logging, while exempting jose@example.com from DATA_READ logging.
            &quot;logType&quot;: &quot;A String&quot;, # The log type that this config enables.
            &quot;exemptedMembers&quot;: [ # Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members.
              &quot;A String&quot;,
            ],
          },
        ],
        &quot;service&quot;: &quot;A String&quot;, # Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services.
      },
    ],
    &quot;bindings&quot;: [ # Associates a list of `members` to a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one member.
      { # Associates `members` with a `role`.
        &quot;members&quot;: [ # Specifies the identities requesting access for a Cloud Platform resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`.
          &quot;A String&quot;,
        ],
        &quot;role&quot;: &quot;A String&quot;, # Role that is assigned to `members`. For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
        &quot;bindingId&quot;: &quot;A String&quot;,
        &quot;condition&quot;: { # Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: &quot;Summary size limit&quot; description: &quot;Determines if a summary is less than 100 chars&quot; expression: &quot;document.summary.size() &lt; 100&quot; Example (Equality): title: &quot;Requestor is owner&quot; description: &quot;Determines if requestor is the document owner&quot; expression: &quot;document.owner == request.auth.claims.email&quot; Example (Logic): title: &quot;Public documents&quot; description: &quot;Determine whether the document should be publicly visible&quot; expression: &quot;document.type != &#x27;private&#x27; &amp;&amp; document.type != &#x27;internal&#x27;&quot; Example (Data Manipulation): title: &quot;Notification string&quot; description: &quot;Create a notification string with a timestamp.&quot; expression: &quot;&#x27;New message received at &#x27; + string(document.create_time)&quot; The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information. # The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the members in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
          &quot;expression&quot;: &quot;A String&quot;, # Textual representation of an expression in Common Expression Language syntax.
          &quot;title&quot;: &quot;A String&quot;, # Optional. Title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression.
          &quot;location&quot;: &quot;A String&quot;, # Optional. String indicating the location of the expression for error reporting, e.g. a file name and a position in the file.
          &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.
        },
      },
    ],
    &quot;etag&quot;: &quot;A String&quot;, # `etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.
  }</pre>
</div>

<div class="method">
    <code class="details" id="testIamPermissions">testIamPermissions(resource, body=None, x__xgafv=None)</code>
  <pre>Returns permissions that a caller has on the specified resource. If the resource does not exist, this will return an empty set of permissions, not a `NOT_FOUND` error. Note: This operation is designed to be used for building permission-aware UIs and command-line tools, not for authorization checking. This operation may &quot;fail open&quot; without warning.

Args:
  resource: string, REQUIRED: The resource for which the policy detail is being requested. See the operation documentation for the appropriate value for this field. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for `TestIamPermissions` method.
    &quot;permissions&quot;: [ # The set of permissions to check for the `resource`. Permissions with wildcards (such as &#x27;*&#x27; or &#x27;storage.*&#x27;) are not allowed. For more information see [IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).
      &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 message for `TestIamPermissions` method.
    &quot;permissions&quot;: [ # A subset of `TestPermissionsRequest.permissions` that the caller is allowed.
      &quot;A String&quot;,
    ],
  }</pre>
</div>

</body></html>