Send Docs Feedback

Note: Most user interface tasks can be performed in Edge Classic or the New Edge experience. For an overview, getting started topics, and release notes specific to the New Edge experience, see the docs.

Python Script policy


The Python Script policy lets you add customized Python functionality to your API proxy flow, especially when the functionality you need is beyond what the Edge out-of-the-box policies provide.


This policy can be attached in the following locations, but see the notes following the table for specific guidance.

ProxyEndpoint TargetEndpoint
    PreFlow Flow PostFlow PreFlow Flow PostFlow    
    PostFlow Flow PreFlow PostFlow Flow PreFlow    


Python Script policy

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Script name="Python-1">

In this example, the element, ResourceURL specifies the relevant Python script resource.

Python Script

This shows what you might include in the Python script itself.

import base64

username = flow.getVariable("request.formparam.client_id")
password = flow.getVariable("request.formparam.client_secret")

base64string = base64.encodestring('%s:%s' % (username, password))[:-1]
authorization = "Basic "+base64string


Element reference

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Script name="Python-1">

The following attributes are common to all policy parent elements.

Attribute Description Default Presence

The internal name of the policy. Characters you can use in the name are restricted to: A-Z0-9._\-$ %. However, the Edge management UI enforces additional restrictions, such as automatically removing characters that are not alphanumeric.

Optionally, use the <DisplayName> element to label the policy in the management UI proxy editor with a different, natural-language name.

N/A Required

Set to false to return an error when a policy fails. This is expected behavior for most policies.

Set to true to have flow execution continue even after a policy fails.

false Optional

Set to true to enforce the policy.

Set to false to "turn off" the policy. The policy will not be enforced even if it remains attached to a flow.

true Optional

This attribute is deprecated.

false Deprecated

<DisplayName> element

Use in addition to the name attribute to label the policy in the management UI proxy editor with a different, natural-language name.

<DisplayName>Policy Display Name</DisplayName>


If you omit this element, the value of the policy's name attribute is used.

Presence: Optional
Type: String


<ResourceURL> element

This element specifies the main Python file that will execute in the API flow. You can store this file at the API proxy scope (under /apiproxy/resources/py in the API proxy bundle or in the Scripts section of the API proxy editor's Navigator pane), or at the organization or environment scopes for reuse across multiple API proxies, as described in Resource files. Your code can use the objects, methods, and properties of the JavaScript object model.

Default: None
Presence: Required
Type: String

<IncludeURL> element

Specifies a Python file to be loaded as dependency to the main Python file specified with the <ResourceURL> element. The scripts will be evaluated in the order in which they are listed in the policy.

Include more than one Python dependency resource with additional <IncludeURL> elements.

If your Python files are stored at the organization or environment level, be sure they were uploaded correctly with cURL using the -F option or as a file attachment through a REST client. Content-Type is multipart/form-data. For more information, see Resource files.

Default: None
Presence: Optional
Type: String

Usage notes

A Python policy contains no actual code. Instead, a Python policy references a Python 'resource' and defines the Step in the API flow where the Python script executes. You can upload your script through the Management UI proxy editor, or you can include it in the /resources/py directory in API proxies that you develop locally.

System calls are not permitted by the security model. For example: internal file system reads or writes, or getting current user info, the process list, or CPU/memory utilization. Although some such calls may be functional, they are unsupported and liable to be actively disabled at any time. For forward compatibility, you should avoid making such calls in your code.

Error codes

No error codes are specified for the Python Script policy.

Related topics

For working samples of API proxies, see the Samples list.


Help or comments?