# Apigee API . organizations . environments . apis . revisions

## Instance Methods

Returns the debugsessions Resource.

Returns the deployments Resource.

Close httplib2 connections.

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}` All successful API proxy deployments to Apigee are [zero-downtime deployments](https://cloud.google.com/apigee/docs/api-platform/deploy/ui-deploy-overview#zero-downtime-deployment). Apigee hybrid validates the dependencies between shared flows and API proxies at deployment time. For example, if the Flow Callout policy in an API proxy references a shared flow that either doesn't exist or isn't deployed, the API proxy deployment fails.

Gets the deployment of an API proxy revision and actual state reported by runtime pods.

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}`

### Method Details

`close()`

    Close httplib2 connections.

`deploy(name, override=None, sequencedRollout=None, serviceAccount=None, x__xgafv=None)`

    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}` All successful API proxy deployments to Apigee are [zero-downtime deployments](https://cloud.google.com/apigee/docs/api-platform/deploy/ui-deploy-overview#zero-downtime-deployment). Apigee hybrid validates the dependencies between shared flows and API proxies at deployment time. For example, if the Flow Callout policy in an API proxy references a shared flow that either doesn't exist or isn't deployed, the API proxy deployment fails.

    Args:
      name: string, Required. Name of the API proxy revision deployment in the following format: `organizations/{org}/environments/{env}/apis/{api}/revisions/{rev}` If the API proxy resource being deployed has the `space` attribute set, IAM permissions are checked differently . To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview). (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, Flag that specifies whether to enable sequenced rollout. If set to `true`, the routing rules for this deployment and the environment changes to add the deployment will be rolled out in a safe order. This reduces the risk of downtime that could be caused by changing the environment group'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 base path 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.
      serviceAccount: string, Google Cloud IAM service account. The service account represents the identity of the deployed proxy, and determines what permissions it has. The format must be `{ACCOUNT_ID}@{PROJECT}.iam.gserviceaccount.com`.
      x__xgafv: string, V1 error format.
        Allowed values
          1 - v1 error format
          2 - v2 error format

    Returns:
      An object of the form:

        { # Deployment represents a deployment of an API proxy or shared flow.
      "apiProxy": "A String", # API proxy.
      "deployStartTime": "A String", # Time the API proxy was marked `deployed` in the control plane in millisconds since epoch.
      "environment": "A String", # Environment.
      "errors": [ # Errors reported for this deployment. Populated only when state == ERROR. **Note**: This field is displayed only when viewing deployment status.
        { # 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).
          "code": 42, # The status code, which should be an enum value of google.rpc.Code.
          "details": [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
            {
              "a_key": "", # Properties of the object. Contains field @type with type URL.
            },
          ],
          "message": "A String", # 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.
        },
      ],
      "instances": [ # Status reported by each runtime instance. **Note**: This field is displayed only when viewing deployment status.
        { # The status of a deployment as reported by a single instance.
          "deployedRevisions": [ # Revisions currently deployed in MPs.
            { # Revisions deployed in the MPs.
              "percentage": 42, # Percentage of MP replicas reporting this revision.
              "revision": "A String", # API proxy revision reported as deployed.
            },
          ],
          "deployedRoutes": [ # Current routes deployed in the ingress routing table. A route which is missing will appear in `missing_routes`.
            { # Route deployed in the ingress routing table.
              "basepath": "A String", # Base path in the routing table.
              "envgroup": "A String", # Environment group where this route is installed.
              "environment": "A String", # Destination environment. This will be empty if the route is not yet reported.
              "percentage": 42, # Percentage of ingress replicas reporting this route.
            },
          ],
          "instance": "A String", # ID of the instance reporting the status.
        },
      ],
      "pods": [ # Status reported by runtime pods. **Note**: **This field is deprecated**. Runtime versions 1.3 and above report instance level status rather than pod status.
        {
          "appVersion": "A String", # Version of the application running in the pod.
          "deploymentStatus": "A String", # Status of the deployment. Valid values include: - `deployed`: Successful. - `error` : Failed. - `pending` : Pod has not yet reported on the deployment.
          "deploymentStatusTime": "A String", # Time the deployment status was reported in milliseconds since epoch.
          "deploymentTime": "A String", # Time the proxy was deployed in milliseconds since epoch.
          "podName": "A String", # Name of the pod which is reporting the status.
          "podStatus": "A String", # 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.
          "podStatusTime": "A String", # Time the pod status was reported in milliseconds since epoch.
          "statusCode": "A String", # Code associated with the deployment status.
          "statusCodeDetails": "A String", # Human-readable message associated with the status code.
        },
      ],
      "proxyDeploymentType": "A String", # Output only. The type of the deployment (standard or extensible) Deployed proxy revision will be marked as extensible in following 2 cases. 1. The deployed proxy revision uses extensible policies. 2. If a environment supports flowhooks and flow hook is configured.
      "revision": "A String", # API proxy revision.
      "routeConflicts": [ # 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 deployment's base paths 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. **Note**: This field is displayed only when viewing deployment status.
        { # Describes a routing conflict that may cause a deployment not to receive traffic at some base path.
          "conflictingDeployment": { # Tuple representing a base path and the deployment containing it. # Existing base path/deployment causing the conflict.
            "apiProxy": "A String", # Name of the deployed API proxy revision containing the base path.
            "basepath": "A String", # Base path receiving traffic.
            "environment": "A String", # Name of the environment in which the proxy is deployed.
            "revision": "A String", # Name of the deployed API proxy revision containing the base path.
          },
          "description": "A String", # Human-readable description of this conflict.
          "environmentGroup": "A String", # Name of the environment group in which this conflict exists.
        },
      ],
      "serviceAccount": "A String", # The full resource name of Cloud IAM Service Account that this deployment is using, eg, `projects/-/serviceAccounts/{email}`.
      "state": "A String", # Current state of the deployment. **Note**: This field is displayed only when viewing deployment status.
    }

`getDeployments(name, x__xgafv=None)`

    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}` If the API proxy resource has the `space` attribute set, IAM permissions are checked differently . To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview). (required)
      x__xgafv: string, V1 error format.
        Allowed values
          1 - v1 error format
          2 - v2 error format

    Returns:
      An object of the form:

        { # Deployment represents a deployment of an API proxy or shared flow.
      "apiProxy": "A String", # API proxy.
      "deployStartTime": "A String", # Time the API proxy was marked `deployed` in the control plane in millisconds since epoch.
      "environment": "A String", # Environment.
      "errors": [ # Errors reported for this deployment. Populated only when state == ERROR. **Note**: This field is displayed only when viewing deployment status.
        { # 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).
          "code": 42, # The status code, which should be an enum value of google.rpc.Code.
          "details": [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
            {
              "a_key": "", # Properties of the object. Contains field @type with type URL.
            },
          ],
          "message": "A String", # 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.
        },
      ],
      "instances": [ # Status reported by each runtime instance. **Note**: This field is displayed only when viewing deployment status.
        { # The status of a deployment as reported by a single instance.
          "deployedRevisions": [ # Revisions currently deployed in MPs.
            { # Revisions deployed in the MPs.
              "percentage": 42, # Percentage of MP replicas reporting this revision.
              "revision": "A String", # API proxy revision reported as deployed.
            },
          ],
          "deployedRoutes": [ # Current routes deployed in the ingress routing table. A route which is missing will appear in `missing_routes`.
            { # Route deployed in the ingress routing table.
              "basepath": "A String", # Base path in the routing table.
              "envgroup": "A String", # Environment group where this route is installed.
              "environment": "A String", # Destination environment. This will be empty if the route is not yet reported.
              "percentage": 42, # Percentage of ingress replicas reporting this route.
            },
          ],
          "instance": "A String", # ID of the instance reporting the status.
        },
      ],
      "pods": [ # Status reported by runtime pods. **Note**: **This field is deprecated**. Runtime versions 1.3 and above report instance level status rather than pod status.
        {
          "appVersion": "A String", # Version of the application running in the pod.
          "deploymentStatus": "A String", # Status of the deployment. Valid values include: - `deployed`: Successful. - `error` : Failed. - `pending` : Pod has not yet reported on the deployment.
          "deploymentStatusTime": "A String", # Time the deployment status was reported in milliseconds since epoch.
          "deploymentTime": "A String", # Time the proxy was deployed in milliseconds since epoch.
          "podName": "A String", # Name of the pod which is reporting the status.
          "podStatus": "A String", # 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.
          "podStatusTime": "A String", # Time the pod status was reported in milliseconds since epoch.
          "statusCode": "A String", # Code associated with the deployment status.
          "statusCodeDetails": "A String", # Human-readable message associated with the status code.
        },
      ],
      "proxyDeploymentType": "A String", # Output only. The type of the deployment (standard or extensible) Deployed proxy revision will be marked as extensible in following 2 cases. 1. The deployed proxy revision uses extensible policies. 2. If a environment supports flowhooks and flow hook is configured.
      "revision": "A String", # API proxy revision.
      "routeConflicts": [ # 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 deployment's base paths 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. **Note**: This field is displayed only when viewing deployment status.
        { # Describes a routing conflict that may cause a deployment not to receive traffic at some base path.
          "conflictingDeployment": { # Tuple representing a base path and the deployment containing it. # Existing base path/deployment causing the conflict.
            "apiProxy": "A String", # Name of the deployed API proxy revision containing the base path.
            "basepath": "A String", # Base path receiving traffic.
            "environment": "A String", # Name of the environment in which the proxy is deployed.
            "revision": "A String", # Name of the deployed API proxy revision containing the base path.
          },
          "description": "A String", # Human-readable description of this conflict.
          "environmentGroup": "A String", # Name of the environment group in which this conflict exists.
        },
      ],
      "serviceAccount": "A String", # The full resource name of Cloud IAM Service Account that this deployment is using, eg, `projects/-/serviceAccounts/{email}`.
      "state": "A String", # Current state of the deployment. **Note**: This field is displayed only when viewing deployment status.
    }

`undeploy(name, sequencedRollout=None, x__xgafv=None)`

    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}` If the API proxy resource has the `space` attribute set, IAM permissions are checked differently . To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview). (required)
      sequencedRollout: boolean, Flag that specifies whether to enable sequenced rollout. If set to `true`, the environment group routing rules corresponding to this deployment will be removed 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); }
    }