<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="servicebroker_v1alpha1.html">Service Broker API</a> . <a href="servicebroker_v1alpha1.projects.html">projects</a> . <a href="servicebroker_v1alpha1.projects.brokers.html">brokers</a> . <a href="servicebroker_v1alpha1.projects.brokers.instances.html">instances</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="servicebroker_v1alpha1.projects.brokers.instances.service_bindings.html">service_bindings()</a></code>
</p>
<p class="firstline">Returns the service_bindings Resource.</p>

<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Gets the given service instance from the system.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="get">get(name, x__xgafv=None)</code>
  <pre>Gets the given service instance from the system.
This API is an extension and not part of the OSB spec.
Hence the path is a standard Google API URL.

Args:
  name: string, The resource name of the instance to return. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Message describing inputs to Provision and Update Service instance requests.
    "space_guid": "A String", # The identifier for the project space within the platform organization.
        # Required.
    "previous_values": { # Used only in UpdateServiceInstance request to optionally specify previous
        # fields.
      "a_key": "", # Properties of the object.
    },
    "plan_id": "A String", # The ID of the plan. See `Service` and `Plan` resources for details.
        # Maximum length is 64, GUID recommended.
        # Required.
    "parameters": { # Configuration options for the service instance.
        # Parameters is JSON object serialized to string.
      "a_key": "", # Properties of the object.
    },
    "organization_guid": "A String", # The platform GUID for the organization under which the service is to be
        # provisioned.
        # Required.
    "instance_id": "A String", # The id of the service instance. Must be unique within GCP project.
        # Maximum length is 64, GUID recommended.
        # Required.
    "deploymentName": "A String", # Output only.
        # Name of the Deployment Manager deployment used for provisioning of this
        # service instance.
    "context": { # Platform specific contextual information under which the service instance
        # is to be provisioned. This replaces organization_guid and space_guid.
        # But can also contain anything.
        # Currently only used for logging context information.
      "a_key": "", # Properties of the object.
    },
    "service_id": "A String", # The id of the service. Must be a valid identifier of a service
        # contained in the list from a `ListServices()` call.
        # Maximum length is 64, GUID recommended.
        # Required.
    "resourceName": "A String", # Output only.
        # The resource name of the instance, e.g.
        # projects/project_id/brokers/broker_id/service_instances/instance_id
    "createTime": "A String", # Output only.
        # Timestamp for when the instance was created.
  }</pre>
</div>

</body></html>