<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="apigee_v1.html">Apigee API</a> . <a href="apigee_v1.organizations.html">organizations</a> . <a href="apigee_v1.organizations.environments.html">environments</a> . <a href="apigee_v1.organizations.environments.apis.html">apis</a> . <a href="apigee_v1.organizations.environments.apis.revisions.html">revisions</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="apigee_v1.organizations.environments.apis.revisions.debugsessions.html">debugsessions()</a></code>
</p>
<p class="firstline">Returns the debugsessions Resource.</p>

<p class="toc_element">
  <code><a href="apigee_v1.organizations.environments.apis.revisions.deployments.html">deployments()</a></code>
</p>
<p class="firstline">Returns the deployments 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="#deploy">deploy(name, override=None, sequencedRollout=None, x__xgafv=None)</a></code></p>
<p class="firstline">Deploys a revision of an API proxy. If another revision of the same API proxy revision is currently deployed, set the `override` parameter to `true` to have this revision replace the currently deployed revision. You cannot invoke an API proxy until it has been deployed to an environment. After you deploy an API proxy revision, you cannot edit it. To edit the API proxy, you must create and deploy a new revision. For a request path `organizations/{org}/environments/{env}/apis/{api}/revisions/{rev}/deployments`, two permissions are required: * `apigee.deployments.create` on the resource `organizations/{org}/environments/{env}` * `apigee.proxyrevisions.deploy` on the resource `organizations/{org}/apis/{api}/revisions/{rev}` </p>
<p class="toc_element">
  <code><a href="#getDeployments">getDeployments(name, x__xgafv=None)</a></code></p>
<p class="firstline">Gets the deployment of an API proxy revision and actual state reported by runtime pods.</p>
<p class="toc_element">
  <code><a href="#undeploy">undeploy(name, sequencedRollout=None, x__xgafv=None)</a></code></p>
<p class="firstline">Undeploys an API proxy revision from an environment. For a request path `organizations/{org}/environments/{env}/apis/{api}/revisions/{rev}/deployments`, two permissions are required: * `apigee.deployments.delete` on the resource `organizations/{org}/environments/{env}` * `apigee.proxyrevisions.undeploy` on the resource `organizations/{org}/apis/{api}/revisions/{rev}`</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="deploy">deploy(name, override=None, sequencedRollout=None, x__xgafv=None)</code>
  <pre>Deploys a revision of an API proxy. If another revision of the same API proxy revision is currently deployed, set the `override` parameter to `true` to have this revision replace the currently deployed revision. You cannot invoke an API proxy until it has been deployed to an environment. After you deploy an API proxy revision, you cannot edit it. To edit the API proxy, you must create and deploy a new revision. For a request path `organizations/{org}/environments/{env}/apis/{api}/revisions/{rev}/deployments`, two permissions are required: * `apigee.deployments.create` on the resource `organizations/{org}/environments/{env}` * `apigee.proxyrevisions.deploy` on the resource `organizations/{org}/apis/{api}/revisions/{rev}` 

