<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.zoneViews.html">zoneViews</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#addresources">addresources(projectName, zone, resourceViewName, body)</a></code></p>
<p class="firstline">Add resources to the view.</p>
<p class="toc_element">
  <code><a href="#delete">delete(projectName, zone, resourceViewName)</a></code></p>
<p class="firstline">Delete a resource view.</p>
<p class="toc_element">
  <code><a href="#get">get(projectName, zone, resourceViewName)</a></code></p>
<p class="firstline">Get the information of a zonal resource view.</p>
<p class="toc_element">
  <code><a href="#insert">insert(projectName, zone, body)</a></code></p>
<p class="firstline">Create a resource view.</p>
<p class="toc_element">
  <code><a href="#list">list(projectName, zone, 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, zone, resourceViewName, pageToken=None, maxResults=None)</a></code></p>
<p class="firstline">List the resources of the resource 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, zone, 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, zone, resourceViewName, body)</code>
  <pre>Add resources to the view.

Args:
  projectName: string, The project name of the resource view. (required)
  zone: string, The zone 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, zone, resourceViewName)</code>
  <pre>Delete a resource view.

Args:
  projectName: string, The project name of the resource view. (required)
  zone: string, The zone 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, zone, resourceViewName)</code>
  <pre>Get the information of a zonal resource view.

Args:
  projectName: string, The project name of the resource view. (required)
  zone: string, The zone 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, zone, body)</code>
  <pre>Create a resource view.

Args:
  projectName: string, The project name of the resource view. (required)
  zone: string, The zone 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 an insert request.
    "resource": { # The resource view object. # The resource view object that has been 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, zone, pageToken=None, maxResults=None)</code>
  <pre>List resource views.

Args:
  projectName: string, The project name of the resource view. (required)
  zone: string, The zone 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 a list request.
    "nextPageToken": "A String", # A token used for pagination.
    "resourceViews": [ # The result that contains all 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, zone, resourceViewName, pageToken=None, maxResults=None)</code>
  <pre>List the resources of the resource view.

Args:
  projectName: string, The project name of the resource view. (required)
  zone: string, The zone 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 a list resource request.
    "nextPageToken": "A String", # A token used for pagination.
    "members": [ # The full URL of 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, zone, resourceViewName, body)</code>
  <pre>Remove resources from the view.

Args:
  projectName: string, The project name of the resource view. (required)
  zone: string, The zone 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>