<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="run_v1beta1.html">Cloud Run Admin API</a> . <a href="run_v1beta1.namespaces.html">namespaces</a> . <a href="run_v1beta1.namespaces.customresourcedefinitions.html">customresourcedefinitions</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Rpc to get information about a CustomResourceDefinition.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="get">get(name, x__xgafv=None)</code>
  <pre>Rpc to get information about a CustomResourceDefinition.

Args:
  name: string, The name of the CustomResourceDefinition being retrieved. If needed, replace {namespace_id} with the project ID. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # CustomResourceDefinition represents a resource that should be exposed on the API server. Its name MUST be in the format &lt;.spec.name&gt;.&lt;.spec.group&gt;.
    &quot;metadata&quot;: { # k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create. # Metadata associated with this CustomResourceDefinition.
      &quot;finalizers&quot;: [ # (Optional) Cloud Run fully managed: not supported Cloud Run for Anthos: supported Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. +patchStrategy=merge
        &quot;A String&quot;,
      ],
      &quot;clusterName&quot;: &quot;A String&quot;, # (Optional) Cloud Run fully managed: not supported Cloud Run for Anthos: supported The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.
      &quot;generateName&quot;: &quot;A String&quot;, # (Optional) Cloud Run fully managed: not supported Cloud Run for Anthos: supported GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server. If this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header). Applied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency string generateName = 2;
      &quot;annotations&quot;: { # (Optional) Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;deletionGracePeriodSeconds&quot;: 42, # (Optional) Cloud Run fully managed: not supported Cloud Run for Anthos: supported Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.
      &quot;generation&quot;: 42, # (Optional) A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.
      &quot;selfLink&quot;: &quot;A String&quot;, # (Optional) SelfLink is a URL representing this object. Populated by the system. Read-only. string selfLink = 4;
      &quot;ownerReferences&quot;: [ # (Optional) Cloud Run fully managed: not supported Cloud Run for Anthos: supported List of objects that own this object. If ALL objects in the list have been deleted, this object will be garbage collected.
        { # OwnerReference contains enough information to let you identify an owning object. Currently, an owning object must be in the same namespace, so there is no namespace field.
          &quot;name&quot;: &quot;A String&quot;, # Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names
          &quot;uid&quot;: &quot;A String&quot;, # UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids
          &quot;controller&quot;: True or False, # If true, this reference points to the managing controller. +optional
          &quot;blockOwnerDeletion&quot;: True or False, # If true, AND if the owner has the &quot;foregroundDeletion&quot; finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. Defaults to false. To set this field, a user needs &quot;delete&quot; permission of the owner, otherwise 422 (Unprocessable Entity) will be returned. +optional
          &quot;kind&quot;: &quot;A String&quot;, # Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds
          &quot;apiVersion&quot;: &quot;A String&quot;, # API version of the referent.
        },
      ],
      &quot;resourceVersion&quot;: &quot;A String&quot;, # (Optional) An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources. Populated by the system. Read-only. Value must be treated as opaque by clients. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
      &quot;deletionTimestamp&quot;: &quot;A String&quot;, # (Optional) Cloud Run fully managed: not supported Cloud Run for Anthos: supported DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested. Populated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
      &quot;namespace&quot;: &quot;A String&quot;, # Namespace defines the space within each name must be unique, within a Cloud Run region. In Cloud Run the namespace must be equal to either the project ID or project number.
      &quot;labels&quot;: { # (Optional) Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and routes. More info: http://kubernetes.io/docs/user-guide/labels
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;name&quot;: &quot;A String&quot;, # Name must be unique within a namespace, within a Cloud Run region. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names +optional
      &quot;creationTimestamp&quot;: &quot;A String&quot;, # (Optional) CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC. Populated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
      &quot;uid&quot;: &quot;A String&quot;, # (Optional) UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations. Populated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids
    },
    &quot;apiVersion&quot;: &quot;A String&quot;, # The API version for this call such as &quot;k8s.apiextensions.io/v1beta1&quot;.
    &quot;kind&quot;: &quot;A String&quot;, # The kind of resource, in this case always &quot;CustomResourceDefinition&quot;.
    &quot;spec&quot;: { # CustomResourceDefinitionSpec describes how a user wants their resource to appear # Spec describes how the user wants the resources to appear
      &quot;names&quot;: { # CustomResourceDefinitionNames indicates the names to serve this CustomResourceDefinition # Names are the names used to describe this custom resource
        &quot;singular&quot;: &quot;A String&quot;, # Singular is the singular name of the resource. It must be all lowercase Defaults to lowercased +optional
        &quot;categories&quot;: [ # Categories is a list of grouped resources custom resources belong to (e.g. &#x27;all&#x27;) +optional
          &quot;A String&quot;,
        ],
        &quot;kind&quot;: &quot;A String&quot;, # Kind is the serialized kind of the resource. It is normally CamelCase and singular.
        &quot;shortNames&quot;: [ # ShortNames are short names for the resource. It must be all lowercase. +optional
          &quot;A String&quot;,
        ],
        &quot;listKind&quot;: &quot;A String&quot;, # ListKind is the serialized kind of the list for this resource. Defaults to List. +optional
        &quot;plural&quot;: &quot;A String&quot;, # Plural is the plural name of the resource to serve. It must match the name of the CustomResourceDefinition-registration too: plural.group and it must be all lowercase.
      },
      &quot;version&quot;: &quot;A String&quot;, # Version is the version this resource belongs in Should be always first item in Versions field if provided. Optional, but at least one of Version or Versions must be set. Deprecated: Please use `Versions`. +optional
      &quot;scope&quot;: &quot;A String&quot;, # Scope indicates whether this resource is cluster or namespace scoped. Default is namespaced
      &quot;group&quot;: &quot;A String&quot;, # Group is the group this resource belongs in
      &quot;subresources&quot;: { # CustomResourceSubresources defines the status and scale subresources for CustomResources. # Subresources describes the subresources for CustomResources +optional
        &quot;status&quot;: { # CustomResourceSubresourceStatus defines how to serve the status subresource for CustomResources. Status is represented by the `.status` JSON path inside of a CustomResource. When set, * exposes a /status subresource for the custom resource * PUT requests to the /status subresource take a custom resource object, and ignore changes to anything except the status stanza * PUT/POST/PATCH requests to the custom resource ignore changes to the status stanza # Status denotes the status subresource for CustomResources +optional
        },
        &quot;scale&quot;: { # CustomResourceSubresourceScale defines how to serve the scale subresource for CustomResources. # Scale denotes the scale subresource for CustomResources +optional
          &quot;statusReplicasPath&quot;: &quot;A String&quot;, # StatusReplicasPath defines the JSON path inside of a CustomResource that corresponds to Scale.Status.Replicas. Only JSON paths without the array notation are allowed. Must be a JSON Path under .status. If there is no value under the given path in the CustomResource, the status replica value in the /scale subresource will default to 0.
          &quot;labelSelectorPath&quot;: &quot;A String&quot;, # LabelSelectorPath defines the JSON path inside of a CustomResource that corresponds to Scale.Status.Selector. Only JSON paths without the array notation are allowed. Must be a JSON Path under .status. Must be set to work with HPA. If there is no value under the given path in the CustomResource, the status label selector value in the /scale subresource will default to the empty string. +optional
          &quot;specReplicasPath&quot;: &quot;A String&quot;, # SpecReplicasPath defines the JSON path inside of a CustomResource that corresponds to Scale.Spec.Replicas. Only JSON paths without the array notation are allowed. Must be a JSON Path under .spec. If there is no value under the given path in the CustomResource, the /scale subresource will return an error on GET.
        },
      },
      &quot;versions&quot;: [ # Versions is the list of all supported versions for this resource. If Version field is provided, this field is optional. Validation: All versions must use the same validation schema for now. i.e., top level Validation field is applied to all of these versions. Order: The version name will be used to compute the order. If the version string is &quot;kube-like&quot;, it will sort above non &quot;kube-like&quot; version strings, which are ordered lexicographically. &quot;Kube-like&quot; versions start with a &quot;v&quot;, then are followed by a number (the major version), then optionally the string &quot;alpha&quot; or &quot;beta&quot; and another number (the minor version). These are sorted first by GA &gt; beta &gt; alpha (where GA is a version with no suffix such as beta or alpha), and then by comparing major version, then minor version. An example sorted list of versions: v10, v2, v1, v11beta2, v10beta3, v3beta1, v12alpha1, v11alpha2, foo1, foo10. +optional
        {
          &quot;name&quot;: &quot;A String&quot;, # Name is the version name, e.g. “v1”, “v2beta1”, etc.
          &quot;served&quot;: True or False, # Served is a flag enabling/disabling this version from being served via REST APIs
          &quot;storage&quot;: True or False, # Storage flags the version as storage version. There must be exactly one flagged as storage version.
        },
      ],
      &quot;validation&quot;: { # CustomResourceValidation is a list of validation methods for CustomResources. # Validation describes the validation methods for CustomResources +optional
        &quot;openAPIV3Schema&quot;: { # JSONSchemaProps is a JSON-Schema following Specification Draft 4 (http://json-schema.org/). # OpenAPIV3Schema is the OpenAPI v3 schema to be validated against. +optional
          &quot;multipleOf&quot;: 3.14,
          &quot;definitions&quot;: {
            &quot;a_key&quot;: # Object with schema name: JSONSchemaProps
          },
          &quot;properties&quot;: {
            &quot;a_key&quot;: # Object with schema name: JSONSchemaProps
          },
          &quot;uniqueItems&quot;: True or False,
          &quot;allOf&quot;: [
            # Object with schema name: JSONSchemaProps
          ],
          &quot;patternProperties&quot;: {
            &quot;a_key&quot;: # Object with schema name: JSONSchemaProps
          },
          &quot;externalDocs&quot;: { # ExternalDocumentation allows referencing an external resource for extended documentation.
            &quot;description&quot;: &quot;A String&quot;,
            &quot;url&quot;: &quot;A String&quot;,
          },
          &quot;enum&quot;: [
            &quot;A String&quot;,
          ],
          &quot;maxItems&quot;: &quot;A String&quot;,
          &quot;required&quot;: [
            &quot;A String&quot;,
          ],
          &quot;minLength&quot;: &quot;A String&quot;,
          &quot;id&quot;: &quot;A String&quot;,
          &quot;minimum&quot;: 3.14,
          &quot;exclusiveMaximum&quot;: True or False,
          &quot;maxLength&quot;: &quot;A String&quot;,
          &quot;format&quot;: &quot;A String&quot;,
          &quot;default&quot;: { # JSON represents any valid JSON value. These types are supported: bool, int64, float64, string, []interface{}, map[string]interface{} and nil.
            &quot;raw&quot;: &quot;A String&quot;,
          },
          &quot;oneOf&quot;: [
            # Object with schema name: JSONSchemaProps
          ],
          &quot;maximum&quot;: 3.14,
          &quot;minItems&quot;: &quot;A String&quot;,
          &quot;maxProperties&quot;: &quot;A String&quot;,
          &quot;not&quot;: # Object with schema name: JSONSchemaProps
          &quot;ref&quot;: &quot;A String&quot;,
          &quot;description&quot;: &quot;A String&quot;,
          &quot;exclusiveMinimum&quot;: True or False,
          &quot;pattern&quot;: &quot;A String&quot;,
          &quot;type&quot;: &quot;A String&quot;,
          &quot;additionalItems&quot;: { # JSONSchemaPropsOrBool represents JSONSchemaProps or a boolean value. Defaults to true for the boolean property.
            &quot;schema&quot;: # Object with schema name: JSONSchemaProps
            &quot;allows&quot;: True or False,
          },
          &quot;additionalProperties&quot;: { # JSONSchemaPropsOrBool represents JSONSchemaProps or a boolean value. Defaults to true for the boolean property.
            &quot;schema&quot;: # Object with schema name: JSONSchemaProps
            &quot;allows&quot;: True or False,
          },
          &quot;schema&quot;: &quot;A String&quot;,
          &quot;minProperties&quot;: &quot;A String&quot;,
          &quot;dependencies&quot;: {
            &quot;a_key&quot;: { # JSONSchemaPropsOrStringArray represents a JSONSchemaProps or a string array.
              &quot;schema&quot;: # Object with schema name: JSONSchemaProps
              &quot;property&quot;: [
                &quot;A String&quot;,
              ],
            },
          },
          &quot;example&quot;: { # JSON represents any valid JSON value. These types are supported: bool, int64, float64, string, []interface{}, map[string]interface{} and nil.
            &quot;raw&quot;: &quot;A String&quot;,
          },
          &quot;anyOf&quot;: [
            # Object with schema name: JSONSchemaProps
          ],
          &quot;items&quot;: { # JSONSchemaPropsOrArray represents a value that can either be a JSONSchemaProps or an array of JSONSchemaProps. Mainly here for serialization purposes.
            &quot;jsonSchemas&quot;: [
              # Object with schema name: JSONSchemaProps
            ],
            &quot;schema&quot;: # Object with schema name: JSONSchemaProps
          },
          &quot;title&quot;: &quot;A String&quot;,
        },
      },
      &quot;additionalPrinterColumns&quot;: [ # AdditionalPrinterColumns are additional columns shown e.g. in kubectl next to the name. Defaults to a created-at column. +optional
        { # CustomResourceColumnDefinition specifies a column for server side printing.
          &quot;description&quot;: &quot;A String&quot;, # description is a human readable description of this column. +optional
          &quot;name&quot;: &quot;A String&quot;, # name is a human readable name for the column.
          &quot;type&quot;: &quot;A String&quot;, # type is an OpenAPI type definition for this column. See https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types for more.
          &quot;priority&quot;: 42, # priority is an integer defining the relative importance of this column compared to others. Lower numbers are considered higher priority. Columns that may be omitted in limited space scenarios should be given a higher priority. +optional
          &quot;jsonPath&quot;: &quot;A String&quot;, # JSONPath is a simple JSON path, i.e. with array notation.
          &quot;format&quot;: &quot;A String&quot;, # format is an optional OpenAPI type definition for this column. The &#x27;name&#x27; format is applied to the primary identifier column to assist in clients identifying column is the resource name. See https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types for more. +optional
        },
      ],
    },
  }</pre>
</div>

</body></html>