Args:
  name: string, Required. Name of the API proxy revision deployment in the following format: `organizations/{org}/environments/{env}/apis/{api}/revisions/{rev}` (required)
  override: boolean, Flag that specifies whether the new deployment replaces other deployed revisions of the API proxy in the environment. Set override to true to replace other deployed revisions. By default, override is false and the deployment is rejected if other revisions of the API proxy are deployed in the environment.
  sequencedRollout: boolean, If true, a best-effort attempt will be made to roll out the routing rules corresponding to this deployment and the environment changes to add this deployment in a safe order. This reduces the risk of downtime that could be caused by changing the environment group&#x27;s routing before the new destination for the affected traffic is ready to receive it. This should only be necessary if the new deployment will be capturing traffic from another environment under a shared environment group or if traffic will be rerouted to a different environment due to a basepath removal. The GenerateDeployChangeReport API may be used to examine routing changes before issuing the deployment request, and its response will indicate if a sequenced rollout is recommended for the deployment.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
  &quot;apiProxy&quot;: &quot;A String&quot;, # API proxy.
  &quot;deployStartTime&quot;: &quot;A String&quot;, # Time the API proxy was marked `deployed` in the control plane in millisconds since epoch.
  &quot;environment&quot;: &quot;A String&quot;, # Environment.
  &quot;errors&quot;: [ # Errors reported for this deployment. Populated only when state == ERROR. This field is not populated in List APIs.
    { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).
      &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
      &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
        {
          &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
        },
      ],
      &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
    },
  ],
  &quot;instances&quot;: [ # Status reported by each runtime instance. This field is not populated in List APIs.
    { # The status of a deployment as reported by a single instance.
      &quot;deployedRevisions&quot;: [ # Revisions currently deployed in MPs.
        { # Revisions deployed in the MPs.
          &quot;percentage&quot;: 42, # The percentage of MP replicas reporting this revision
          &quot;revision&quot;: &quot;A String&quot;, # The proxy revision reported as deployed.
        },
      ],
      &quot;deployedRoutes&quot;: [ # The current routes deployed in the ingress routing table. A route which is missing will appear in missing_routes.
        { # A route deployed in the ingress routing table.
          &quot;basepath&quot;: &quot;A String&quot;, # The basepath in the routing table.
          &quot;envgroup&quot;: &quot;A String&quot;, # The envgroup where this route is installed.
          &quot;environment&quot;: &quot;A String&quot;, # The destination environment. This will be empty if the route is not yet reported.
          &quot;percentage&quot;: 42, # The percentage of ingress replicas reporting this route.
        },
      ],
      &quot;instance&quot;: &quot;A String&quot;, # ID of the instance reporting the status.
    },
  ],
  &quot;pods&quot;: [ # Status reported by runtime pods. This field is not populated for List APIs.
    {
      &quot;appVersion&quot;: &quot;A String&quot;, # Version of the application running in the pod.
      &quot;deploymentStatus&quot;: &quot;A String&quot;, # Status of the deployment. Valid values include: - `deployed`: Successful. - `error` : Failed. - `pending` : Pod has not yet reported on the deployment.
      &quot;deploymentStatusTime&quot;: &quot;A String&quot;, # Time the deployment status was reported in milliseconds since epoch.
      &quot;deploymentTime&quot;: &quot;A String&quot;, # Time the proxy was deployed in milliseconds since epoch.
      &quot;podName&quot;: &quot;A String&quot;, # Name of the pod which is reporting the status.
      &quot;podStatus&quot;: &quot;A String&quot;, # Overall status of the pod (not this specific deployment). Valid values include: - `active`: Up to date. - `stale` : Recently out of date. Pods that have not reported status in a long time are excluded from the output.
      &quot;podStatusTime&quot;: &quot;A String&quot;, # Time the pod status was reported in milliseconds since epoch.
      &quot;statusCode&quot;: &quot;A String&quot;, # Code associated with the deployment status.
      &quot;statusCodeDetails&quot;: &quot;A String&quot;, # Human-readable message associated with the status code.
    },
  ],
  &quot;revision&quot;: &quot;A String&quot;, # API proxy revision.
  &quot;routeConflicts&quot;: [ # Conflicts in the desired state routing configuration. The presence of conflicts does not cause the state to be ERROR, but it will mean that some of the deployments basepaths are not routed to its environment. If the conflicts change, the state will transition to PROGRESSING until the latest configuration is rolled out to all instances. This field is not populated in List APIs.
    { # Describes a routing conflict that may cause a deployment not to receive traffic at some basepath.
      &quot;conflictingDeployment&quot;: { # A tuple representing a basepath and the deployment containing it. # The existing basepath/deployment causing the conflict.
        &quot;apiProxy&quot;: &quot;A String&quot;, # The name of the deployed proxy revision containing the basepath.
        &quot;basepath&quot;: &quot;A String&quot;, # The basepath receiving traffic.
        &quot;environment&quot;: &quot;A String&quot;, # The name of the environment in which the proxy is deployed.
        &quot;revision&quot;: &quot;A String&quot;, # The name of the deployed proxy revision containing the basepath.
      },
      &quot;description&quot;: &quot;A String&quot;, # A human-readable description of this conflict.
      &quot;environmentGroup&quot;: &quot;A String&quot;, # The name of the environment group in which this conflict exists.
    },
  ],
  &quot;state&quot;: &quot;A String&quot;, # Current state of the deployment. This field is not populated in List APIs.
}</pre>
</div>

<div class="method">
    <code class="details" id="getDeployments">getDeployments(name, x__xgafv=None)</code>
  <pre>Gets the deployment of an API proxy revision and actual state reported by runtime pods.

