<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="monitoring_v3.html">Cloud Monitoring API</a> . <a href="monitoring_v3.services.html">services</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="monitoring_v3.services.serviceLevelObjectives.html">serviceLevelObjectives()</a></code>
</p>
<p class="firstline">Returns the serviceLevelObjectives Resource.</p>

<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#create">create(parent, body=None, serviceId=None, x__xgafv=None)</a></code></p>
<p class="firstline">Create a Service.</p>
<p class="toc_element">
  <code><a href="#delete">delete(name, x__xgafv=None)</a></code></p>
<p class="firstline">Soft delete this Service.</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Get the named Service.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, filter=None, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">List Services for this workspace.</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>
<p class="toc_element">
  <code><a href="#patch">patch(name, body=None, updateMask=None, x__xgafv=None)</a></code></p>
<p class="firstline">Update this Service.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="create">create(parent, body=None, serviceId=None, x__xgafv=None)</code>
  <pre>Create a Service.

Args:
  parent: string, Required. Resource name (https://cloud.google.com/monitoring/api/v3#project_name) of the parent workspace. The format is: projects/[PROJECT_ID_OR_NUMBER]  (required)
  body: object, The request body.
    The object takes the form of:

{ # A Service is a discrete, autonomous, and network-accessible unit, designed to solve an individual concern (Wikipedia (https://en.wikipedia.org/wiki/Service-orientation)). In Cloud Monitoring, a Service acts as the root resource under which operational aspects of the service are accessible.
  &quot;appEngine&quot;: { # App Engine service. Learn more at https://cloud.google.com/appengine. # Type used for App Engine services.
    &quot;moduleId&quot;: &quot;A String&quot;, # The ID of the App Engine module underlying this service. Corresponds to the module_id resource label in the gae_app monitored resource: https://cloud.google.com/monitoring/api/resources#tag_gae_app
  },
  &quot;cloudEndpoints&quot;: { # Cloud Endpoints service. Learn more at https://cloud.google.com/endpoints. # Type used for Cloud Endpoints services.
    &quot;service&quot;: &quot;A String&quot;, # The name of the Cloud Endpoints service underlying this service. Corresponds to the service resource label in the api monitored resource: https://cloud.google.com/monitoring/api/resources#tag_api
  },
  &quot;clusterIstio&quot;: { # Istio service scoped to a single Kubernetes cluster. Learn more at https://istio.io. Clusters running OSS Istio will have their services ingested as this type. # Type used for Istio services that live in a Kubernetes cluster.
    &quot;clusterName&quot;: &quot;A String&quot;, # The name of the Kubernetes cluster in which this Istio service is defined. Corresponds to the cluster_name resource label in k8s_cluster resources.
    &quot;location&quot;: &quot;A String&quot;, # The location of the Kubernetes cluster in which this Istio service is defined. Corresponds to the location resource label in k8s_cluster resources.
    &quot;serviceName&quot;: &quot;A String&quot;, # The name of the Istio service underlying this service. Corresponds to the destination_service_name metric label in Istio metrics.
    &quot;serviceNamespace&quot;: &quot;A String&quot;, # The namespace of the Istio service underlying this service. Corresponds to the destination_service_namespace metric label in Istio metrics.
  },
  &quot;custom&quot;: { # Custom view of service telemetry. Currently a place-holder pending final design. # Custom service type.
  },
  &quot;displayName&quot;: &quot;A String&quot;, # Name used for UI elements listing this Service.
  &quot;istioCanonicalService&quot;: { # Canonical service scoped to an Istio mesh. Anthos clusters running ASM &gt;= 1.6.8 will have their services ingested as this type. # Type used for canonical services scoped to an Istio mesh. Metrics for Istio are documented here (https://istio.io/latest/docs/reference/config/metrics/)
    &quot;canonicalService&quot;: &quot;A String&quot;, # The name of the canonical service underlying this service. Corresponds to the destination_canonical_service_name metric label in label in Istio metrics (https://cloud.google.com/monitoring/api/metrics_istio).
    &quot;canonicalServiceNamespace&quot;: &quot;A String&quot;, # The namespace of the canonical service underlying this service. Corresponds to the destination_canonical_service_namespace metric label in Istio metrics (https://cloud.google.com/monitoring/api/metrics_istio).
    &quot;meshUid&quot;: &quot;A String&quot;, # Identifier for the Istio mesh in which this canonical service is defined. Corresponds to the mesh_uid metric label in Istio metrics (https://cloud.google.com/monitoring/api/metrics_istio).
  },
  &quot;meshIstio&quot;: { # Istio service scoped to an Istio mesh. Anthos clusters running ASM &lt; 1.6.8 will have their services ingested as this type. # Type used for Istio services scoped to an Istio mesh.
    &quot;meshUid&quot;: &quot;A String&quot;, # Identifier for the mesh in which this Istio service is defined. Corresponds to the mesh_uid metric label in Istio metrics.
    &quot;serviceName&quot;: &quot;A String&quot;, # The name of the Istio service underlying this service. Corresponds to the destination_service_name metric label in Istio metrics.
    &quot;serviceNamespace&quot;: &quot;A String&quot;, # The namespace of the Istio service underlying this service. Corresponds to the destination_service_namespace metric label in Istio metrics.
  },
  &quot;name&quot;: &quot;A String&quot;, # Resource name for this Service. The format is: projects/[PROJECT_ID_OR_NUMBER]/services/[SERVICE_ID]
  &quot;telemetry&quot;: { # Configuration for how to query telemetry on a Service. # Configuration for how to query telemetry on a Service.
    &quot;resourceName&quot;: &quot;A String&quot;, # The full name of the resource that defines this service. Formatted as described in https://cloud.google.com/apis/design/resource_names.
  },
}

  serviceId: string, Optional. The Service id to use for this Service. If omitted, an id will be generated instead. Must match the pattern [a-z0-9\-]+
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A Service is a discrete, autonomous, and network-accessible unit, designed to solve an individual concern (Wikipedia (https://en.wikipedia.org/wiki/Service-orientation)). In Cloud Monitoring, a Service acts as the root resource under which operational aspects of the service are accessible.
  &quot;appEngine&quot;: { # App Engine service. Learn more at https://cloud.google.com/appengine. # Type used for App Engine services.
    &quot;moduleId&quot;: &quot;A String&quot;, # The ID of the App Engine module underlying this service. Corresponds to the module_id resource label in the gae_app monitored resource: https://cloud.google.com/monitoring/api/resources#tag_gae_app
  },
  &quot;cloudEndpoints&quot;: { # Cloud Endpoints service. Learn more at https://cloud.google.com/endpoints. # Type used for Cloud Endpoints services.
    &quot;service&quot;: &quot;A String&quot;, # The name of the Cloud Endpoints service underlying this service. Corresponds to the service resource label in the api monitored resource: https://cloud.google.com/monitoring/api/resources#tag_api
  },
  &quot;clusterIstio&quot;: { # Istio service scoped to a single Kubernetes cluster. Learn more at https://istio.io. Clusters running OSS Istio will have their services ingested as this type. # Type used for Istio services that live in a Kubernetes cluster.
    &quot;clusterName&quot;: &quot;A String&quot;, # The name of the Kubernetes cluster in which this Istio service is defined. Corresponds to the cluster_name resource label in k8s_cluster resources.
    &quot;location&quot;: &quot;A String&quot;, # The location of the Kubernetes cluster in which this Istio service is defined. Corresponds to the location resource label in k8s_cluster resources.
    &quot;serviceName&quot;: &quot;A String&quot;, # The name of the Istio service underlying this service. Corresponds to the destination_service_name metric label in Istio metrics.
    &quot;serviceNamespace&quot;: &quot;A String&quot;, # The namespace of the Istio service underlying this service. Corresponds to the destination_service_namespace metric label in Istio metrics.
  },
  &quot;custom&quot;: { # Custom view of service telemetry. Currently a place-holder pending final design. # Custom service type.
  },
  &quot;displayName&quot;: &quot;A String&quot;, # Name used for UI elements listing this Service.
  &quot;istioCanonicalService&quot;: { # Canonical service scoped to an Istio mesh. Anthos clusters running ASM &gt;= 1.6.8 will have their services ingested as this type. # Type used for canonical services scoped to an Istio mesh. Metrics for Istio are documented here (https://istio.io/latest/docs/reference/config/metrics/)
    &quot;canonicalService&quot;: &quot;A String&quot;, # The name of the canonical service underlying this service. Corresponds to the destination_canonical_service_name metric label in label in Istio metrics (https://cloud.google.com/monitoring/api/metrics_istio).
    &quot;canonicalServiceNamespace&quot;: &quot;A String&quot;, # The namespace of the canonical service underlying this service. Corresponds to the destination_canonical_service_namespace metric label in Istio metrics (https://cloud.google.com/monitoring/api/metrics_istio).
    &quot;meshUid&quot;: &quot;A String&quot;, # Identifier for the Istio mesh in which this canonical service is defined. Corresponds to the mesh_uid metric label in Istio metrics (https://cloud.google.com/monitoring/api/metrics_istio).
  },
  &quot;meshIstio&quot;: { # Istio service scoped to an Istio mesh. Anthos clusters running ASM &lt; 1.6.8 will have their services ingested as this type. # Type used for Istio services scoped to an Istio mesh.
    &quot;meshUid&quot;: &quot;A String&quot;, # Identifier for the mesh in which this Istio service is defined. Corresponds to the mesh_uid metric label in Istio metrics.
    &quot;serviceName&quot;: &quot;A String&quot;, # The name of the Istio service underlying this service. Corresponds to the destination_service_name metric label in Istio metrics.
    &quot;serviceNamespace&quot;: &quot;A String&quot;, # The namespace of the Istio service underlying this service. Corresponds to the destination_service_namespace metric label in Istio metrics.
  },
  &quot;name&quot;: &quot;A String&quot;, # Resource name for this Service. The format is: projects/[PROJECT_ID_OR_NUMBER]/services/[SERVICE_ID]
  &quot;telemetry&quot;: { # Configuration for how to query telemetry on a Service. # Configuration for how to query telemetry on a Service.
    &quot;resourceName&quot;: &quot;A String&quot;, # The full name of the resource that defines this service. Formatted as described in https://cloud.google.com/apis/design/resource_names.
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(name, x__xgafv=None)</code>
  <pre>Soft delete this Service.

Args:
  name: string, Required. Resource name of the Service to delete. The format is: projects/[PROJECT_ID_OR_NUMBER]/services/[SERVICE_ID]  (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); } The JSON representation for Empty is empty JSON object {}.
}</pre>
</div>

<div class="method">
    <code class="details" id="get">get(name, x__xgafv=None)</code>
  <pre>Get the named Service.

Args:
  name: string, Required. Resource name of the Service. The format is: projects/[PROJECT_ID_OR_NUMBER]/services/[SERVICE_ID]  (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A Service is a discrete, autonomous, and network-accessible unit, designed to solve an individual concern (Wikipedia (https://en.wikipedia.org/wiki/Service-orientation)). In Cloud Monitoring, a Service acts as the root resource under which operational aspects of the service are accessible.
  &quot;appEngine&quot;: { # App Engine service. Learn more at https://cloud.google.com/appengine. # Type used for App Engine services.
    &quot;moduleId&quot;: &quot;A String&quot;, # The ID of the App Engine module underlying this service. Corresponds to the module_id resource label in the gae_app monitored resource: https://cloud.google.com/monitoring/api/resources#tag_gae_app
  },
  &quot;cloudEndpoints&quot;: { # Cloud Endpoints service. Learn more at https://cloud.google.com/endpoints. # Type used for Cloud Endpoints services.
    &quot;service&quot;: &quot;A String&quot;, # The name of the Cloud Endpoints service underlying this service. Corresponds to the service resource label in the api monitored resource: https://cloud.google.com/monitoring/api/resources#tag_api
  },
  &quot;clusterIstio&quot;: { # Istio service scoped to a single Kubernetes cluster. Learn more at https://istio.io. Clusters running OSS Istio will have their services ingested as this type. # Type used for Istio services that live in a Kubernetes cluster.
    &quot;clusterName&quot;: &quot;A String&quot;, # The name of the Kubernetes cluster in which this Istio service is defined. Corresponds to the cluster_name resource label in k8s_cluster resources.
    &quot;location&quot;: &quot;A String&quot;, # The location of the Kubernetes cluster in which this Istio service is defined. Corresponds to the location resource label in k8s_cluster resources.
    &quot;serviceName&quot;: &quot;A String&quot;, # The name of the Istio service underlying this service. Corresponds to the destination_service_name metric label in Istio metrics.
    &quot;serviceNamespace&quot;: &quot;A String&quot;, # The namespace of the Istio service underlying this service. Corresponds to the destination_service_namespace metric label in Istio metrics.
  },
  &quot;custom&quot;: { # Custom view of service telemetry. Currently a place-holder pending final design. # Custom service type.
  },
  &quot;displayName&quot;: &quot;A String&quot;, # Name used for UI elements listing this Service.
  &quot;istioCanonicalService&quot;: { # Canonical service scoped to an Istio mesh. Anthos clusters running ASM &gt;= 1.6.8 will have their services ingested as this type. # Type used for canonical services scoped to an Istio mesh. Metrics for Istio are documented here (https://istio.io/latest/docs/reference/config/metrics/)
    &quot;canonicalService&quot;: &quot;A String&quot;, # The name of the canonical service underlying this service. Corresponds to the destination_canonical_service_name metric label in label in Istio metrics (https://cloud.google.com/monitoring/api/metrics_istio).
    &quot;canonicalServiceNamespace&quot;: &quot;A String&quot;, # The namespace of the canonical service underlying this service. Corresponds to the destination_canonical_service_namespace metric label in Istio metrics (https://cloud.google.com/monitoring/api/metrics_istio).
    &quot;meshUid&quot;: &quot;A String&quot;, # Identifier for the Istio mesh in which this canonical service is defined. Corresponds to the mesh_uid metric label in Istio metrics (https://cloud.google.com/monitoring/api/metrics_istio).
  },
  &quot;meshIstio&quot;: { # Istio service scoped to an Istio mesh. Anthos clusters running ASM &lt; 1.6.8 will have their services ingested as this type. # Type used for Istio services scoped to an Istio mesh.
    &quot;meshUid&quot;: &quot;A String&quot;, # Identifier for the mesh in which this Istio service is defined. Corresponds to the mesh_uid metric label in Istio metrics.
    &quot;serviceName&quot;: &quot;A String&quot;, # The name of the Istio service underlying this service. Corresponds to the destination_service_name metric label in Istio metrics.
    &quot;serviceNamespace&quot;: &quot;A String&quot;, # The namespace of the Istio service underlying this service. Corresponds to the destination_service_namespace metric label in Istio metrics.
  },
  &quot;name&quot;: &quot;A String&quot;, # Resource name for this Service. The format is: projects/[PROJECT_ID_OR_NUMBER]/services/[SERVICE_ID]
  &quot;telemetry&quot;: { # Configuration for how to query telemetry on a Service. # Configuration for how to query telemetry on a Service.
    &quot;resourceName&quot;: &quot;A String&quot;, # The full name of the resource that defines this service. Formatted as described in https://cloud.google.com/apis/design/resource_names.
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, filter=None, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>List Services for this workspace.

Args:
  parent: string, Required. Resource name of the parent containing the listed services, either a project (https://cloud.google.com/monitoring/api/v3#project_name) or a Monitoring Workspace. The formats are: projects/[PROJECT_ID_OR_NUMBER] workspaces/[HOST_PROJECT_ID_OR_NUMBER]  (required)
  filter: string, A filter specifying what Services to return. The filter currently supports the following fields: - `identifier_case` - `app_engine.module_id` - `cloud_endpoints.service` (reserved for future use) - `mesh_istio.mesh_uid` - `mesh_istio.service_namespace` - `mesh_istio.service_name` - `cluster_istio.location` (deprecated) - `cluster_istio.cluster_name` (deprecated) - `cluster_istio.service_namespace` (deprecated) - `cluster_istio.service_name` (deprecated) identifier_case refers to which option in the identifier oneof is populated. For example, the filter identifier_case = &quot;CUSTOM&quot; would match all services with a value for the custom field. Valid options are &quot;CUSTOM&quot;, &quot;APP_ENGINE&quot;, &quot;MESH_ISTIO&quot;, plus &quot;CLUSTER_ISTIO&quot; (deprecated) and &quot;CLOUD_ENDPOINTS&quot; (reserved for future use).
  pageSize: integer, A non-negative number that is the maximum number of results to return. When 0, use default page size.
  pageToken: string, If this field is not empty then it must contain the nextPageToken value returned by a previous call to this method. Using this field causes the method to return additional results from the previous method call.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The ListServices response.
  &quot;nextPageToken&quot;: &quot;A String&quot;, # If there are more results than have been returned, then this field is set to a non-empty value. To see the additional results, use that value as page_token in the next call to this method.
  &quot;services&quot;: [ # The Services matching the specified filter.
    { # A Service is a discrete, autonomous, and network-accessible unit, designed to solve an individual concern (Wikipedia (https://en.wikipedia.org/wiki/Service-orientation)). In Cloud Monitoring, a Service acts as the root resource under which operational aspects of the service are accessible.
      &quot;appEngine&quot;: { # App Engine service. Learn more at https://cloud.google.com/appengine. # Type used for App Engine services.
        &quot;moduleId&quot;: &quot;A String&quot;, # The ID of the App Engine module underlying this service. Corresponds to the module_id resource label in the gae_app monitored resource: https://cloud.google.com/monitoring/api/resources#tag_gae_app
      },
      &quot;cloudEndpoints&quot;: { # Cloud Endpoints service. Learn more at https://cloud.google.com/endpoints. # Type used for Cloud Endpoints services.
        &quot;service&quot;: &quot;A String&quot;, # The name of the Cloud Endpoints service underlying this service. Corresponds to the service resource label in the api monitored resource: https://cloud.google.com/monitoring/api/resources#tag_api
      },
      &quot;clusterIstio&quot;: { # Istio service scoped to a single Kubernetes cluster. Learn more at https://istio.io. Clusters running OSS Istio will have their services ingested as this type. # Type used for Istio services that live in a Kubernetes cluster.
        &quot;clusterName&quot;: &quot;A String&quot;, # The name of the Kubernetes cluster in which this Istio service is defined. Corresponds to the cluster_name resource label in k8s_cluster resources.
        &quot;location&quot;: &quot;A String&quot;, # The location of the Kubernetes cluster in which this Istio service is defined. Corresponds to the location resource label in k8s_cluster resources.
        &quot;serviceName&quot;: &quot;A String&quot;, # The name of the Istio service underlying this service. Corresponds to the destination_service_name metric label in Istio metrics.
        &quot;serviceNamespace&quot;: &quot;A String&quot;, # The namespace of the Istio service underlying this service. Corresponds to the destination_service_namespace metric label in Istio metrics.
      },
      &quot;custom&quot;: { # Custom view of service telemetry. Currently a place-holder pending final design. # Custom service type.
      },
      &quot;displayName&quot;: &quot;A String&quot;, # Name used for UI elements listing this Service.
      &quot;istioCanonicalService&quot;: { # Canonical service scoped to an Istio mesh. Anthos clusters running ASM &gt;= 1.6.8 will have their services ingested as this type. # Type used for canonical services scoped to an Istio mesh. Metrics for Istio are documented here (https://istio.io/latest/docs/reference/config/metrics/)
        &quot;canonicalService&quot;: &quot;A String&quot;, # The name of the canonical service underlying this service. Corresponds to the destination_canonical_service_name metric label in label in Istio metrics (https://cloud.google.com/monitoring/api/metrics_istio).
        &quot;canonicalServiceNamespace&quot;: &quot;A String&quot;, # The namespace of the canonical service underlying this service. Corresponds to the destination_canonical_service_namespace metric label in Istio metrics (https://cloud.google.com/monitoring/api/metrics_istio).
        &quot;meshUid&quot;: &quot;A String&quot;, # Identifier for the Istio mesh in which this canonical service is defined. Corresponds to the mesh_uid metric label in Istio metrics (https://cloud.google.com/monitoring/api/metrics_istio).
      },
      &quot;meshIstio&quot;: { # Istio service scoped to an Istio mesh. Anthos clusters running ASM &lt; 1.6.8 will have their services ingested as this type. # Type used for Istio services scoped to an Istio mesh.
        &quot;meshUid&quot;: &quot;A String&quot;, # Identifier for the mesh in which this Istio service is defined. Corresponds to the mesh_uid metric label in Istio metrics.
        &quot;serviceName&quot;: &quot;A String&quot;, # The name of the Istio service underlying this service. Corresponds to the destination_service_name metric label in Istio metrics.
        &quot;serviceNamespace&quot;: &quot;A String&quot;, # The namespace of the Istio service underlying this service. Corresponds to the destination_service_namespace metric label in Istio metrics.
      },
      &quot;name&quot;: &quot;A String&quot;, # Resource name for this Service. The format is: projects/[PROJECT_ID_OR_NUMBER]/services/[SERVICE_ID]
      &quot;telemetry&quot;: { # Configuration for how to query telemetry on a Service. # Configuration for how to query telemetry on a Service.
        &quot;resourceName&quot;: &quot;A String&quot;, # The full name of the resource that defines this service. Formatted as described in https://cloud.google.com/apis/design/resource_names.
      },
    },
  ],
}</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 &#x27;execute()&#x27; on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

<div class="method">
    <code class="details" id="patch">patch(name, body=None, updateMask=None, x__xgafv=None)</code>
  <pre>Update this Service.

Args:
  name: string, Resource name for this Service. The format is: projects/[PROJECT_ID_OR_NUMBER]/services/[SERVICE_ID]  (required)
  body: object, The request body.
    The object takes the form of:

{ # A Service is a discrete, autonomous, and network-accessible unit, designed to solve an individual concern (Wikipedia (https://en.wikipedia.org/wiki/Service-orientation)). In Cloud Monitoring, a Service acts as the root resource under which operational aspects of the service are accessible.
  &quot;appEngine&quot;: { # App Engine service. Learn more at https://cloud.google.com/appengine. # Type used for App Engine services.
    &quot;moduleId&quot;: &quot;A String&quot;, # The ID of the App Engine module underlying this service. Corresponds to the module_id resource label in the gae_app monitored resource: https://cloud.google.com/monitoring/api/resources#tag_gae_app
  },
  &quot;cloudEndpoints&quot;: { # Cloud Endpoints service. Learn more at https://cloud.google.com/endpoints. # Type used for Cloud Endpoints services.
    &quot;service&quot;: &quot;A String&quot;, # The name of the Cloud Endpoints service underlying this service. Corresponds to the service resource label in the api monitored resource: https://cloud.google.com/monitoring/api/resources#tag_api
  },
  &quot;clusterIstio&quot;: { # Istio service scoped to a single Kubernetes cluster. Learn more at https://istio.io. Clusters running OSS Istio will have their services ingested as this type. # Type used for Istio services that live in a Kubernetes cluster.
    &quot;clusterName&quot;: &quot;A String&quot;, # The name of the Kubernetes cluster in which this Istio service is defined. Corresponds to the cluster_name resource label in k8s_cluster resources.
    &quot;location&quot;: &quot;A String&quot;, # The location of the Kubernetes cluster in which this Istio service is defined. Corresponds to the location resource label in k8s_cluster resources.
    &quot;serviceName&quot;: &quot;A String&quot;, # The name of the Istio service underlying this service. Corresponds to the destination_service_name metric label in Istio metrics.
    &quot;serviceNamespace&quot;: &quot;A String&quot;, # The namespace of the Istio service underlying this service. Corresponds to the destination_service_namespace metric label in Istio metrics.
  },
  &quot;custom&quot;: { # Custom view of service telemetry. Currently a place-holder pending final design. # Custom service type.
  },
  &quot;displayName&quot;: &quot;A String&quot;, # Name used for UI elements listing this Service.
  &quot;istioCanonicalService&quot;: { # Canonical service scoped to an Istio mesh. Anthos clusters running ASM &gt;= 1.6.8 will have their services ingested as this type. # Type used for canonical services scoped to an Istio mesh. Metrics for Istio are documented here (https://istio.io/latest/docs/reference/config/metrics/)
    &quot;canonicalService&quot;: &quot;A String&quot;, # The name of the canonical service underlying this service. Corresponds to the destination_canonical_service_name metric label in label in Istio metrics (https://cloud.google.com/monitoring/api/metrics_istio).
    &quot;canonicalServiceNamespace&quot;: &quot;A String&quot;, # The namespace of the canonical service underlying this service. Corresponds to the destination_canonical_service_namespace metric label in Istio metrics (https://cloud.google.com/monitoring/api/metrics_istio).
    &quot;meshUid&quot;: &quot;A String&quot;, # Identifier for the Istio mesh in which this canonical service is defined. Corresponds to the mesh_uid metric label in Istio metrics (https://cloud.google.com/monitoring/api/metrics_istio).
  },
  &quot;meshIstio&quot;: { # Istio service scoped to an Istio mesh. Anthos clusters running ASM &lt; 1.6.8 will have their services ingested as this type. # Type used for Istio services scoped to an Istio mesh.
    &quot;meshUid&quot;: &quot;A String&quot;, # Identifier for the mesh in which this Istio service is defined. Corresponds to the mesh_uid metric label in Istio metrics.
    &quot;serviceName&quot;: &quot;A String&quot;, # The name of the Istio service underlying this service. Corresponds to the destination_service_name metric label in Istio metrics.
    &quot;serviceNamespace&quot;: &quot;A String&quot;, # The namespace of the Istio service underlying this service. Corresponds to the destination_service_namespace metric label in Istio metrics.
  },
  &quot;name&quot;: &quot;A String&quot;, # Resource name for this Service. The format is: projects/[PROJECT_ID_OR_NUMBER]/services/[SERVICE_ID]
  &quot;telemetry&quot;: { # Configuration for how to query telemetry on a Service. # Configuration for how to query telemetry on a Service.
    &quot;resourceName&quot;: &quot;A String&quot;, # The full name of the resource that defines this service. Formatted as described in https://cloud.google.com/apis/design/resource_names.
  },
}

  updateMask: string, A set of field paths defining which fields to use for the update.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A Service is a discrete, autonomous, and network-accessible unit, designed to solve an individual concern (Wikipedia (https://en.wikipedia.org/wiki/Service-orientation)). In Cloud Monitoring, a Service acts as the root resource under which operational aspects of the service are accessible.
  &quot;appEngine&quot;: { # App Engine service. Learn more at https://cloud.google.com/appengine. # Type used for App Engine services.
    &quot;moduleId&quot;: &quot;A String&quot;, # The ID of the App Engine module underlying this service. Corresponds to the module_id resource label in the gae_app monitored resource: https://cloud.google.com/monitoring/api/resources#tag_gae_app
  },
  &quot;cloudEndpoints&quot;: { # Cloud Endpoints service. Learn more at https://cloud.google.com/endpoints. # Type used for Cloud Endpoints services.
    &quot;service&quot;: &quot;A String&quot;, # The name of the Cloud Endpoints service underlying this service. Corresponds to the service resource label in the api monitored resource: https://cloud.google.com/monitoring/api/resources#tag_api
  },
  &quot;clusterIstio&quot;: { # Istio service scoped to a single Kubernetes cluster. Learn more at https://istio.io. Clusters running OSS Istio will have their services ingested as this type. # Type used for Istio services that live in a Kubernetes cluster.
    &quot;clusterName&quot;: &quot;A String&quot;, # The name of the Kubernetes cluster in which this Istio service is defined. Corresponds to the cluster_name resource label in k8s_cluster resources.
    &quot;location&quot;: &quot;A String&quot;, # The location of the Kubernetes cluster in which this Istio service is defined. Corresponds to the location resource label in k8s_cluster resources.
    &quot;serviceName&quot;: &quot;A String&quot;, # The name of the Istio service underlying this service. Corresponds to the destination_service_name metric label in Istio metrics.
    &quot;serviceNamespace&quot;: &quot;A String&quot;, # The namespace of the Istio service underlying this service. Corresponds to the destination_service_namespace metric label in Istio metrics.
  },
  &quot;custom&quot;: { # Custom view of service telemetry. Currently a place-holder pending final design. # Custom service type.
  },
  &quot;displayName&quot;: &quot;A String&quot;, # Name used for UI elements listing this Service.
  &quot;istioCanonicalService&quot;: { # Canonical service scoped to an Istio mesh. Anthos clusters running ASM &gt;= 1.6.8 will have their services ingested as this type. # Type used for canonical services scoped to an Istio mesh. Metrics for Istio are documented here (https://istio.io/latest/docs/reference/config/metrics/)
    &quot;canonicalService&quot;: &quot;A String&quot;, # The name of the canonical service underlying this service. Corresponds to the destination_canonical_service_name metric label in label in Istio metrics (https://cloud.google.com/monitoring/api/metrics_istio).
    &quot;canonicalServiceNamespace&quot;: &quot;A String&quot;, # The namespace of the canonical service underlying this service. Corresponds to the destination_canonical_service_namespace metric label in Istio metrics (https://cloud.google.com/monitoring/api/metrics_istio).
    &quot;meshUid&quot;: &quot;A String&quot;, # Identifier for the Istio mesh in which this canonical service is defined. Corresponds to the mesh_uid metric label in Istio metrics (https://cloud.google.com/monitoring/api/metrics_istio).
  },
  &quot;meshIstio&quot;: { # Istio service scoped to an Istio mesh. Anthos clusters running ASM &lt; 1.6.8 will have their services ingested as this type. # Type used for Istio services scoped to an Istio mesh.
    &quot;meshUid&quot;: &quot;A String&quot;, # Identifier for the mesh in which this Istio service is defined. Corresponds to the mesh_uid metric label in Istio metrics.
    &quot;serviceName&quot;: &quot;A String&quot;, # The name of the Istio service underlying this service. Corresponds to the destination_service_name metric label in Istio metrics.
    &quot;serviceNamespace&quot;: &quot;A String&quot;, # The namespace of the Istio service underlying this service. Corresponds to the destination_service_namespace metric label in Istio metrics.
  },
  &quot;name&quot;: &quot;A String&quot;, # Resource name for this Service. The format is: projects/[PROJECT_ID_OR_NUMBER]/services/[SERVICE_ID]
  &quot;telemetry&quot;: { # Configuration for how to query telemetry on a Service. # Configuration for how to query telemetry on a Service.
    &quot;resourceName&quot;: &quot;A String&quot;, # The full name of the resource that defines this service. Formatted as described in https://cloud.google.com/apis/design/resource_names.
  },
}</pre>
</div>

</body></html>