<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="dialogflow_v2beta1.html">Dialogflow API</a> . <a href="dialogflow_v2beta1.projects.html">projects</a> . <a href="dialogflow_v2beta1.projects.agent.html">agent</a> . <a href="dialogflow_v2beta1.projects.agent.environments.html">environments</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="dialogflow_v2beta1.projects.agent.environments.users.html">users()</a></code>
</p>
<p class="firstline">Returns the users Resource.</p>

<p class="toc_element">
  <code><a href="#list">list(parent, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Returns the list of all non-draft environments of the specified agent.</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>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="list">list(parent, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Returns the list of all non-draft environments of the specified agent.

Args:
  parent: string, Required. The agent to list all environments from.
Format:
- `projects/&lt;Project Number / ID&gt;/agent`
- `projects/&lt;Project Number / ID&gt;/locations/&lt;Location
ID&gt;/agent (required)
  pageSize: integer, Optional. The maximum number of items to return in a single page. By default 100 and
at most 1000.
  pageToken: string, Optional. The next_page_token value returned from a previous list request.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The response message for Environments.ListEnvironments.
    &quot;environments&quot;: [ # The list of agent environments. There will be a maximum number of items
        # returned based on the page_size field in the request.
      { # You can create multiple versions of your agent and publish them to separate
          # environments.
          #
          # When you edit an agent, you are editing the draft agent. At any point, you
          # can save the draft agent as an agent version, which is an immutable snapshot
          # of your agent.
          #
          # When you save the draft agent, it is published to the default environment.
          # When you create agent versions, you can publish them to custom environments.
          # You can create a variety of custom environments for:
          #
          # - testing
          # - development
          # - production
          # - etc.
          #
          # For more information, see the [versions and environments
          # guide](https://cloud.google.com/dialogflow/docs/agents-versions).
        &quot;state&quot;: &quot;A String&quot;, # Output only. The state of this environment. This field is read-only, i.e., it cannot be
            # set by create and update methods.
        &quot;description&quot;: &quot;A String&quot;, # Optional. The developer-provided description for this environment.
            # The maximum length is 500 characters. If exceeded, the request is rejected.
        &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The last update time of this environment. This field is read-only, i.e., it
            # cannot be set by create and update methods.
        &quot;name&quot;: &quot;A String&quot;, # Output only. The unique identifier of this agent environment.
            # Format:
            # - `projects/&lt;Project Number / ID&gt;/agent/environments/&lt;Environment ID&gt;`
            # - `projects/&lt;Project Number / ID&gt;/locations/&lt;Location
            # ID&gt;/agent/environments/&lt;Environment ID&gt;`
        &quot;agentVersion&quot;: &quot;A String&quot;, # Optional. The agent version loaded into this environment.
            # Format: `projects/&lt;Project ID&gt;/agent/versions/&lt;Version ID&gt;`.
      },
    ],
    &quot;nextPageToken&quot;: &quot;A String&quot;, # Token to retrieve the next page of results, or empty if there are no
        # more results in the list.
  }</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>

</body></html>