<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="#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="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;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;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;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;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;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;custom&quot;: { # Custom view of service telemetry. Currently a place-holder pending final design. # Custom service type.
    },
    &quot;name&quot;: &quot;A String&quot;, # Resource name for this Service. The format is:
        # projects/[PROJECT_ID_OR_NUMBER]/services/[SERVICE_ID]
    &quot;displayName&quot;: &quot;A String&quot;, # Name used for UI elements listing this Service.
    &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;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;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
    },
  }

  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;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;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;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;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;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;custom&quot;: { # Custom view of service telemetry. Currently a place-holder pending final design. # Custom service type.
      },
      &quot;name&quot;: &quot;A String&quot;, # Resource name for this Service. The format is:
          # projects/[PROJECT_ID_OR_NUMBER]/services/[SERVICE_ID]
      &quot;displayName&quot;: &quot;A String&quot;, # Name used for UI elements listing this Service.
      &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;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;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
      },
    }</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;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;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;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;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;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;custom&quot;: { # Custom view of service telemetry. Currently a place-holder pending final design. # Custom service type.
      },
      &quot;name&quot;: &quot;A String&quot;, # Resource name for this Service. The format is:
          # projects/[PROJECT_ID_OR_NUMBER]/services/[SERVICE_ID]
      &quot;displayName&quot;: &quot;A String&quot;, # Name used for UI elements listing this Service.
      &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;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;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
      },
    }</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 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`
- `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;CLOUD_ENDPOINTS&quot;, &quot;MESH_ISTIO&quot;, and &quot;CLUSTER_ISTIO&quot; (deprecated),
  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;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;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;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;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;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;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;custom&quot;: { # Custom view of service telemetry. Currently a place-holder pending final design. # Custom service type.
          },
          &quot;name&quot;: &quot;A String&quot;, # Resource name for this Service. The format is:
              # projects/[PROJECT_ID_OR_NUMBER]/services/[SERVICE_ID]
          &quot;displayName&quot;: &quot;A String&quot;, # Name used for UI elements listing this Service.
          &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;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;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
          },
        },
    ],
  }</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;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;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;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;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;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;custom&quot;: { # Custom view of service telemetry. Currently a place-holder pending final design. # Custom service type.
    },
    &quot;name&quot;: &quot;A String&quot;, # Resource name for this Service. The format is:
        # projects/[PROJECT_ID_OR_NUMBER]/services/[SERVICE_ID]
    &quot;displayName&quot;: &quot;A String&quot;, # Name used for UI elements listing this Service.
    &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;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;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
    },
  }

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

</body></html>