<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, pageToken=None, filter=None, pageSize=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 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;meshIstio&quot;: { # Istio service scoped to an Istio mesh # Type used for Istio services scoped to an Istio mesh.
      &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;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;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;custom&quot;: { # Custom view of service telemetry. Currently a place-holder pending final design. # Custom service type.
    },
    &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.
    },
    &quot;displayName&quot;: &quot;A String&quot;, # Name used for UI elements listing this Service.
    &quot;name&quot;: &quot;A String&quot;, # Resource name for this Service. The format is: projects/[PROJECT_ID_OR_NUMBER]/services/[SERVICE_ID]
    &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 http://istio.io. # 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;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;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.
    },
  }

  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;meshIstio&quot;: { # Istio service scoped to an Istio mesh # Type used for Istio services scoped to an Istio mesh.
        &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;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;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;custom&quot;: { # Custom view of service telemetry. Currently a place-holder pending final design. # Custom service type.
      },
      &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.
      },
      &quot;displayName&quot;: &quot;A String&quot;, # Name used for UI elements listing this Service.
      &quot;name&quot;: &quot;A String&quot;, # Resource name for this Service. The format is: projects/[PROJECT_ID_OR_NUMBER]/services/[SERVICE_ID]
      &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 http://istio.io. # 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;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;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.
      },
    }</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;meshIstio&quot;: { # Istio service scoped to an Istio mesh # Type used for Istio services scoped to an Istio mesh.
        &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;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;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;custom&quot;: { # Custom view of service telemetry. Currently a place-holder pending final design. # Custom service type.
      },
      &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.
      },
      &quot;displayName&quot;: &quot;A String&quot;, # Name used for UI elements listing this Service.
      &quot;name&quot;: &quot;A String&quot;, # Resource name for this Service. The format is: projects/[PROJECT_ID_OR_NUMBER]/services/[SERVICE_ID]
      &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 http://istio.io. # 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;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;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.
      },
    }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, pageToken=None, filter=None, pageSize=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 or a Monitoring Workspace. The formats are: projects/[PROJECT_ID_OR_NUMBER] workspaces/[HOST_PROJECT_ID_OR_NUMBER]  (required)
  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.
  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.
  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;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;meshIstio&quot;: { # Istio service scoped to an Istio mesh # Type used for Istio services scoped to an Istio mesh.
            &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;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;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;custom&quot;: { # Custom view of service telemetry. Currently a place-holder pending final design. # Custom service type.
          },
          &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.
          },
          &quot;displayName&quot;: &quot;A String&quot;, # Name used for UI elements listing this Service.
          &quot;name&quot;: &quot;A String&quot;, # Resource name for this Service. The format is: projects/[PROJECT_ID_OR_NUMBER]/services/[SERVICE_ID]
          &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 http://istio.io. # 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;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;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;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.
  }</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;meshIstio&quot;: { # Istio service scoped to an Istio mesh # Type used for Istio services scoped to an Istio mesh.
      &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;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;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;custom&quot;: { # Custom view of service telemetry. Currently a place-holder pending final design. # Custom service type.
    },
    &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.
    },
    &quot;displayName&quot;: &quot;A String&quot;, # Name used for UI elements listing this Service.
    &quot;name&quot;: &quot;A String&quot;, # Resource name for this Service. The format is: projects/[PROJECT_ID_OR_NUMBER]/services/[SERVICE_ID]
    &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 http://istio.io. # 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;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;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.
    },
  }

  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;meshIstio&quot;: { # Istio service scoped to an Istio mesh # Type used for Istio services scoped to an Istio mesh.
        &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;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;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;custom&quot;: { # Custom view of service telemetry. Currently a place-holder pending final design. # Custom service type.
      },
      &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.
      },
      &quot;displayName&quot;: &quot;A String&quot;, # Name used for UI elements listing this Service.
      &quot;name&quot;: &quot;A String&quot;, # Resource name for this Service. The format is: projects/[PROJECT_ID_OR_NUMBER]/services/[SERVICE_ID]
      &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 http://istio.io. # 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;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;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.
      },
    }</pre>
</div>

</body></html>