<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="servicenetworking_v1.html">Service Networking API</a> . <a href="servicenetworking_v1.services.html">services</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="servicenetworking_v1.services.connections.html">connections()</a></code>
</p>
<p class="firstline">Returns the connections Resource.</p>

<p class="toc_element">
  <code><a href="#addSubnetwork">addSubnetwork(parent, body, x__xgafv=None)</a></code></p>
<p class="firstline">For service producers, provisions a new subnet in a</p>
<p class="toc_element">
  <code><a href="#searchRange">searchRange(parent, body, x__xgafv=None)</a></code></p>
<p class="firstline">Service producers can use this method to find a currently unused range</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="addSubnetwork">addSubnetwork(parent, body, x__xgafv=None)</code>
  <pre>For service producers, provisions a new subnet in a
peered service's shared VPC network in the requested region and with the
requested size that's expressed as a CIDR range (number of leading bits of
ipV4 network mask). The method checks against the assigned allocated ranges
to find a non-conflicting IP address range. The method will reuse a subnet
if subsequent calls contain the same subnet name, region, and prefix
length. This method will make producer's tenant project to be a shared VPC
service project as needed. The response from the `get` operation will be of
type `Subnetwork` if the operation successfully completes.

Args:
  parent: string, Required. A tenant project in the service producer organization, in the
following format: services/{service}/{collection-id}/{resource-id}.
{collection-id} is the cloud resource collection type that represents the
tenant project. Only `projects` are supported.
{resource-id} is the tenant project numeric id, such as
`123456`. {service} the name of the peering service, such as
`service-peering.example.com`. This service must already be
enabled in the service consumer's project. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # Request to create a subnetwork in a previously peered service network.
    "description": "A String", # An optional description of the subnet.
    "consumerNetwork": "A String", # Required. The name of the service consumer's VPC network. The network
        # must have an existing private connection that was provisioned through the
        # connections.create method. The name must be in the following format:
        # `projects/{project}/global/networks/{network}`, where {project}
        # is a project number, such as `12345`. {network} is the name of a
        # VPC network in the project.
    "region": "A String", # Required. The name of a [region](/compute/docs/regions-zones)
        # for the subnet, such `europe-west1`.
    "requestedAddress": "A String", # Optional. The starting address of a range. The address must be a valid
        # IPv4 address in the x.x.x.x format. This value combined with the IP prefix
        # range is the CIDR range for the subnet. The range must be within the
        # allocated range that is assigned to the private connection. If the CIDR
        # range isn't available, the call fails.
    "ipPrefixLength": 42, # Required. The prefix length of the subnet's IP address range.  Use CIDR
        # range notation, such as `30` to provision a subnet with an
        # `x.x.x.x/30` CIDR range. The IP address range is drawn from a
        # pool of available ranges in the service consumer's allocated range.
    "subnetwork": "A String", # Required. A name for the new subnet. For information about the naming
        # requirements, see [subnetwork](/compute/docs/reference/rest/v1/subnetworks)
        # in the Compute API documentation.
    "consumer": "A String", # Required. A resource that represents the service consumer, such as
        # `projects/123456`. The project number can be different from the
        # value in the consumer network parameter. For example, the network might be
        # part of a Shared VPC network. In those cases, Service Networking validates
        # that this resource belongs to that Shared VPC.
    "subnetworkUsers": [ # A list of members that are granted the `compute.networkUser`
        # role on the subnet.
      "A String",
    ],
  }

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a
      # network API call.
    "error": { # The `Status` type defines a logical error model that is suitable for # The error result of the operation in case of failure or cancellation.
        # different programming environments, including REST APIs and RPC APIs. It is
        # used by [gRPC](https://github.com/grpc). Each `Status` message contains
        # three pieces of data: error code, error message, and error details.
        #
        # You can find out more about this error model and how to work with it in the
        # [API Design Guide](https://cloud.google.com/apis/design/errors).
      "message": "A String", # A developer-facing error message, which should be in English. Any
          # user-facing error message should be localized and sent in the
          # google.rpc.Status.details field, or localized by the client.
      "code": 42, # The status code, which should be an enum value of google.rpc.Code.
      "details": [ # A list of messages that carry the error details.  There is a common set of
          # message types for APIs to use.
        {
          "a_key": "", # Properties of the object. Contains field @type with type URL.
        },
      ],
    },
    "done": True or False, # If the value is `false`, it means the operation is still in progress.
        # If `true`, the operation is completed, and either `error` or `response` is
        # available.
    "response": { # The normal response of the operation in case of success.  If the original
        # method returns no data on success, such as `Delete`, the response is
        # `google.protobuf.Empty`.  If the original method is standard
        # `Get`/`Create`/`Update`, the response should be the resource.  For other
        # methods, the response should have the type `XxxResponse`, where `Xxx`
        # is the original method name.  For example, if the original method name
        # is `TakeSnapshot()`, the inferred response type is
        # `TakeSnapshotResponse`.
      "a_key": "", # Properties of the object. Contains field @type with type URL.
    },
    "name": "A String", # The server-assigned name, which is only unique within the same service that
        # originally returns it. If you use the default HTTP mapping, the
        # `name` should be a resource name ending with `operations/{unique_id}`.
    "metadata": { # Service-specific metadata associated with the operation.  It typically
        # contains progress information and common metadata such as create time.
        # Some services might not provide such metadata.  Any method that returns a
        # long-running operation should document the metadata type, if any.
      "a_key": "", # Properties of the object. Contains field @type with type URL.
    },
  }</pre>
