Guidelines for creating a DataPower configuration that extends Gateway server behavior

Before you develop your extensions, consider the following guidelines.

You can create DataPower® Processing Rules that can extend the enforcement behavior of the API Connect Gateway server at the following locations:
  • pre-request extension:
    • Before the Gateway server begins processing the request with policies in the assembly.
  • post-request extension:
    • After the Gateway server processes all of the policies in the assembly up to the proxy policy, if a proxy policy is used.
    • After the Gateway server processes all policies in the assembly, but before any catch logic is processed, if a proxy policy is not used.
  • post-response extension:
    • After the Gateway server processes all of the remaining policies in the assembly after the proxy policy (including catch logic), but before the response is returned to the client application, if a proxy policy is used.
    • After the Gateway server processes the catch logic, but before the response is returned to the client application, if a proxy policy is not used.
  • post-error extension:
    • If an error occurs, then before the Gateway server returns the error response to the client application.
To configure the Gateway server to call your extension Processing Rule, you must create an XML file that indicates the extension location and Processing Rule name. For example,
<extensions>
<extension location="pre-request">CustomRule1</extension>
<extension location="post-request">CustomRule2</extension>
<extension location="post-response">CustomRule3</extension>
<extension location="post-error">CustomRule4</extension>
</extensions>

The <extension> element entries are optional for any of the locations. Refer to the Gateway server Extension schema for the XML file syntax.

An extension Processing Rule can be applied to a specific organization or to all of the organizations and Catalogs. If the <extension> element does not have a tenant attribute, then the <extension> element is applied to all of the organizations. The following example shows an <extension> element without a tenant attribute.
<extension location="post-error">gen_error_handling</extension>
To apply an extension Processing Rule to a specific organization, enter the organization name as the value for the tenant attribute in the <extension> element. The following example shows an <extension> element with a tenant attribute value of organization1.
<extension location="post-error" tenant="organization1">organization1_error_handling</extension>
If you want to exclude a specific organization in an extension Processing Rule, enter the organization name as the value for the tenant attribute in an empty <extension> element. Add the empty <extension> element immediately after the custom rule <extension> element that you want to exclude the organization from. The following example shows an empty <extension> element with a tenant attribute value of organization1.
<extension location="pre-request">a_specified_CustomRule</extension>
<extension location="pre-request" tenant="organization1"></extension>
Important: An extension Processing Rule with a specified tenant attribute takes precedence over an <extension> element that applies to all of the organizations. Also, only one extension Processing Rule is applied to each extension location.
This XML file must be saved to the following location and included in your DataPower exported configuration .zip file:
local:///ext/extensions.xml

There can be only one DataPower exported configuration .zip file added to a Gateway server in API Connect.

DataPower configuration restrictions

All Processing Rules have read access to the INPUT context.

Processing Rules must not rely on context variables that are created by the IBM® Gateway server enforcement configuration, because those configuration variables might change in the future.

All Processing Rules except Before Request can transform or alter the message flowing through the Gateway server. Ensure that the Processing Rule returns the desired message output context back to the Gateway server at the end of processing.

To avoid name conflicts, all DataPower configuration object names prefixed with webapi are reserved for IBM use.

The following folders cannot be modified:
  • local:///isp/*
  • local:///gwapi/*

As a best practice, avoid adding asynchronous actions in your custom Processing Rules because they increase the use of memory per transaction.