<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.sharedflows.html">sharedflows</a> . <a href="apigee_v1.organizations.environments.sharedflows.revisions.html">revisions</a></h1>
<h2>Instance Methods</h2>
<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, x__xgafv=None)</a></code></p>
<p class="firstline">Deploys a revision of a shared flow. If another revision of the same shared flow is currently deployed, set the `override` parameter to `true` to have this revision replace the currently deployed revision. You cannot use a shared flow until it has been deployed to an environment. For a request path `organizations/{org}/environments/{env}/sharedflows/{sf}/revisions/{rev}/deployments`, two permissions are required: * `apigee.deployments.create` on the resource `organizations/{org}/environments/{env}` * `apigee.sharedflowrevisions.deploy` on the resource `organizations/{org}/sharedflows/{sf}/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 a shared flow revision and actual state reported by runtime pods.</p>
<p class="toc_element">
  <code><a href="#undeploy">undeploy(name, x__xgafv=None)</a></code></p>
<p class="firstline">Undeploys a shared flow revision from an environment. For a request path `organizations/{org}/environments/{env}/sharedflows/{sf}/revisions/{rev}/deployments`, two permissions are required: * `apigee.deployments.delete` on the resource `organizations/{org}/environments/{env}` * `apigee.sharedflowrevisions.undeploy` on the resource `organizations/{org}/sharedflows/{sf}/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, x__xgafv=None)</code>
  <pre>Deploys a revision of a shared flow. If another revision of the same shared flow is currently deployed, set the `override` parameter to `true` to have this revision replace the currently deployed revision. You cannot use a shared flow until it has been deployed to an environment. For a request path `organizations/{org}/environments/{env}/sharedflows/{sf}/revisions/{rev}/deployments`, two permissions are required: * `apigee.deployments.create` on the resource `organizations/{org}/environments/{env}` * `apigee.sharedflowrevisions.deploy` on the resource `organizations/{org}/sharedflows/{sf}/revisions/{rev}`

Args:
  name: string, Required. Name of the shared flow revision to deploy in the following format: `organizations/{org}/environments/{env}/sharedflows/{sharedflow}/revisions/{rev}` (required)
  override: boolean, Flag that specifies whether to force the deployment of the new revision over the currently deployed revision by overriding conflict checks. If an existing shared flow revision is deployed, to ensure seamless deployment with no downtime, set this parameter to `true`. In this case, hybrid deploys the new revision fully before undeploying the existing revision. If set to `false`, you must undeploy the existing revision before deploying the new revision.
  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 a shared flow revision and actual state reported by runtime pods.

Args:
  name: string, Required. Name representing a shared flow in an environment in the following format: `organizations/{org}/environments/{env}/sharedflows/{sharedflow}/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, x__xgafv=None)</code>
  <pre>Undeploys a shared flow revision from an environment. For a request path `organizations/{org}/environments/{env}/sharedflows/{sf}/revisions/{rev}/deployments`, two permissions are required: * `apigee.deployments.delete` on the resource `organizations/{org}/environments/{env}` * `apigee.sharedflowrevisions.undeploy` on the resource `organizations/{org}/sharedflows/{sf}/revisions/{rev}`

Args:
  name: string, Required. Name of the shared flow revision to undeploy in the following format: `organizations/{org}/environments/{env}/sharedflows/{sharedflow}/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:

    { # 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>