Args:
  name: string, Required. Name representing an API proxy revision in an environment in the following format: `organizations/{org}/environments/{env}/apis/{api}/revisions/{rev}` (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
  &quot;apiProxy&quot;: &quot;A String&quot;, # API proxy.
  &quot;deployStartTime&quot;: &quot;A String&quot;, # Time the API proxy was marked `deployed` in the control plane in millisconds since epoch.
  &quot;environment&quot;: &quot;A String&quot;, # Environment.
  &quot;errors&quot;: [ # Errors reported for this deployment. Populated only when state == ERROR. This field is not populated in List APIs.
    { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).
      &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
      &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
        {
          &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
        },
      ],
      &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
    },
  ],
  &quot;instances&quot;: [ # Status reported by each runtime instance. This field is not populated in List APIs.
    { # The status of a deployment as reported by a single instance.
      &quot;deployedRevisions&quot;: [ # Revisions currently deployed in MPs.
        { # Revisions deployed in the MPs.
          &quot;percentage&quot;: 42, # The percentage of MP replicas reporting this revision
          &quot;revision&quot;: &quot;A String&quot;, # The proxy revision reported as deployed.
        },
      ],
      &quot;deployedRoutes&quot;: [ # The current routes deployed in the ingress routing table. A route which is missing will appear in missing_routes.
        { # A route deployed in the ingress routing table.
          &quot;basepath&quot;: &quot;A String&quot;, # The basepath in the routing table.
          &quot;envgroup&quot;: &quot;A String&quot;, # The envgroup where this route is installed.
          &quot;environment&quot;: &quot;A String&quot;, # The destination environment. This will be empty if the route is not yet reported.
          &quot;percentage&quot;: 42, # The percentage of ingress replicas reporting this route.
        },
      ],
      &quot;instance&quot;: &quot;A String&quot;, # ID of the instance reporting the status.
    },
  ],
  &quot;pods&quot;: [ # Status reported by runtime pods. This field is not populated for List APIs.
    {
      &quot;appVersion&quot;: &quot;A String&quot;, # Version of the application running in the pod.
      &quot;deploymentStatus&quot;: &quot;A String&quot;, # Status of the deployment. Valid values include: - `deployed`: Successful. - `error` : Failed. - `pending` : Pod has not yet reported on the deployment.
      &quot;deploymentStatusTime&quot;: &quot;A String&quot;, # Time the deployment status was reported in milliseconds since epoch.
      &quot;deploymentTime&quot;: &quot;A String&quot;, # Time the proxy was deployed in milliseconds since epoch.
      &quot;podName&quot;: &quot;A String&quot;, # Name of the pod which is reporting the status.
      &quot;podStatus&quot;: &quot;A String&quot;, # Overall status of the pod (not this specific deployment). Valid values include: - `active`: Up to date. - `stale` : Recently out of date. Pods that have not reported status in a long time are excluded from the output.
      &quot;podStatusTime&quot;: &quot;A String&quot;, # Time the pod status was reported in milliseconds since epoch.
      &quot;statusCode&quot;: &quot;A String&quot;, # Code associated with the deployment status.
      &quot;statusCodeDetails&quot;: &quot;A String&quot;, # Human-readable message associated with the status code.
    },
  ],
  &quot;revision&quot;: &quot;A String&quot;, # API proxy revision.
  &quot;routeConflicts&quot;: [ # Conflicts in the desired state routing configuration. The presence of conflicts does not cause the state to be ERROR, but it will mean that some of the deployments basepaths are not routed to its environment. If the conflicts change, the state will transition to PROGRESSING until the latest configuration is rolled out to all instances. This field is not populated in List APIs.
    { # Describes a routing conflict that may cause a deployment not to receive traffic at some basepath.
      &quot;conflictingDeployment&quot;: { # A tuple representing a basepath and the deployment containing it. # The existing basepath/deployment causing the conflict.
        &quot;apiProxy&quot;: &quot;A String&quot;, # The name of the deployed proxy revision containing the basepath.
        &quot;basepath&quot;: &quot;A String&quot;, # The basepath receiving traffic.
        &quot;environment&quot;: &quot;A String&quot;, # The name of the environment in which the proxy is deployed.
        &quot;revision&quot;: &quot;A String&quot;, # The name of the deployed proxy revision containing the basepath.
      },
      &quot;description&quot;: &quot;A String&quot;, # A human-readable description of this conflict.
      &quot;environmentGroup&quot;: &quot;A String&quot;, # The name of the environment group in which this conflict exists.
    },
  ],
  &quot;state&quot;: &quot;A String&quot;, # Current state of the deployment. This field is not populated in List APIs.
}</pre>
</div>

<div class="method">
    <code class="details" id="undeploy">undeploy(name, sequencedRollout=None, x__xgafv=None)</code>
  <pre>Undeploys an API proxy revision from an environment. For a request path `organizations/{org}/environments/{env}/apis/{api}/revisions/{rev}/deployments`, two permissions are required: * `apigee.deployments.delete` on the resource `organizations/{org}/environments/{env}` * `apigee.proxyrevisions.undeploy` on the resource `organizations/{org}/apis/{api}/revisions/{rev}`

Args:
  name: string, Required. Name of the API proxy revision deployment in the following format: `organizations/{org}/environments/{env}/apis/{api}/revisions/{rev}` (required)
  sequencedRollout: boolean, If true, a best-effort attempt will be made to remove the environment group routing rules corresponding to this deployment before removing the deployment from the runtime. This is likely to be a rare use case; it is only needed when the intended effect of undeploying this proxy is to cause the traffic it currently handles to be rerouted to some other existing proxy in the environment group. The GenerateUndeployChangeReport API may be used to examine routing changes before issuing the undeployment request, and its response will indicate if a sequenced rollout is recommended for the undeployment.
  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>

</body></html>