<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">Google Cloud Deployment Manager Alpha API</a> . <a href="deploymentmanager_alpha.resources.html">resources</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#get">get(project, deployment, resource)</a></code></p>
<p class="firstline">Gets information about a single resource.</p>
<p class="toc_element">
  <code><a href="#list">list(project, deployment, orderBy=None, maxResults=None, pageToken=None, filter=None)</a></code></p>
<p class="firstline">Lists all resources in a given deployment.</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="get">get(project, deployment, resource)</code>
  <pre>Gets information about a single resource.

Args:
  project: string, The project ID for this request. (required)
  deployment: string, The name of the deployment for this request. (required)
  resource: string, The name of the resource for this request. (required)

Returns:
  An object of the form:

    {
    "accessControl": { # The access controls set on the resource. # The Access Control Policy set on this resource.
      "gcpIamPolicy": "A String", # The GCP IAM Policy to set on the resource.
    },
    "finalProperties": "A String", # Output only. The evaluated properties of the resource with references expanded. Returned as serialized YAML.
    "properties": "A String", # Output only. The current properties of the resource before any references have been filled in. Returned as serialized YAML.
    "name": "A String", # Output only. The name of the resource as it appears in the YAML config.
    "warnings": [ # Output only. If warning messages are generated during processing of this resource, this field will be populated.
      {
        "message": "A String", # [Output Only] A human-readable description of the warning code.
        "code": "A String", # [Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.
        "data": [ # [Output Only] Metadata about this warning in key: value format. For example:
            # "data": [ { "key": "scope", "value": "zones/us-east1-d" }
          {
            "value": "A String", # [Output Only] A warning data value corresponding to the key.
            "key": "A String", # [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).
          },
        ],
      },
    ],
    "url": "A String", # Output only. The URL of the actual resource.
    "runtimePolicies": [ # Output only. In case this is an action, it will show the runtimePolicies on which this action will run in the deployment
      "A String",
    ],
    "update": { # Output only. If Deployment Manager is currently updating or previewing an update to this resource, the updated configuration appears here.
      "accessControl": { # The access controls set on the resource. # The Access Control Policy to set on this resource after updating the resource itself.
        "gcpIamPolicy": "A String", # The GCP IAM Policy to set on the resource.
      },
      "credential": { # The credential used by Deployment Manager and TypeProvider. Only one of the options is permitted. # Output only. The credential that will be used creating/updating this resource.
        "serviceAccount": { # Service Account used as a credential. # Service Account Credential, only used by Deployment.
          "email": "A String", # The IAM service account email address like test@myproject.iam.gserviceaccount.com
        },
        "basicAuth": { # Basic Auth used as a credential. # Basic Auth Credential, only used by TypeProvider.
          "password": "A String",
          "user": "A String",
        },
        "useProjectDefault": True or False, # Specify to use the project default credential, only supported by Deployment.
      },
      "finalProperties": "A String", # Output only. The expanded properties of the resource with reference values expanded. Returned as serialized YAML.
      "warnings": [ # Output only. If warning messages are generated during processing of this resource, this field will be populated.
        {
          "message": "A String", # [Output Only] A human-readable description of the warning code.
          "code": "A String", # [Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.
          "data": [ # [Output Only] Metadata about this warning in key: value format. For example:
              # "data": [ { "key": "scope", "value": "zones/us-east1-d" }
            {
              "value": "A String", # [Output Only] A warning data value corresponding to the key.
              "key": "A String", # [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).
            },
          ],
        },
      ],
      "manifest": "A String", # Output only. URL of the manifest representing the update configuration of this resource.
      "state": "A String", # Output only. The state of the resource.
      "intent": "A String", # Output only. The intent of the resource: PREVIEW, UPDATE, or CANCEL.
      "error": { # Output only. If errors are generated during update of the resource, this field will be populated.
        "errors": [ # [Output Only] The array of errors encountered while processing this operation.
          {
            "message": "A String", # [Output Only] An optional, human-readable error message.
            "code": "A String", # [Output Only] The error type identifier for this error.
            "location": "A String", # [Output Only] Indicates the field in the request that caused the error. This property is optional.
          },
        ],
      },
      "runtimePolicies": [ # Output only. In case this is an action, it will show the runtimePolicies that this action will have after updating the deployment.
        "A String",
      ],
      "properties": "A String", # Output only. The set of updated properties for this resource, before references are expanded. Returned as serialized YAML.
    },
    "updateTime": "A String", # Output only. Update timestamp in RFC3339 text format.
    "manifest": "A String", # Output only. URL of the manifest representing the current configuration of this resource.
    "insertTime": "A String", # Output only. Creation timestamp in RFC3339 text format.
    "lastUsedCredential": { # The credential used by Deployment Manager and TypeProvider. Only one of the options is permitted. # Output only. The last used credential that successfully created/updated the resource.
      "serviceAccount": { # Service Account used as a credential. # Service Account Credential, only used by Deployment.
        "email": "A String", # The IAM service account email address like test@myproject.iam.gserviceaccount.com
      },
      "basicAuth": { # Basic Auth used as a credential. # Basic Auth Credential, only used by TypeProvider.
        "password": "A String",
        "user": "A String",
      },
      "useProjectDefault": True or False, # Specify to use the project default credential, only supported by Deployment.
    },
    "type": "A String", # Output only. The type of the resource, for example compute.v1.instance, or cloudfunctions.v1beta1.function.
    "id": "A String",
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(project, deployment, orderBy=None, maxResults=None, pageToken=None, filter=None)</code>
  <pre>Lists all resources in a given deployment.

Args:
  project: string, The project ID for this request. (required)
  deployment: string, The name of the deployment for this request. (required)
  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="creationTimestamp desc". 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.
  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)
  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.
  filter: string, A filter expression that filters resources listed in the response. The expression must specify the field name, a comparison operator, and the value that you want to use for filtering. The value must be a string, a number, or a boolean. The comparison operator must be either =, !=, >, or <.

