<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_v2beta1.html">Google Cloud Deployment Manager API V2</a> . <a href="deploymentmanager_v2beta1.deployments.html">deployments</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#delete">delete(project, deployment)</a></code></p>
<p class="firstline">Deletes a deployment and all of the resources in the deployment.</p>
<p class="toc_element">
  <code><a href="#get">get(project, deployment)</a></code></p>
<p class="firstline">Gets information about a specific deployment.</p>
<p class="toc_element">
  <code><a href="#insert">insert(project, body)</a></code></p>
<p class="firstline">Creates a deployment and all of the resources described by the deployment manifest.</p>
<p class="toc_element">
  <code><a href="#list">list(project, pageToken=None, maxResults=None)</a></code></p>
<p class="firstline">Lists all deployments for a given project.</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="delete">delete(project, deployment)</code>
  <pre>Deletes a deployment and all of the resources in the deployment.

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

Returns:
  An object of the form:

    { # An operation resource, used to manage asynchronous API requests.
    "status": "A String", # [Output Only] Status of the operation. Can be one of the following: "PENDING", "RUNNING", or "DONE".
    "name": "A String", # [Output Only] Name of the operation.
    "warnings": [ # [Output Only] If warning messages generated during processing of this operation, this field will be populated.
      {
        "message": "A String", # Optional human-readable details for this warning.
        "code": "", # The warning type identifier for this warning.
        "data": [ # Metadata for this warning in 'key: value' format.
          {
            "value": "A String", # A warning data value corresponding to the key.
            "key": "A String", # A key for the warning data.
          },
        ],
      },
    ],
    "startTime": "A String", # [Output Only] The time that this operation was started by the server. This is in RFC 3339 format.
    "httpErrorStatusCode": 42, # [Output Only] If operation fails, the HTTP error status code returned, e.g. 404.
    "user": "A String", # [Output Only] User who requested the operation, for example "user@example.com"
    "error": { # [Output Only] If errors occurred during processing of this operation, this field will be populated.
      "errors": [ # The array of errors encountered while processing this operation.
        {
          "message": "A String", # An optional, human-readable error message.
          "code": "A String", # The error type identifier for this error.
          "location": "A String", # Indicates the field in the request which caused the error. This property is optional.
        },
      ],
    },
    "targetId": "A String", # [Output Only] Unique target id which identifies a particular incarnation of the target.
    "operationType": "A String", # [Output Only] Type of the operation. Examples include "insert", or "delete"
    "statusMessage": "A String", # [Output Only] An optional textual description of the current status of the operation.
    "insertTime": "A String", # [Output Only] The time that this operation was requested. This is in RFC 3339 format.
    "httpErrorMessage": "A String", # [Output Only] If operation fails, the HTTP error message returned, e.g. NOT FOUND.
    "progress": 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 at when the operation will be complete. This number should be monotonically increasing as the operation progresses.
    "endTime": "A String", # [Output Only] The time that this operation was completed. This is in RFC3339 format.
    "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
    "id": "A String", # [Output Only] Unique identifier for the resource; defined by the server.
    "selfLink": "A String", # [Output Only] Self link for the manifest.
    "targetLink": "A String", # [Output Only] URL of the resource the operation is mutating.
  }</pre>
</div>

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

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

Returns:
  An object of the form:

    {
      "targetConfig": "A String", # [Input Only] The YAML configuration to use in processing this deployment.
          #
          # When you create a deployment, the server creates a new manifest with the given YAML configuration and sets the `manifest` property to the URL of the manifest resource.
      "manifest": "A String", # [Output Only] URL of the manifest representing the full configuration of this deployment.
      "description": "A String", # An optional user-provided description of the deployment.
      "name": "A String", # The name of the deployment, which must be unique within the project.
      "id": "A String", # [Output Only] Unique identifier for the resource; defined by the server.
    }</pre>
</div>

<div class="method">
    <code class="details" id="insert">insert(project, body)</code>
  <pre>Creates a deployment and all of the resources described by the deployment manifest.

