<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="compute_v1beta14.html">Compute Engine API</a> . <a href="compute_v1beta14.snapshots.html">snapshots</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#delete">delete(project, snapshot)</a></code></p>
<p class="firstline">Deletes the specified persistent disk snapshot resource.</p>
<p class="toc_element">
  <code><a href="#get">get(project, snapshot)</a></code></p>
<p class="firstline">Returns the specified persistent disk snapshot resource.</p>
<p class="toc_element">
  <code><a href="#insert">insert(project, body)</a></code></p>
<p class="firstline">Creates a persistent disk snapshot resource in the specified project using the data included in the request.</p>
<p class="toc_element">
  <code><a href="#list">list(project, maxResults=None, pageToken=None, filter=None)</a></code></p>
<p class="firstline">Retrieves the list of persistent disk snapshot resources contained within the specified 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, snapshot)</code>
  <pre>Deletes the specified persistent disk snapshot resource.

Args:
  project: string, Name of the project scoping this request. (required)
  snapshot: string, Name of the persistent disk snapshot resource to delete. (required)

Returns:
  An object of the form:

    { # An operation resource, used to manage asynchronous API requests.
    "status": "A String", # Status of the operation. Can be one of the following: "PENDING", "RUNNING", or "DONE" (output only).
    "kind": "compute#operation", # Type of the resource.
    "name": "A String", # Name of the resource (output only).
    "zone": "A String", # URL of the zone where the operation resides (output only).
    "warnings": [ # If warning messages generated during processing of this operation, this field will be populated (output only).
      {
        "message": "A String", # Optional human-readable details for this warning.
        "code": "A String", # 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", # The time that this operation was started by the server. This is in RFC 3339 format (output only).
    "httpErrorStatusCode": 42, # If operation fails, the HTTP error status code returned, e.g. 404. (output only).
    "user": "A String", # User who requested the operation, for example "user@example.com" (output only).
    "error": { # If errors occurred during processing of this operation, this field will be populated (output only).
      "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", # Unique target id which identifies a particular incarnation of the target (output only).
    "operationType": "A String", # Type of the operation. Examples include "insert", "update", and "delete" (output only).
    "statusMessage": "A String", # An optional textual description of the current status of the operation (output only).
    "insertTime": "A String", # The time that this operation was requested. This is in RFC 3339 format (output only).
    "httpErrorMessage": "A String", # If operation fails, the HTTP error message returned, e.g. NOT FOUND. (output only).
    "progress": 42, # 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 (output only).
    "clientOperationId": "A String", # An optional identifier specified by the client when the mutation was initiated. Must be unique for all operation resources in the project (output only).
    "endTime": "A String", # The time that this operation was completed. This is in RFC 3339 format (output only).
    "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
    "id": "A String", # Unique identifier for the resource; defined by the server (output only).
    "selfLink": "A String", # Server defined URL for the resource (output only).
    "targetLink": "A String", # URL of the resource the operation is mutating (output only).
  }</pre>
</div>

<div class="method">
    <code class="details" id="get">get(project, snapshot)</code>
  <pre>Returns the specified persistent disk snapshot resource.

Args:
  project: string, Name of the project scoping this request. (required)
  snapshot: string, Name of the persistent disk snapshot resource to return. (required)

Returns:
  An object of the form:

    { # A persistent disk snapshot resource.
      "status": "A String", # The status of the persistent disk snapshot (output only).
      "kind": "compute#snapshot", # Type of the resource.
      "description": "A String", # An optional textual description of the resource; provided by the client when the resource is created.
      "sourceDisk": "A String", # The source disk used to create this snapshot. Once the source disk has been deleted from the system, this field will be cleared, and will not be set even if a disk with the same name has been re-created.
      "sourceDiskId": "A String", # The 'id' value of the disk used to create this snapshot. This value may be used to determine whether the snapshot was taken from the current or a previous instance of a given disk name.
      "diskSizeGb": "A String", # Size of the persistent disk snapshot, specified in GB (output only).
      "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
      "id": "A String", # Unique identifier for the resource; defined by the server (output only).
      "selfLink": "A String", # Server defined URL for the resource (output only).
      "name": "A String", # Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035.
    }</pre>
</div>

<div class="method">
    <code class="details" id="insert">insert(project, body)</code>
  <pre>Creates a persistent disk snapshot resource in the specified project using the data included in the request.

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

{ # A persistent disk snapshot resource.
    "status": "A String", # The status of the persistent disk snapshot (output only).
    "kind": "compute#snapshot", # Type of the resource.
    "description": "A String", # An optional textual description of the resource; provided by the client when the resource is created.
    "sourceDisk": "A String", # The source disk used to create this snapshot. Once the source disk has been deleted from the system, this field will be cleared, and will not be set even if a disk with the same name has been re-created.
    "sourceDiskId": "A String", # The 'id' value of the disk used to create this snapshot. This value may be used to determine whether the snapshot was taken from the current or a previous instance of a given disk name.
    "diskSizeGb": "A String", # Size of the persistent disk snapshot, specified in GB (output only).
    "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
    "id": "A String", # Unique identifier for the resource; defined by the server (output only).
    "selfLink": "A String", # Server defined URL for the resource (output only).
    "name": "A String", # Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035.
  }


Returns:
  An object of the form:

    { # An operation resource, used to manage asynchronous API requests.
    "status": "A String", # Status of the operation. Can be one of the following: "PENDING", "RUNNING", or "DONE" (output only).
    "kind": "compute#operation", # Type of the resource.
    "name": "A String", # Name of the resource (output only).
    "zone": "A String", # URL of the zone where the operation resides (output only).
    "warnings": [ # If warning messages generated during processing of this operation, this field will be populated (output only).
      {
        "message": "A String", # Optional human-readable details for this warning.
        "code": "A String", # 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", # The time that this operation was started by the server. This is in RFC 3339 format (output only).
    "httpErrorStatusCode": 42, # If operation fails, the HTTP error status code returned, e.g. 404. (output only).
    "user": "A String", # User who requested the operation, for example "user@example.com" (output only).
    "error": { # If errors occurred during processing of this operation, this field will be populated (output only).
      "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", # Unique target id which identifies a particular incarnation of the target (output only).
    "operationType": "A String", # Type of the operation. Examples include "insert", "update", and "delete" (output only).
    "statusMessage": "A String", # An optional textual description of the current status of the operation (output only).
    "insertTime": "A String", # The time that this operation was requested. This is in RFC 3339 format (output only).
    "httpErrorMessage": "A String", # If operation fails, the HTTP error message returned, e.g. NOT FOUND. (output only).
    "progress": 42, # 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 (output only).
    "clientOperationId": "A String", # An optional identifier specified by the client when the mutation was initiated. Must be unique for all operation resources in the project (output only).
    "endTime": "A String", # The time that this operation was completed. This is in RFC 3339 format (output only).
    "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
    "id": "A String", # Unique identifier for the resource; defined by the server (output only).
    "selfLink": "A String", # Server defined URL for the resource (output only).
    "targetLink": "A String", # URL of the resource the operation is mutating (output only).
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(project, maxResults=None, pageToken=None, filter=None)</code>
  <pre>Retrieves the list of persistent disk snapshot resources contained within the specified project.

Args:
  project: string, Name of the project scoping this request. (required)
  maxResults: integer, Optional. Maximum count of results to be returned. Maximum and default value is 100.
  pageToken: string, Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a previous list request.
  filter: string, Optional. Filter expression for filtering listed resources.

Returns:
  An object of the form:

    { # Contains a list of persistent disk snapshot resources.
    "nextPageToken": "A String", # A token used to continue a truncated list request (output only).
    "items": [ # The persistent snapshot resources.
      { # A persistent disk snapshot resource.
          "status": "A String", # The status of the persistent disk snapshot (output only).
          "kind": "compute#snapshot", # Type of the resource.
          "description": "A String", # An optional textual description of the resource; provided by the client when the resource is created.
          "sourceDisk": "A String", # The source disk used to create this snapshot. Once the source disk has been deleted from the system, this field will be cleared, and will not be set even if a disk with the same name has been re-created.
          "sourceDiskId": "A String", # The 'id' value of the disk used to create this snapshot. This value may be used to determine whether the snapshot was taken from the current or a previous instance of a given disk name.
          "diskSizeGb": "A String", # Size of the persistent disk snapshot, specified in GB (output only).
          "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
          "id": "A String", # Unique identifier for the resource; defined by the server (output only).
          "selfLink": "A String", # Server defined URL for the resource (output only).
          "name": "A String", # Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035.
        },
    ],
    "kind": "compute#snapshotList", # Type of resource.
    "id": "A String", # Unique identifier for the resource; defined by the server (output only).
    "selfLink": "A String", # Server defined URL for this resource (output only).
  }</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>