For example, if you are filtering Compute Engine instances, you can exclude instances named example-instance by specifying name != example-instance.

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 = "Intel Skylake"). By default, each expression is an AND expression. However, you can include AND and OR expressions explicitly. For example, (cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true).

Returns:
  An object of the form:

    { # A response containing a partial list of resources and a page token used to build the next request if the request has been truncated.
    "nextPageToken": "A String", # A token used to continue a truncated list request.
    "resources": [ # Resources contained in this list response.
      {
        "accessControl": { # The access controls set on the resource. # The Access Control Policy set on this resource.
          "gcpIamPolicy": "A String", # The GCP IAM Policy to set on the resource.
        },
        "finalProperties": "A String", # Output only. The evaluated properties of the resource with references expanded. Returned as serialized YAML.
        "properties": "A String", # Output only. The current properties of the resource before any references have been filled in. Returned as serialized YAML.
        "name": "A String", # Output only. The name of the resource as it appears in the YAML config.
        "warnings": [ # Output only. If warning messages are generated during processing of this resource, this field will be populated.
          {
            "message": "A String", # [Output Only] A human-readable description of the warning code.
            "code": "A String", # [Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.
            "data": [ # [Output Only] Metadata about this warning in key: value format. For example:
                # "data": [ { "key": "scope", "value": "zones/us-east1-d" }
              {
                "value": "A String", # [Output Only] A warning data value corresponding to the key.
                "key": "A String", # [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).
              },
            ],
          },
        ],
        "url": "A String", # Output only. The URL of the actual resource.
        "runtimePolicies": [ # Output only. In case this is an action, it will show the runtimePolicies on which this action will run in the deployment
          "A String",
        ],
        "update": { # Output only. If Deployment Manager is currently updating or previewing an update to this resource, the updated configuration appears here.
          "accessControl": { # The access controls set on the resource. # The Access Control Policy to set on this resource after updating the resource itself.
            "gcpIamPolicy": "A String", # The GCP IAM Policy to set on the resource.
          },
          "credential": { # The credential used by Deployment Manager and TypeProvider. Only one of the options is permitted. # Output only. The credential that will be used creating/updating this resource.
            "serviceAccount": { # Service Account used as a credential. # Service Account Credential, only used by Deployment.
              "email": "A String", # The IAM service account email address like test@myproject.iam.gserviceaccount.com
            },
            "basicAuth": { # Basic Auth used as a credential. # Basic Auth Credential, only used by TypeProvider.
              "password": "A String",
              "user": "A String",
            },
            "useProjectDefault": True or False, # Specify to use the project default credential, only supported by Deployment.
          },
          "finalProperties": "A String", # Output only. The expanded properties of the resource with reference values expanded. Returned as serialized YAML.
          "warnings": [ # Output only. If warning messages are generated during processing of this resource, this field will be populated.
            {
              "message": "A String", # [Output Only] A human-readable description of the warning code.
              "code": "A String", # [Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.
              "data": [ # [Output Only] Metadata about this warning in key: value format. For example:
                  # "data": [ { "key": "scope", "value": "zones/us-east1-d" }
                {
                  "value": "A String", # [Output Only] A warning data value corresponding to the key.
                  "key": "A String", # [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).
                },
              ],
            },
          ],
          "manifest": "A String", # Output only. URL of the manifest representing the update configuration of this resource.
          "state": "A String", # Output only. The state of the resource.
          "intent": "A String", # Output only. The intent of the resource: PREVIEW, UPDATE, or CANCEL.
          "error": { # Output only. If errors are generated during update of the resource, this field will be populated.
            "errors": [ # [Output Only] The array of errors encountered while processing this operation.
              {
                "message": "A String", # [Output Only] An optional, human-readable error message.
                "code": "A String", # [Output Only] The error type identifier for this error.
                "location": "A String", # [Output Only] Indicates the field in the request that caused the error. This property is optional.
              },
            ],
          },
          "runtimePolicies": [ # Output only. In case this is an action, it will show the runtimePolicies that this action will have after updating the deployment.
            "A String",
          ],
          "properties": "A String", # Output only. The set of updated properties for this resource, before references are expanded. Returned as serialized YAML.
        },
        "updateTime": "A String", # Output only. Update timestamp in RFC3339 text format.
        "manifest": "A String", # Output only. URL of the manifest representing the current configuration of this resource.
        "insertTime": "A String", # Output only. Creation timestamp in RFC3339 text format.
        "lastUsedCredential": { # The credential used by Deployment Manager and TypeProvider. Only one of the options is permitted. # Output only. The last used credential that successfully created/updated the resource.
          "serviceAccount": { # Service Account used as a credential. # Service Account Credential, only used by Deployment.
            "email": "A String", # The IAM service account email address like test@myproject.iam.gserviceaccount.com
          },
          "basicAuth": { # Basic Auth used as a credential. # Basic Auth Credential, only used by TypeProvider.
            "password": "A String",
            "user": "A String",
          },
          "useProjectDefault": True or False, # Specify to use the project default credential, only supported by Deployment.
        },
        "type": "A String", # Output only. The type of the resource, for example compute.v1.instance, or cloudfunctions.v1beta1.function.
        "id": "A String",
      },
    ],
  }</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 'execute()' on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

</body></html>