<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.flowhooks.html">flowhooks</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#attachSharedFlowToFlowHook">attachSharedFlowToFlowHook(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Attaches a shared flow to a flow hook.</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="#detachSharedFlowFromFlowHook">detachSharedFlowFromFlowHook(name, x__xgafv=None)</a></code></p>
<p class="firstline">Detaches a shared flow from a flow hook.</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Returns the name of the shared flow attached to the specified flow hook. If there's no shared flow attached to the flow hook, the API does not return an error; it simply does not return a name in the response.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="attachSharedFlowToFlowHook">attachSharedFlowToFlowHook(name, body=None, x__xgafv=None)</code>
  <pre>Attaches a shared flow to a flow hook.

Args:
  name: string, Required. Name of the flow hook to which the shared flow should be attached in the following format: `organizations/{org}/environments/{env}/flowhooks/{flowhook}` (required)
  body: object, The request body.
    The object takes the form of:

{
  &quot;continueOnError&quot;: True or False, # Optional. Flag that specifies whether execution should continue if the flow hook throws an exception. Set to `true` to continue execution. Set to `false` to stop execution if the flow hook throws an exception. Defaults to `true`.
  &quot;description&quot;: &quot;A String&quot;, # Description of the flow hook.
  &quot;flowHookPoint&quot;: &quot;A String&quot;, # Output only. Where in the API call flow the flow hook is invoked. Must be one of `PreProxyFlowHook`, `PostProxyFlowHook`, `PreTargetFlowHook`, or `PostTargetFlowHook`.
  &quot;sharedFlow&quot;: &quot;A String&quot;, # Shared flow attached to this flow hook, or empty if there is none attached.
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
  &quot;continueOnError&quot;: True or False, # Optional. Flag that specifies whether execution should continue if the flow hook throws an exception. Set to `true` to continue execution. Set to `false` to stop execution if the flow hook throws an exception. Defaults to `true`.
  &quot;description&quot;: &quot;A String&quot;, # Description of the flow hook.
  &quot;flowHookPoint&quot;: &quot;A String&quot;, # Output only. Where in the API call flow the flow hook is invoked. Must be one of `PreProxyFlowHook`, `PostProxyFlowHook`, `PreTargetFlowHook`, or `PostTargetFlowHook`.
  &quot;sharedFlow&quot;: &quot;A String&quot;, # Shared flow attached to this flow hook, or empty if there is none attached.
}</pre>
</div>

<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="detachSharedFlowFromFlowHook">detachSharedFlowFromFlowHook(name, x__xgafv=None)</code>
  <pre>Detaches a shared flow from a flow hook.

Args:
  name: string, Required. Name of the flow hook to detach in the following format: `organizations/{org}/environments/{env}/flowhooks/{flowhook}` (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
  &quot;continueOnError&quot;: True or False, # Optional. Flag that specifies whether execution should continue if the flow hook throws an exception. Set to `true` to continue execution. Set to `false` to stop execution if the flow hook throws an exception. Defaults to `true`.
  &quot;description&quot;: &quot;A String&quot;, # Description of the flow hook.
  &quot;flowHookPoint&quot;: &quot;A String&quot;, # Output only. Where in the API call flow the flow hook is invoked. Must be one of `PreProxyFlowHook`, `PostProxyFlowHook`, `PreTargetFlowHook`, or `PostTargetFlowHook`.
  &quot;sharedFlow&quot;: &quot;A String&quot;, # Shared flow attached to this flow hook, or empty if there is none attached.
}</pre>
</div>

<div class="method">
    <code class="details" id="get">get(name, x__xgafv=None)</code>
  <pre>Returns the name of the shared flow attached to the specified flow hook. If there&#x27;s no shared flow attached to the flow hook, the API does not return an error; it simply does not return a name in the response.

Args:
  name: string, Required. Name of the flow hook in the following format: `organizations/{org}/environments/{env}/flowhooks/{flowhook}` (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
  &quot;continueOnError&quot;: True or False, # Optional. Flag that specifies whether execution should continue if the flow hook throws an exception. Set to `true` to continue execution. Set to `false` to stop execution if the flow hook throws an exception. Defaults to `true`.
  &quot;description&quot;: &quot;A String&quot;, # Description of the flow hook.
  &quot;flowHookPoint&quot;: &quot;A String&quot;, # Output only. Where in the API call flow the flow hook is invoked. Must be one of `PreProxyFlowHook`, `PostProxyFlowHook`, `PreTargetFlowHook`, or `PostTargetFlowHook`.
  &quot;sharedFlow&quot;: &quot;A String&quot;, # Shared flow attached to this flow hook, or empty if there is none attached.
}</pre>
</div>

</body></html>