<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_v1.html">Cloud Monitoring API</a> . <a href="monitoring_v1.locations.html">locations</a> . <a href="monitoring_v1.locations.global_.html">global_</a> . <a href="monitoring_v1.locations.global_.metricsScopes.html">metricsScopes</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="monitoring_v1.locations.global_.metricsScopes.projects.html">projects()</a></code>
</p>
<p class="firstline">Returns the projects 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="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Returns a specific Metrics Scope, including the list of projects monitored by the specified Metrics Scope.</p>
<p class="toc_element">
  <code><a href="#listMetricsScopesByMonitoredProject">listMetricsScopesByMonitoredProject(monitoredResourceContainer=None, x__xgafv=None)</a></code></p>
<p class="firstline">Returns a list of every Metrics Scope that a specific MonitoredProject has been added to. The metrics scope representing the specified monitored project will always be the first entry in the response.</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="get">get(name, x__xgafv=None)</code>
  <pre>Returns a specific Metrics Scope, including the list of projects monitored by the specified Metrics Scope.

Args:
  name: string, Required. The resource name of the Metrics Scope. Example: locations/global/metricsScopes/{SCOPING_PROJECT_ID_OR_NUMBER} (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Represents a Metrics Scope (https://cloud.google.com/monitoring/settings#concept-scope) in Cloud Monitoring, which specifies one or more Google projects and zero or more AWS accounts to monitor together.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time when this Metrics Scope was created.
  &quot;monitoredProjects&quot;: [ # Output only. The list of projects monitored by this Metrics Scope.
    { # A project being monitored (https://cloud.google.com/monitoring/settings/multiple-projects#create-multi) by a Metrics Scope.
      &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time when this MonitoredProject was created.
      &quot;name&quot;: &quot;A String&quot;, # Immutable. The resource name of the MonitoredProject. On input, the resource name includes the scoping project ID and monitored project ID. On output, it contains the equivalent project numbers. Example: locations/global/metricsScopes/{SCOPING_PROJECT_ID_OR_NUMBER}/projects/{MONITORED_PROJECT_ID_OR_NUMBER}
    },
  ],
  &quot;name&quot;: &quot;A String&quot;, # Immutable. The resource name of the Monitoring Metrics Scope. On input, the resource name can be specified with the scoping project ID or number. On output, the resource name is specified with the scoping project number. Example: locations/global/metricsScopes/{SCOPING_PROJECT_ID_OR_NUMBER}
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time when this Metrics Scope record was last updated.
}</pre>
</div>

<div class="method">
    <code class="details" id="listMetricsScopesByMonitoredProject">listMetricsScopesByMonitoredProject(monitoredResourceContainer=None, x__xgafv=None)</code>
  <pre>Returns a list of every Metrics Scope that a specific MonitoredProject has been added to. The metrics scope representing the specified monitored project will always be the first entry in the response.

Args:
  monitoredResourceContainer: string, Required. The resource name of the Monitored Project being requested. Example: projects/{MONITORED_PROJECT_ID_OR_NUMBER}
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response for the ListMetricsScopesByMonitoredProject method.
  &quot;metricsScopes&quot;: [ # A set of all metrics scopes that the specified monitored project has been added to.
    { # Represents a Metrics Scope (https://cloud.google.com/monitoring/settings#concept-scope) in Cloud Monitoring, which specifies one or more Google projects and zero or more AWS accounts to monitor together.
      &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time when this Metrics Scope was created.
      &quot;monitoredProjects&quot;: [ # Output only. The list of projects monitored by this Metrics Scope.
        { # A project being monitored (https://cloud.google.com/monitoring/settings/multiple-projects#create-multi) by a Metrics Scope.
          &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time when this MonitoredProject was created.
          &quot;name&quot;: &quot;A String&quot;, # Immutable. The resource name of the MonitoredProject. On input, the resource name includes the scoping project ID and monitored project ID. On output, it contains the equivalent project numbers. Example: locations/global/metricsScopes/{SCOPING_PROJECT_ID_OR_NUMBER}/projects/{MONITORED_PROJECT_ID_OR_NUMBER}
        },
      ],
      &quot;name&quot;: &quot;A String&quot;, # Immutable. The resource name of the Monitoring Metrics Scope. On input, the resource name can be specified with the scoping project ID or number. On output, the resource name is specified with the scoping project number. Example: locations/global/metricsScopes/{SCOPING_PROJECT_ID_OR_NUMBER}
      &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time when this Metrics Scope record was last updated.
    },
  ],
}</pre>
</div>

</body></html>