<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="deploymentmanager_alpha.html">Cloud Deployment Manager V2 API</a> . <a href="deploymentmanager_alpha.types.html">types</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(project, type, x__xgafv=None)</a></code></p>
<p class="firstline">Gets information about a specific type.</p>
<p class="toc_element">
  <code><a href="#list">list(project, filter=None, maxResults=None, orderBy=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists all resource types for Deployment Manager.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="get">get(project, type, x__xgafv=None)</code>
  <pre>Gets information about a specific type.

Args:
  project: string, The project ID for this request. (required)
  type: string, The name of the type for this request. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A resource type supported by Deployment Manager.
  &quot;base&quot;: { # BaseType that describes a service-backed Type. # Base Type (configurable service) that backs this Type.
    &quot;collectionOverrides&quot;: [ # Allows resource handling overrides for specific collections
      { # CollectionOverride allows resource handling overrides for specific resources within a BaseType
        &quot;collection&quot;: &quot;A String&quot;, # The collection that identifies this resource within its service.
        &quot;methodMap&quot;: { # Deployment Manager will call these methods during the events of creation/deletion/update/get/setIamPolicy # Custom verb method mappings to support unordered list API mappings.
          &quot;create&quot;: &quot;A String&quot;, # The action identifier for the create method to be used for this collection
          &quot;delete&quot;: &quot;A String&quot;, # The action identifier for the delete method to be used for this collection
          &quot;get&quot;: &quot;A String&quot;, # The action identifier for the get method to be used for this collection
          &quot;setIamPolicy&quot;: &quot;A String&quot;, # The action identifier for the setIamPolicy method to be used for this collection
          &quot;update&quot;: &quot;A String&quot;, # The action identifier for the update method to be used for this collection
        },
        &quot;options&quot;: { # Options allows customized resource handling by Deployment Manager. # The options to apply to this resource-level override
          &quot;asyncOptions&quot;: [ # Options regarding how to thread async requests.
            { # Async options that determine when a resource should finish.
              &quot;methodMatch&quot;: &quot;A String&quot;, # Method regex where this policy will apply.
              &quot;pollingOptions&quot;: { # Deployment manager will poll instances for this API resource setting a RUNNING state, and blocking until polling conditions tell whether the resource is completed or failed.
                &quot;diagnostics&quot;: [ # An array of diagnostics to be collected by Deployment Manager, these diagnostics will be displayed to the user.
                  {
                    &quot;field&quot;: &quot;A String&quot;, # JsonPath expression on the resource that if non empty, indicates that this field needs to be extracted as a diagnostic.
                    &quot;level&quot;: &quot;A String&quot;, # Level to record this diagnostic.
                  },
                ],
                &quot;failCondition&quot;: &quot;A String&quot;, # JsonPath expression that determines if the request failed.
                &quot;finishCondition&quot;: &quot;A String&quot;, # JsonPath expression that determines if the request is completed.
                &quot;pollingLink&quot;: &quot;A String&quot;, # JsonPath expression that evaluates to string, it indicates where to poll.
                &quot;targetLink&quot;: &quot;A String&quot;, # JsonPath expression, after polling is completed, indicates where to fetch the resource.
              },
            },
          ],
          &quot;inputMappings&quot;: [ # The mappings that apply for requests.
            { # InputMapping creates a &#x27;virtual&#x27; property that will be injected into the properties before sending the request to the underlying API.
              &quot;fieldName&quot;: &quot;A String&quot;, # The name of the field that is going to be injected.
              &quot;location&quot;: &quot;A String&quot;, # The location where this mapping applies.
              &quot;methodMatch&quot;: &quot;A String&quot;, # Regex to evaluate on method to decide if input applies.
              &quot;value&quot;: &quot;A String&quot;, # A jsonPath expression to select an element.
            },
          ],
          &quot;nameProperty&quot;: &quot;A String&quot;, # The json path to the field in the resource JSON body into which the resource name should be mapped. Leaving this empty indicates that there should be no mapping performed.
          &quot;validationOptions&quot;: { # Options for how to validate and process properties on a resource. # Options for how to validate and process properties on a resource.
            &quot;schemaValidation&quot;: &quot;A String&quot;, # Customize how deployment manager will validate the resource against schema errors.
            &quot;undeclaredProperties&quot;: &quot;A String&quot;, # Specify what to do with extra properties when executing a request.
          },
        },
      },
    ],
    &quot;credential&quot;: { # The credential used by Deployment Manager and TypeProvider. Only one of the options is permitted. # Credential used when interacting with this type.
      &quot;basicAuth&quot;: { # Basic Auth used as a credential. # Basic Auth Credential, only used by TypeProvider.
        &quot;password&quot;: &quot;A String&quot;,
        &quot;user&quot;: &quot;A String&quot;,
      },
      &quot;serviceAccount&quot;: { # Service Account used as a credential. # Service Account Credential, only used by Deployment.
        &quot;email&quot;: &quot;A String&quot;, # The IAM service account email address like test@myproject.iam.gserviceaccount.com
      },
      &quot;useProjectDefault&quot;: True or False, # Specify to use the project default credential, only supported by Deployment.
    },
    &quot;descriptorUrl&quot;: &quot;A String&quot;, # Descriptor Url for the this type.
    &quot;options&quot;: { # Options allows customized resource handling by Deployment Manager. # Options to apply when handling any resources in this service.
      &quot;asyncOptions&quot;: [ # Options regarding how to thread async requests.
        { # Async options that determine when a resource should finish.
          &quot;methodMatch&quot;: &quot;A String&quot;, # Method regex where this policy will apply.
          &quot;pollingOptions&quot;: { # Deployment manager will poll instances for this API resource setting a RUNNING state, and blocking until polling conditions tell whether the resource is completed or failed.
            &quot;diagnostics&quot;: [ # An array of diagnostics to be collected by Deployment Manager, these diagnostics will be displayed to the user.
              {
                &quot;field&quot;: &quot;A String&quot;, # JsonPath expression on the resource that if non empty, indicates that this field needs to be extracted as a diagnostic.
                &quot;level&quot;: &quot;A String&quot;, # Level to record this diagnostic.
              },
            ],
            &quot;failCondition&quot;: &quot;A String&quot;, # JsonPath expression that determines if the request failed.
            &quot;finishCondition&quot;: &quot;A String&quot;, # JsonPath expression that determines if the request is completed.
            &quot;pollingLink&quot;: &quot;A String&quot;, # JsonPath expression that evaluates to string, it indicates where to poll.
            &quot;targetLink&quot;: &quot;A String&quot;, # JsonPath expression, after polling is completed, indicates where to fetch the resource.
          },
        },
      ],
      &quot;inputMappings&quot;: [ # The mappings that apply for requests.
        { # InputMapping creates a &#x27;virtual&#x27; property that will be injected into the properties before sending the request to the underlying API.
          &quot;fieldName&quot;: &quot;A String&quot;, # The name of the field that is going to be injected.
          &quot;location&quot;: &quot;A String&quot;, # The location where this mapping applies.
          &quot;methodMatch&quot;: &quot;A String&quot;, # Regex to evaluate on method to decide if input applies.
          &quot;value&quot;: &quot;A String&quot;, # A jsonPath expression to select an element.
        },
      ],
      &quot;nameProperty&quot;: &quot;A String&quot;, # The json path to the field in the resource JSON body into which the resource name should be mapped. Leaving this empty indicates that there should be no mapping performed.
      &quot;validationOptions&quot;: { # Options for how to validate and process properties on a resource. # Options for how to validate and process properties on a resource.
        &quot;schemaValidation&quot;: &quot;A String&quot;, # Customize how deployment manager will validate the resource against schema errors.
        &quot;undeclaredProperties&quot;: &quot;A String&quot;, # Specify what to do with extra properties when executing a request.
      },
    },
  },
  &quot;description&quot;: &quot;A String&quot;, # An optional textual description of the resource; provided by the client when the resource is created.
  &quot;id&quot;: &quot;A String&quot;,
  &quot;insertTime&quot;: &quot;A String&quot;, # Output only. Creation timestamp in RFC3339 text format.
  &quot;labels&quot;: [ # Map of One Platform labels; provided by the client when the resource is created or updated. Specifically: Label keys must be between 1 and 63 characters long and must conform to the following regular expression: `[a-z]([-a-z0-9]*[a-z0-9])?` Label values must be between 0 and 63 characters long and must conform to the regular expression `([a-z]([-a-z0-9]*[a-z0-9])?)?`.
    { # Label object for Types
      &quot;key&quot;: &quot;A String&quot;, # Key of the label
      &quot;value&quot;: &quot;A String&quot;, # Value of the label
    },
  ],
  &quot;name&quot;: &quot;A String&quot;, # Name of the type.
  &quot;operation&quot;: { # Represents an Operation resource. Google Compute Engine has three Operation resources: * [Global](/compute/docs/reference/rest/{$api_version}/globalOperations) * [Regional](/compute/docs/reference/rest/{$api_version}/regionOperations) * [Zonal](/compute/docs/reference/rest/{$api_version}/zoneOperations) You can use an operation resource to manage asynchronous API requests. For more information, read Handling API responses. Operations can be global, regional or zonal. - For global operations, use the `globalOperations` resource. - For regional operations, use the `regionOperations` resource. - For zonal operations, use the `zonalOperations` resource. For more information, read Global, Regional, and Zonal Resources. # Output only. The Operation that most recently ran, or is currently running, on this type.
    &quot;clientOperationId&quot;: &quot;A String&quot;, # [Output Only] The value of `requestId` if you provided it in the request. Not present otherwise.
    &quot;creationTimestamp&quot;: &quot;A String&quot;, # [Deprecated] This field is deprecated.
    &quot;description&quot;: &quot;A String&quot;, # [Output Only] A textual description of the operation, which is set when the operation is created.
    &quot;endTime&quot;: &quot;A String&quot;, # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
    &quot;error&quot;: { # [Output Only] If errors are generated during processing of the operation, this field will be populated.
      &quot;errors&quot;: [ # [Output Only] The array of errors encountered while processing this operation.
        {
          &quot;code&quot;: &quot;A String&quot;, # [Output Only] The error type identifier for this error.
          &quot;location&quot;: &quot;A String&quot;, # [Output Only] Indicates the field in the request that caused the error. This property is optional.
          &quot;message&quot;: &quot;A String&quot;, # [Output Only] An optional, human-readable error message.
        },
      ],
    },
    &quot;httpErrorMessage&quot;: &quot;A String&quot;, # [Output Only] If the operation fails, this field contains the HTTP error message that was returned, such as `NOT FOUND`.
    &quot;httpErrorStatusCode&quot;: 42, # [Output Only] If the operation fails, this field contains the HTTP error status code that was returned. For example, a `404` means the resource was not found.
    &quot;id&quot;: &quot;A String&quot;, # [Output Only] The unique identifier for the operation. This identifier is defined by the server.
    &quot;insertTime&quot;: &quot;A String&quot;, # [Output Only] The time that this operation was requested. This value is in RFC3339 text format.
    &quot;kind&quot;: &quot;deploymentmanager#operation&quot;, # [Output Only] Type of the resource. Always `compute#operation` for Operation resources.
    &quot;name&quot;: &quot;A String&quot;, # [Output Only] Name of the operation.
    &quot;operationGroupId&quot;: &quot;A String&quot;, # [Output Only] An ID that represents a group of operations, such as when a group of operations results from a `bulkInsert` API request.
    &quot;operationType&quot;: &quot;A String&quot;, # [Output Only] The type of operation, such as `insert`, `update`, or `delete`, and so on.
    &quot;progress&quot;: 42, # [Output Only] An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess when the operation will be complete. This number should monotonically increase as the operation progresses.
    &quot;region&quot;: &quot;A String&quot;, # [Output Only] The URL of the region where the operation resides. Only applicable when performing regional operations.
    &quot;selfLink&quot;: &quot;A String&quot;, # [Output Only] Server-defined URL for the resource.
    &quot;startTime&quot;: &quot;A String&quot;, # [Output Only] The time that this operation was started by the server. This value is in RFC3339 text format.
    &quot;status&quot;: &quot;A String&quot;, # [Output Only] The status of the operation, which can be one of the following: `PENDING`, `RUNNING`, or `DONE`.
    &quot;statusMessage&quot;: &quot;A String&quot;, # [Output Only] An optional textual description of the current status of the operation.
    &quot;targetId&quot;: &quot;A String&quot;, # [Output Only] The unique target ID, which identifies a specific incarnation of the target resource.
    &quot;targetLink&quot;: &quot;A String&quot;, # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
    &quot;user&quot;: &quot;A String&quot;, # [Output Only] User who requested the operation, for example: `user@example.com`.
    &quot;warnings&quot;: [ # [Output Only] If warning messages are generated during processing of the operation, this field will be populated.
      {
        &quot;code&quot;: &quot;A String&quot;, # [Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.
        &quot;data&quot;: [ # [Output Only] Metadata about this warning in key: value format. For example: &quot;data&quot;: [ { &quot;key&quot;: &quot;scope&quot;, &quot;value&quot;: &quot;zones/us-east1-d&quot; }
          {
            &quot;key&quot;: &quot;A String&quot;, # [Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).
            &quot;value&quot;: &quot;A String&quot;, # [Output Only] A warning data value corresponding to the key.
          },
        ],
        &quot;message&quot;: &quot;A String&quot;, # [Output Only] A human-readable description of the warning code.
      },
    ],
    &quot;zone&quot;: &quot;A String&quot;, # [Output Only] The URL of the zone where the operation resides. Only applicable when performing per-zone operations.
  },
  &quot;selfLink&quot;: &quot;A String&quot;, # Output only. Server defined URL for the resource.
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(project, filter=None, maxResults=None, orderBy=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists all resource types for Deployment Manager.

Args:
  project: string, The project ID for this request. (required)
  filter: string, A filter expression that filters resources listed in the response. The expression must specify the field name, an operator, and the value that you want to use for filtering. The value must be a string, a number, or a boolean. The operator must be either `=`, `!=`, `&gt;`, `&lt;`, `&lt;=`, `&gt;=` or `:`. For example, if you are filtering Compute Engine instances, you can exclude instances named `example-instance` by specifying `name != example-instance`. The `:` operator can be used with string fields to match substrings. For non-string fields it is equivalent to the `=` operator. The `:*` comparison can be used to test whether a key has been defined. For example, to find all objects with `owner` label use: ``` labels.owner:* ``` You can also filter nested fields. For example, you could specify `scheduling.automaticRestart = false` to include instances only if they are not scheduled for automatic restarts. You can use filtering on nested fields to filter based on resource labels. To filter on multiple expressions, provide each separate expression within parentheses. For example: ``` (scheduling.automaticRestart = true) (cpuPlatform = &quot;Intel Skylake&quot;) ``` By default, each expression is an `AND` expression. However, you can include `AND` and `OR` expressions explicitly. For example: ``` (cpuPlatform = &quot;Intel Skylake&quot;) OR (cpuPlatform = &quot;Intel Broadwell&quot;) AND (scheduling.automaticRestart = true) ```
  maxResults: integer, The maximum number of results per page that should be returned. If the number of available results is larger than `maxResults`, Compute Engine returns a `nextPageToken` that can be used to get the next page of results in subsequent list requests. Acceptable values are `0` to `500`, inclusive. (Default: `500`)
  orderBy: string, Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name. You can also sort results in descending order based on the creation timestamp using `orderBy=&quot;creationTimestamp desc&quot;`. This sorts results based on the `creationTimestamp` field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first. Currently, only sorting by `name` or `creationTimestamp desc` is supported.
  pageToken: string, Specifies a page token to use. Set `pageToken` to the `nextPageToken` returned by a previous list request to get the next page of results.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A response that returns all Types supported by Deployment Manager
  &quot;nextPageToken&quot;: &quot;A String&quot;, # A token used to continue a truncated list request.
  &quot;types&quot;: [ # Output only. A list of resource types supported by Deployment Manager.
    { # A resource type supported by Deployment Manager.
      &quot;base&quot;: { # BaseType that describes a service-backed Type. # Base Type (configurable service) that backs this Type.
        &quot;collectionOverrides&quot;: [ # Allows resource handling overrides for specific collections
          { # CollectionOverride allows resource handling overrides for specific resources within a BaseType
            &quot;collection&quot;: &quot;A String&quot;, # The collection that identifies this resource within its service.
            &quot;methodMap&quot;: { # Deployment Manager will call these methods during the events of creation/deletion/update/get/setIamPolicy # Custom verb method mappings to support unordered list API mappings.
              &quot;create&quot;: &quot;A String&quot;, # The action identifier for the create method to be used for this collection
              &quot;delete&quot;: &quot;A String&quot;, # The action identifier for the delete method to be used for this collection
              &quot;get&quot;: &quot;A String&quot;, # The action identifier for the get method to be used for this collection
              &quot;setIamPolicy&quot;: &quot;A String&quot;, # The action identifier for the setIamPolicy method to be used for this collection
              &quot;update&quot;: &quot;A String&quot;, # The action identifier for the update method to be used for this collection
            },
            &quot;options&quot;: { # Options allows customized resource handling by Deployment Manager. # The options to apply to this resource-level override
              &quot;asyncOptions&quot;: [ # Options regarding how to thread async requests.
                { # Async options that determine when a resource should finish.
                  &quot;methodMatch&quot;: &quot;A String&quot;, # Method regex where this policy will apply.
                  &quot;pollingOptions&quot;: { # Deployment manager will poll instances for this API resource setting a RUNNING state, and blocking until polling conditions tell whether the resource is completed or failed.
                    &quot;diagnostics&quot;: [ # An array of diagnostics to be collected by Deployment Manager, these diagnostics will be displayed to the user.
                      {
                        &quot;field&quot;: &quot;A String&quot;, # JsonPath expression on the resource that if non empty, indicates that this field needs to be extracted as a diagnostic.
                        &quot;level&quot;: &quot;A String&quot;, # Level to record this diagnostic.
                      },
                    ],
                    &quot;failCondition&quot;: &quot;A String&quot;, # JsonPath expression that determines if the request failed.
                    &quot;finishCondition&quot;: &quot;A String&quot;, # JsonPath expression that determines if the request is completed.
                    &quot;pollingLink&quot;: &quot;A String&quot;, # JsonPath expression that evaluates to string, it indicates where to poll.
                    &quot;targetLink&quot;: &quot;A String&quot;, # JsonPath expression, after polling is completed, indicates where to fetch the resource.
                  },
                },
              ],
              &quot;inputMappings&quot;: [ # The mappings that apply for requests.
                { # InputMapping creates a &#x27;virtual&#x27; property that will be injected into the properties before sending the request to the underlying API.
                  &quot;fieldName&quot;: &quot;A String&quot;, # The name of the field that is going to be injected.
                  &quot;location&quot;: &quot;A String&quot;, # The location where this mapping applies.
                  &quot;methodMatch&quot;: &quot;A String&quot;, # Regex to evaluate on method to decide if input applies.
                  &quot;value&quot;: &quot;A String&quot;, # A jsonPath expression to select an element.
                },
              ],
              &quot;nameProperty&quot;: &quot;A String&quot;, # The json path to the field in the resource JSON body into which the resource name should be mapped. Leaving this empty indicates that there should be no mapping performed.
              &quot;validationOptions&quot;: { # Options for how to validate and process properties on a resource. # Options for how to validate and process properties on a resource.
                &quot;schemaValidation&quot;: &quot;A String&quot;, # Customize how deployment manager will validate the resource against schema errors.
                &quot;undeclaredProperties&quot;: &quot;A String&quot;, # Specify what to do with extra properties when executing a request.
              },
            },
          },
        ],
        &quot;credential&quot;: { # The credential used by Deployment Manager and TypeProvider. Only one of the options is permitted. # Credential used when interacting with this type.
          &quot;basicAuth&quot;: { # Basic Auth used as a credential. # Basic Auth Credential, only used by TypeProvider.
            &quot;password&quot;: &quot;A String&quot;,
            &quot;user&quot;: &quot;A String&quot;,
          },
          &quot;serviceAccount&quot;: { # Service Account used as a credential. # Service Account Credential, only used by Deployment.
            &quot;email&quot;: &quot;A String&quot;, # The IAM service account email address like test@myproject.iam.gserviceaccount.com
          },
          &quot;useProjectDefault&quot;: True or False, # Specify to use the project default credential, only supported by Deployment.
        },
        &quot;descriptorUrl&quot;: &quot;A String&quot;, # Descriptor Url for the this type.
        &quot;options&quot;: { # Options allows customized resource handling by Deployment Manager. # Options to apply when handling any resources in this service.
          &quot;asyncOptions&quot;: [ # Options regarding how to thread async requests.
            { # Async options that determine when a resource should finish.
              &quot;methodMatch&quot;: &quot;A String&quot;, # Method regex where this policy will apply.
              &quot;pollingOptions&quot;: { # Deployment manager will poll instances for this API resource setting a RUNNING state, and blocking until polling conditions tell whether the resource is completed or failed.
                &quot;diagnostics&quot;: [ # An array of diagnostics to be collected by Deployment Manager, these diagnostics will be displayed to the user.
                  {
                    &quot;field&quot;: &quot;A String&quot;, # JsonPath expression on the resource that if non empty, indicates that this field needs to be extracted as a diagnostic.
                    &quot;level&quot;: &quot;A String&quot;, # Level to record this diagnostic.
                  },
                ],
                &quot;failCondition&quot;: &quot;A String&quot;, # JsonPath expression that determines if the request failed.
                &quot;finishCondition&quot;: &quot;A String&quot;, # JsonPath expression that determines if the request is completed.
                &quot;pollingLink&quot;: &quot;A String&quot;, # JsonPath expression that evaluates to string, it indicates where to poll.
                &quot;targetLink&quot;: &quot;A String&quot;, # JsonPath expression, after polling is completed, indicates where to fetch the resource.
              },
            },
          ],
          &quot;inputMappings&quot;: [ # The mappings that apply for requests.
            { # InputMapping creates a &#x27;virtual&#x27; property that will be injected into the properties before sending the request to the underlying API.
              &quot;fieldName&quot;: &quot;A String&quot;, # The name of the field that is going to be injected.
              &quot;location&quot;: &quot;A String&quot;, # The location where this mapping applies.
              &quot;methodMatch&quot;: &quot;A String&quot;, # Regex to evaluate on method to decide if input applies.
              &quot;value&quot;: &quot;A String&quot;, # A jsonPath expression to select an element.
            },
          ],
          &quot;nameProperty&quot;: &quot;A String&quot;, # The json path to the field in the resource JSON body into which the resource name should be mapped. Leaving this empty indicates that there should be no mapping performed.
          &quot;validationOptions&quot;: { # Options for how to validate and process properties on a resource. # Options for how to validate and process properties on a resource.
            &quot;schemaValidation&quot;: &quot;A String&quot;, # Customize how deployment manager will validate the resource against schema errors.
            &quot;undeclaredProperties&quot;: &quot;A String&quot;, # Specify what to do with extra properties when executing a request.
          },
        },
      },
      &quot;description&quot;: &quot;A String&quot;, # An optional textual description of the resource; provided by the client when the resource is created.
      &quot;id&quot;: &quot;A String&quot;,
      &quot;insertTime&quot;: &quot;A String&quot;, # Output only. Creation timestamp in RFC3339 text format.
      &quot;labels&quot;: [ # Map of One Platform labels; provided by the client when the resource is created or updated. Specifically: Label keys must be between 1 and 63 characters long and must conform to the following regular expression: `[a-z]([-a-z0-9]*[a-z0-9])?` Label values must be between 0 and 63 characters long and must conform to the regular expression `([a-z]([-a-z0-9]*[a-z0-9])?)?`.
        { # Label object for Types
          &quot;key&quot;: &quot;A String&quot;, # Key of the label
          &quot;value&quot;: &quot;A String&quot;, # Value of the label
        },
      ],
      &quot;name&quot;: &quot;A String&quot;, # Name of the type.
      &quot;operation&quot;: { # Represents an Operation resource. Google Compute Engine has three Operation resources: * [Global](/compute/docs/reference/rest/{$api_version}/globalOperations) * [Regional](/compute/docs/reference/rest/{$api_version}/regionOperations) * [Zonal](/compute/docs/reference/rest/{$api_version}/zoneOperations) You can use an operation resource to manage asynchronous API requests. For more information, read Handling API responses. Operations can be global, regional or zonal. - For global operations, use the `globalOperations` resource. - For regional operations, use the `regionOperations` resource. - For zonal operations, use the `zonalOperations` resource. For more information, read Global, Regional, and Zonal Resources. # Output only. The Operation that most recently ran, or is currently running, on this type.
        &quot;clientOperationId&quot;: &quot;A String&quot;, # [Output Only] The value of `requestId` if you provided it in the request. Not present otherwise.
        &quot;creationTimestamp&quot;: &quot;A String&quot;, # [Deprecated] This field is deprecated.
        &quot;description&quot;: &quot;A String&quot;, # [Output Only] A textual description of the operation, which is set when the operation is created.
        &quot;endTime&quot;: &quot;A String&quot;, # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
        &quot;error&quot;: { # [Output Only] If errors are generated during processing of the operation, this field will be populated.
          &quot;errors&quot;: [ # [Output Only] The array of errors encountered while processing this operation.
            {
              &quot;code&quot;: &quot;A String&quot;, # [Output Only] The error type identifier for this error.
              &quot;location&quot;: &quot;A String&quot;, # [Output Only] Indicates the field in the request that caused the error. This property is optional.
              &quot;message&quot;: &quot;A String&quot;, # [Output Only] An optional, human-readable error message.
            },
          ],
        },
        &quot;httpErrorMessage&quot;: &quot;A String&quot;, # [Output Only] If the operation fails, this field contains the HTTP error message that was returned, such as `NOT FOUND`.
        &quot;httpErrorStatusCode&quot;: 42, # [Output Only] If the operation fails, this field contains the HTTP error status code that was returned. For example, a `404` means the resource was not found.
        &quot;id&quot;: &quot;A String&quot;, # [Output Only] The unique identifier for the operation. This identifier is defined by the server.
        &quot;insertTime&quot;: &quot;A String&quot;, # [Output Only] The time that this operation was requested. This value is in RFC3339 text format.
        &quot;kind&quot;: &quot;deploymentmanager#operation&quot;, # [Output Only] Type of the resource. Always `compute#operation` for Operation resources.
        &quot;name&quot;: &quot;A String&quot;, # [Output Only] Name of the operation.
        &quot;operationGroupId&quot;: &quot;A String&quot;, # [Output Only] An ID that represents a group of operations, such as when a group of operations results from a `bulkInsert` API request.
        &quot;operationType&quot;: &quot;A String&quot;, # [Output Only] The type of operation, such as `insert`, `update`, or `delete`, and so on.
        &quot;progress&quot;: 42, # [Output Only] An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess when the operation will be complete. This number should monotonically increase as the operation progresses.
        &quot;region&quot;: &quot;A String&quot;, # [Output Only] The URL of the region where the operation resides. Only applicable when performing regional operations.
        &quot;selfLink&quot;: &quot;A String&quot;, # [Output Only] Server-defined URL for the resource.
        &quot;startTime&quot;: &quot;A String&quot;, # [Output Only] The time that this operation was started by the server. This value is in RFC3339 text format.
        &quot;status&quot;: &quot;A String&quot;, # [Output Only] The status of the operation, which can be one of the following: `PENDING`, `RUNNING`, or `DONE`.
        &quot;statusMessage&quot;: &quot;A String&quot;, # [Output Only] An optional textual description of the current status of the operation.
        &quot;targetId&quot;: &quot;A String&quot;, # [Output Only] The unique target ID, which identifies a specific incarnation of the target resource.
        &quot;targetLink&quot;: &quot;A String&quot;, # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
        &quot;user&quot;: &quot;A String&quot;, # [Output Only] User who requested the operation, for example: `user@example.com`.
        &quot;warnings&quot;: [ # [Output Only] If warning messages are generated during processing of the operation, this field will be populated.
          {
            &quot;code&quot;: &quot;A String&quot;, # [Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.
            &quot;data&quot;: [ # [Output Only] Metadata about this warning in key: value format. For example: &quot;data&quot;: [ { &quot;key&quot;: &quot;scope&quot;, &quot;value&quot;: &quot;zones/us-east1-d&quot; }
              {
                &quot;key&quot;: &quot;A String&quot;, # [Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).
                &quot;value&quot;: &quot;A String&quot;, # [Output Only] A warning data value corresponding to the key.
              },
            ],
            &quot;message&quot;: &quot;A String&quot;, # [Output Only] A human-readable description of the warning code.
          },
        ],
        &quot;zone&quot;: &quot;A String&quot;, # [Output Only] The URL of the zone where the operation resides. Only applicable when performing per-zone operations.
      },
      &quot;selfLink&quot;: &quot;A String&quot;, # Output only. Server defined URL for the resource.
    },
  ],
}</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>

</body></html>