</div>

<div class="method">
    <code class="details" id="searchRange">searchRange(parent, body, x__xgafv=None)</code>
  <pre>Service producers can use this method to find a currently unused range
within consumer allocated ranges.   This returned range is not reserved,
and not guaranteed to remain unused.
It will validate previously provided allocated ranges, find
non-conflicting sub-range of requested size (expressed in
number of leading bits of ipv4 network mask, as in CIDR range
notation).
Operation<response: Range>

Args:
  parent: string, Required. This is in a form services/{service}.
{service} the name of the private access management service, for example
'service-peering.example.com'. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # Request to search for an unused range within allocated ranges.
    "ipPrefixLength": 42, # Required. The prefix length of the IP range.
        # Use usual CIDR range notation.
        # For example, '30' to find unused x.x.x.x/30 CIDR range.
        # Actual range will be determined using allocated range for the consumer
        # peered network and returned in the result.
    "network": "A String", # Network name in the consumer project.   This network must have been
        # already peered with a shared VPC network using CreateConnection
        # method.
        # Must be in a form 'projects/{project}/global/networks/{network}'.
        # {project} is a project number, as in '12345'
        # {network} is network name.
  }

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a
      # network API call.
    "error": { # The `Status` type defines a logical error model that is suitable for # The error result of the operation in case of failure or cancellation.
        # different programming environments, including REST APIs and RPC APIs. It is
        # used by [gRPC](https://github.com/grpc). Each `Status` message contains
        # three pieces of data: error code, error message, and error details.
        #
        # You can find out more about this error model and how to work with it in the
        # [API Design Guide](https://cloud.google.com/apis/design/errors).
      "message": "A String", # A developer-facing error message, which should be in English. Any
          # user-facing error message should be localized and sent in the
          # google.rpc.Status.details field, or localized by the client.
      "code": 42, # The status code, which should be an enum value of google.rpc.Code.
      "details": [ # A list of messages that carry the error details.  There is a common set of
          # message types for APIs to use.
        {
          "a_key": "", # Properties of the object. Contains field @type with type URL.
        },
      ],
    },
    "done": True or False, # If the value is `false`, it means the operation is still in progress.
        # If `true`, the operation is completed, and either `error` or `response` is
        # available.
    "response": { # The normal response of the operation in case of success.  If the original
        # method returns no data on success, such as `Delete`, the response is
        # `google.protobuf.Empty`.  If the original method is standard
        # `Get`/`Create`/`Update`, the response should be the resource.  For other
        # methods, the response should have the type `XxxResponse`, where `Xxx`
        # is the original method name.  For example, if the original method name
        # is `TakeSnapshot()`, the inferred response type is
        # `TakeSnapshotResponse`.
      "a_key": "", # Properties of the object. Contains field @type with type URL.
    },
    "name": "A String", # The server-assigned name, which is only unique within the same service that
        # originally returns it. If you use the default HTTP mapping, the
        # `name` should be a resource name ending with `operations/{unique_id}`.
    "metadata": { # Service-specific metadata associated with the operation.  It typically
        # contains progress information and common metadata such as create time.
        # Some services might not provide such metadata.  Any method that returns a
        # long-running operation should document the metadata type, if any.
      "a_key": "", # Properties of the object. Contains field @type with type URL.
    },
  }</pre>
</div>

</body></html>