<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_v1beta13.html">Compute Engine API</a> . <a href="compute_v1beta13.projects.html">projects</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#get">get(project)</a></code></p>
<p class="firstline">Returns the specified project resource.</p>
<p class="toc_element">
  <code><a href="#setCommonInstanceMetadata">setCommonInstanceMetadata(project, body)</a></code></p>
<p class="firstline">Sets metadata common to all instances within the specified project using the data included in the request.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="get">get(project)</code>
  <pre>Returns the specified project resource.

Args:
  project: string, Name of the project resource to retrieve. (required)

Returns:
  An object of the form:

    {
    "kind": "compute#project", # Type of the resource.
    "description": "A String", # An optional textual description of the resource.
    "commonInstanceMetadata": { # Metadata key/value pairs available to all instances contained in this project.
      "items": [ # Array of key/value pairs. The total size of all keys and values must be less than 512 KB.
        {
          "value": "A String", # Value for the metadata entry. These are free-form strings, and only have meaning as interpreted by the image running in the instance. The only restriction placed on values is that their size must be less than or equal to 32768 bytes.
          "key": "A String", # Key for the metadata entry. Keys must conform to the following regexp: [a-zA-Z0-9-_]+, and be less than 128 bytes in length. This is reflected as part of a URL in the metadata server. Additionally, to avoid ambiguity, keys must not conflict with any other metadata keys for the project.
        },
      ],
      "kind": "compute#metadata", # Type of the resource.
    },
    "externalIpAddresses": [ # Internet available IP addresses available for use in this project.
      "A String",
    ],
    "quotas": [ # Quotas assigned to this project.
      {
        "usage": 3.14, # Current usage of this metric.
        "metric": "A String", # Name of the quota metric.
        "limit": 3.14, # Quota limit for this metric.
      },
    ],
    "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.
  }</pre>
</div>

<div class="method">
    <code class="details" id="setCommonInstanceMetadata">setCommonInstanceMetadata(project, body)</code>
  <pre>Sets metadata common to all instances within 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:

{
  "items": [ # Array of key/value pairs. The total size of all keys and values must be less than 512 KB.
    {
      "value": "A String", # Value for the metadata entry. These are free-form strings, and only have meaning as interpreted by the image running in the instance. The only restriction placed on values is that their size must be less than or equal to 32768 bytes.
      "key": "A String", # Key for the metadata entry. Keys must conform to the following regexp: [a-zA-Z0-9-_]+, and be less than 128 bytes in length. This is reflected as part of a URL in the metadata server. Additionally, to avoid ambiguity, keys must not conflict with any other metadata keys for the project.
    },
  ],
  "kind": "compute#metadata", # Type of the resource.
}


Returns:
  An object of the form:

    {
    "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.
    "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>

</body></html>