<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="resourceviews_v1beta1.html">Resource Views API</a> . <a href="resourceviews_v1beta1.regionViews.html">regionViews</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#addresources">addresources(projectName, region, resourceViewName, body)</a></code></p>
<p class="firstline">Add resources to the view.</p>
<p class="toc_element">
  <code><a href="#delete">delete(projectName, region, resourceViewName)</a></code></p>
<p class="firstline">Delete a resource view.</p>
<p class="toc_element">
  <code><a href="#get">get(projectName, region, resourceViewName)</a></code></p>
<p class="firstline">Get the information of a resource view.</p>
<p class="toc_element">
  <code><a href="#insert">insert(projectName, region, body)</a></code></p>
<p class="firstline">Create a resource view.</p>
<p class="toc_element">
  <code><a href="#list">list(projectName, region, pageToken=None, maxResults=None)</a></code></p>
<p class="firstline">List resource views.</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="#listresources">listresources(projectName, region, resourceViewName, pageToken=None, maxResults=None)</a></code></p>
<p class="firstline">List the resources in the view.</p>
<p class="toc_element">
  <code><a href="#listresources_next">listresources_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="#removeresources">removeresources(projectName, region, resourceViewName, body)</a></code></p>
<p class="firstline">Remove resources from the view.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="addresources">addresources(projectName, region, resourceViewName, body)</code>
  <pre>Add resources to the view.

Args:
  projectName: string, The project name of the resource view. (required)
  region: string, The region name of the resource view. (required)
  resourceViewName: string, The name of the resource view. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # The request to add resources to the resource view.
    "resources": [ # The list of resources to be added.
      "A String",
    ],
  }

</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(projectName, region, resourceViewName)</code>
  <pre>Delete a resource view.

Args:
  projectName: string, The project name of the resource view. (required)
  region: string, The region name of the resource view. (required)
  resourceViewName: string, The name of the resource view. (required)
</pre>
</div>

<div class="method">
    <code class="details" id="get">get(projectName, region, resourceViewName)</code>
  <pre>Get the information of a resource view.

Args:
  projectName: string, The project name of the resource view. (required)
  region: string, The region name of the resource view. (required)
  resourceViewName: string, The name of the resource view. (required)

Returns:
  An object of the form:

    { # The resource view object.
      "kind": "resourceviews#resourceView", # Type of the resource.
      "numMembers": 42, # The total number of resources in the resource view.
      "description": "A String", # The detailed description of the resource view.
      "lastModified": "A String", # The last modified time of the view. Not supported yet.
      "labels": [ # The labels for events.
        { # The Label to be applied to the resource views.
          "value": "A String", # Value of the label.
          "key": "A String", # Key of the label.
        },
      ],
      "creationTime": "A String", # The creation time of the resource view.
      "members": [ # A list of all resources in the resource view.
        "A String",
      ],
      "id": "A String", # [Output Only] The ID of the resource view.
      "selfLink": "A String", # [Output Only] A self-link to the resource view.
      "name": "A String", # The name of the resource view.
    }</pre>
</div>

<div class="method">
    <code class="details" id="insert">insert(projectName, region, body)</code>
  <pre>Create a resource view.

Args:
  projectName: string, The project name of the resource view. (required)
  region: string, The region name of the resource view. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # The resource view object.
    "kind": "resourceviews#resourceView", # Type of the resource.
    "numMembers": 42, # The total number of resources in the resource view.
    "description": "A String", # The detailed description of the resource view.
    "lastModified": "A String", # The last modified time of the view. Not supported yet.
    "labels": [ # The labels for events.
      { # The Label to be applied to the resource views.
        "value": "A String", # Value of the label.
        "key": "A String", # Key of the label.
      },
    ],
    "creationTime": "A String", # The creation time of the resource view.
    "members": [ # A list of all resources in the resource view.
      "A String",
    ],
    "id": "A String", # [Output Only] The ID of the resource view.
    "selfLink": "A String", # [Output Only] A self-link to the resource view.
    "name": "A String", # The name of the resource view.
  }


Returns:
  An object of the form:

    { # The response to a resource view insert request.
    "resource": { # The resource view object. # The resource view object inserted.
        "kind": "resourceviews#resourceView", # Type of the resource.
        "numMembers": 42, # The total number of resources in the resource view.
        "description": "A String", # The detailed description of the resource view.
        "lastModified": "A String", # The last modified time of the view. Not supported yet.
        "labels": [ # The labels for events.
          { # The Label to be applied to the resource views.
            "value": "A String", # Value of the label.
            "key": "A String", # Key of the label.
          },
        ],
        "creationTime": "A String", # The creation time of the resource view.
        "members": [ # A list of all resources in the resource view.
          "A String",
        ],
        "id": "A String", # [Output Only] The ID of the resource view.
        "selfLink": "A String", # [Output Only] A self-link to the resource view.
        "name": "A String", # The name of the resource view.
      },
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(projectName, region, pageToken=None, maxResults=None)</code>
  <pre>List resource views.

Args:
  projectName: string, The project name of the resource view. (required)
  region: string, The region name of the resource view. (required)
  pageToken: string, Specifies a nextPageToken returned by a previous list request. This token can be used to request the next page of results from a previous list request.
  maxResults: integer, Maximum count of results to be returned. Acceptable values are 0 to 5000, inclusive. (Default: 5000)

Returns:
  An object of the form:

    { # The response to the list resource view request.
    "nextPageToken": "A String", # A token used for pagination.
    "resourceViews": [ # The list of resource views that meet the criteria.
      { # The resource view object.
          "kind": "resourceviews#resourceView", # Type of the resource.
          "numMembers": 42, # The total number of resources in the resource view.
          "description": "A String", # The detailed description of the resource view.
          "lastModified": "A String", # The last modified time of the view. Not supported yet.
          "labels": [ # The labels for events.
            { # The Label to be applied to the resource views.
              "value": "A String", # Value of the label.
              "key": "A String", # Key of the label.
            },
          ],
          "creationTime": "A String", # The creation time of the resource view.
          "members": [ # A list of all resources in the resource view.
            "A String",
          ],
          "id": "A String", # [Output Only] The ID of the resource view.
          "selfLink": "A String", # [Output Only] A self-link to the resource view.
          "name": "A String", # The name of the resource view.
        },
    ],
  }</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 'execute()' 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="listresources">listresources(projectName, region, resourceViewName, pageToken=None, maxResults=None)</code>
  <pre>List the resources in the view.

Args:
  projectName: string, The project name of the resource view. (required)
  region: string, The region name of the resource view. (required)
  resourceViewName: string, The name of the resource view. (required)
  pageToken: string, Specifies a nextPageToken returned by a previous list request. This token can be used to request the next page of results from a previous list request.
  maxResults: integer, Maximum count of results to be returned. Acceptable values are 0 to 5000, inclusive. (Default: 5000)

Returns:
  An object of the form:

    { # The response to the list resource request.
    "nextPageToken": "A String", # A token used for pagination.
    "members": [ # The resources in the view.
      "A String",
    ],
  }</pre>
</div>

<div class="method">
    <code class="details" id="listresources_next">listresources_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 'execute()' 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="removeresources">removeresources(projectName, region, resourceViewName, body)</code>
  <pre>Remove resources from the view.

Args:
  projectName: string, The project name of the resource view. (required)
  region: string, The region name of the resource view. (required)
  resourceViewName: string, The name of the resource view. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # The request to remove resources from the resource view.
    "resources": [ # The list of resources to be removed.
      "A String",
    ],
  }

</pre>
</div>

</body></html>