Args:
  project: string, The project ID for this request. (required)
  body: object, The request body. (required)
    The object takes the form of:

{
    "targetConfig": "A String", # [Input Only] The YAML configuration to use in processing this deployment.
        # 
        # When you create a deployment, the server creates a new manifest with the given YAML configuration and sets the `manifest` property to the URL of the manifest resource.
    "manifest": "A String", # [Output Only] URL of the manifest representing the full configuration of this deployment.
    "description": "A String", # An optional user-provided description of the deployment.
    "name": "A String", # The name of the deployment, which must be unique within the project.
    "id": "A String", # [Output Only] Unique identifier for the resource; defined by the server.
  }


Returns:
  An object of the form:

    { # An operation resource, used to manage asynchronous API requests.
    "status": "A String", # [Output Only] Status of the operation. Can be one of the following: "PENDING", "RUNNING", or "DONE".
    "name": "A String", # [Output Only] Name of the operation.
    "warnings": [ # [Output Only] If warning messages generated during processing of this operation, this field will be populated.
      {
        "message": "A String", # Optional human-readable details for this warning.
        "code": "", # The warning type identifier for this warning.
        "data": [ # Metadata for this warning in 'key: value' format.
          {
            "value": "A String", # A warning data value corresponding to the key.
            "key": "A String", # A key for the warning data.
          },
        ],
      },
    ],
    "startTime": "A String", # [Output Only] The time that this operation was started by the server. This is in RFC 3339 format.
    "httpErrorStatusCode": 42, # [Output Only] If operation fails, the HTTP error status code returned, e.g. 404.
    "user": "A String", # [Output Only] User who requested the operation, for example "user@example.com"
    "error": { # [Output Only] If errors occurred during processing of this operation, this field will be populated.
      "errors": [ # The array of errors encountered while processing this operation.
        {
          "message": "A String", # An optional, human-readable error message.
          "code": "A String", # The error type identifier for this error.
          "location": "A String", # Indicates the field in the request which caused the error. This property is optional.
        },
      ],
    },
    "targetId": "A String", # [Output Only] Unique target id which identifies a particular incarnation of the target.
    "operationType": "A String", # [Output Only] Type of the operation. Examples include "insert", or "delete"
    "statusMessage": "A String", # [Output Only] An optional textual description of the current status of the operation.
    "insertTime": "A String", # [Output Only] The time that this operation was requested. This is in RFC 3339 format.
    "httpErrorMessage": "A String", # [Output Only] If operation fails, the HTTP error message returned, e.g. NOT FOUND.
    "progress": 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 at when the operation will be complete. This number should be monotonically increasing as the operation progresses.
    "endTime": "A String", # [Output Only] The time that this operation was completed. This is in RFC3339 format.
    "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
    "id": "A String", # [Output Only] Unique identifier for the resource; defined by the server.
    "selfLink": "A String", # [Output Only] Self link for the manifest.
    "targetLink": "A String", # [Output Only] URL of the resource the operation is mutating.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(project, pageToken=None, maxResults=None)</code>
  <pre>Lists all deployments for a given project.

Args:
  project: string, The project ID for this request. (required)
  pageToken: string, Specifies a nextPageToken returned by a previous list request. This token can be used to request the next page of results from a previous list request.
  maxResults: integer, Maximum count of results to be returned. Acceptable values are 0 to 100, inclusive. (Default: 50)

Returns:
  An object of the form:

    { # A response containing a partial list of deployments 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.
    "deployments": [ # The deployments contained in this response.
      {
          "targetConfig": "A String", # [Input Only] The YAML configuration to use in processing this deployment.
              #
              # When you create a deployment, the server creates a new manifest with the given YAML configuration and sets the `manifest` property to the URL of the manifest resource.
          "manifest": "A String", # [Output Only] URL of the manifest representing the full configuration of this deployment.
          "description": "A String", # An optional user-provided description of the deployment.
          "name": "A String", # The name of the deployment, which must be unique within the project.
          "id": "A String", # [Output Only] Unique identifier for the resource; defined by the server.
        },
    ],
  }</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>