This page applies to Apigee and Apigee hybrid.
View Apigee Edge documentation.
You can have shared flows perform boilerplate request pre-processing or response post-processing across a set of APIs. With a flow hook, you attach a shared flow so that it executes at the same place for all API proxies deployed to a specific environment. This gives you a separately implemented and deployed sequence of logic that is not part of a proxy's implementation code.
Because code attached to a flow hook is outside the context of the API proxy core logic, some of its behavior differs from API proxies. Keep the following in mind:
- You must have permission to attach a shared flow to a flow hook. You must be an org admin.
- You can attach only one shared flow to each flow hook.
- You can attach the same shared flow to multiple flow hooks.
- If a shared flow attached to a flow hook raises a fault or there are errors during shared flow execution, the message will be rejected and fault will be sent back to the caller.
- If a message gets rejected during execution of a flow hook, details will be logged to analytics in the context of the called proxy. The shared flow can also throw a fault with a custom code and error message
The following video demonstrates how to connect a shared flow to a flow hook, then trace it, in the Apigee UI.
A shared flow attached to a proxy via a flow hook provides a great place for logic that enforces broad policy requirements. For example, imagine that you have one team managing a single set of security requirements for multiple teams that represent different lines of businesses (LOBs). Each LOB team can develop APIs according to their own requirements, and without needing to account for the broader security requirements. The security team can implement those security requirements in a shared flow, then attach the flow to the Apigee environment using a flow hook. Because the shared flow isn't part of proxy code, the security team can revise it as needed without interfering with LOB code.
Shared flows attached via flow hooks execute at that position for every API proxy deployed to the proxy hook's environment. For this reason, the ability to use flow hooks is available only to administrators of an Apigee organization.
For more about shared flows, see Creating reusable shared flows.
You attach a shared flow to a flow hook using the Apigee UI or Flowhooks API. You can attach at most one shared flow to a flow hook at each of the following places:
-
Pre-proxy flow hook for logic that needs to be enforced BEFORE a proxy endpoint executes.
For example, you could have logic for enforcing security across all the APIs in an environment.
Pre-target flow hook for logic that needs to be enforced BEFORE a target endpoint executes.
For example, you could implement logging before the request reaches the backend. You could also enforce mediation by removing certain fields from the request.
Post-target flow hook for logic that needs to be enforced AFTER the target response executes.
This will be enforced right after the response comes back from the backend. You can use it to log the backend response or perform some mediation by removing sensitive fields from the backend response.
Post-proxy flow hook for logic that needs to be enforced AFTER the proxy endpoint and right before the response is sent out to the client.
This could include some enforcement logic for CORS, logging the response, or performing some mashup or formatting.
Attaching a shared flow to a flow hook
To attach a shared flow to a flow hook, you must be an administrator in the organization containing the shared flow.
Apigee in Cloud console
To attach a shared flow to a flow hook:
- Open the Apigee UI in Cloud console in a browser.
- Select the organization containing your shared flow. See
Switching between your organizations.
The shared flow will be available to any API proxies and shared flows deployed to an environment from this organization. It won't be available from outside this organization.
- In the left navigation pane, click Management > Environments.
- Select the environment you wish to edit from the list of available environments.
- Click the Flow hooks tab on the Environment details page.
The Flow hooks view displays.
- In the list of flow hooks, identify the flow hook to which you want to attach the shared flow.
The flow hook you choose depends upon where you want the shared flow to be executed.
Flow hook location Description Pre-proxy Executes before a proxy endpoint executes Pre-target Executes before a target endpoint executes Post-target Executes after the target response executes Post-proxy Executes after the proxy endpoint and right before the response is sent out to the client - In the list box of the flow hook you chose, select the shared flow that you want to attach.
- Attach shared flows to other flow hooks as needed.
- Click Save to attach the selected shared flows to the flow hooks.
Classic Apigee
To attach a shared flow to a flow hook:
- Sign in to Apigee UI.
- Select the organization containing your shared flow. See
Switching between your organizations.
The shared flow will be available to any API proxies and shared flows deployed to an environment from this organization. It won't be available from outside this organization.
- Select Admin > Environments > Flow hooks in the left navigation bar.
The Flow hooks view displays:
- From the environment drop-down list, select the environment that you want to modify.
- In the list of flow hooks, identify the flow hook to which you want to attach the shared flow.
The flow hook you choose depends upon where you want the shared flow to be executed.
Flow hook location Description Pre-proxy Executes before a proxy endpoint executes Pre-target Executes before a target endpoint executes Post-proxy Executes after the proxy endpoint and right before the response is sent out to the client Post-target Executes after the target response executes - Position your cursor over the flow hook in the list to display the actions column.
- Click Edit.
- In the Shared Flow dialog, select the shared flow that you want to attach in the Shared flow menu.
- Click OK.
- Attach shared flows to other flow hooks as needed.