Developer ToolsFree generatorPDF, Excel, Word exportJD Edwards EnterpriseOneAll JD Edwards EnterpriseOne tools

JD Edwards Orchestrator REST API Call Generator (AIS)

This generator writes a Python requests script and matching curl commands that call a JD Edwards EnterpriseOne orchestration through the AIS Server REST API. It covers both Basic authentication and the token flow (token request, orchestrator call, logout) used on Tools 9.2.

Fill in

Protocol, host and port of the AIS Server, without /jderest.

The name exactly as saved in Orchestrator Studio.

False = HTTP Basic auth on the orchestrator call. True = request an AIS token first, send it in the jde-AIS-Auth header, then log out.

Use the input names defined on the orchestration.

Generated code
Download:

Python (requests)

# Call JD Edwards orchestration JDE_ORCH_AddSalesOrder through AIS (v3)
# pip install requests
import json
import os

import requests

AIS = 'https://ais.example.com:9300/jderest'
ORCH = 'JDE_ORCH_AddSalesOrder'
USER = 'INTEGUSER'
PASSWORD = os.environ.get('JDE_PASSWORD', '')  # never hard-code the password
ENV = 'JDV920'
ROLE = '*ALL'
DEVICE = 'integration-host-01'
USE_TOKEN = False
VERIFY = True  # or the path to your internal CA bundle, e.g. '/etc/ssl/certs/corp-ca.pem'

inputs = json.loads(r'''{"Customer": "4242", "Branch": "30"}''')

session = requests.Session()
session.headers.update({'Content-Type': 'application/json', 'Accept': 'application/json'})
token = None
auth = None

if USE_TOKEN:
    # (1) POST /jderest/v2/tokenrequest, token is returned in userInfo.token
    login = session.post(
        AIS + '/v2/tokenrequest',
        json={'username': USER, 'password': PASSWORD, 'environment': ENV,
              'role': ROLE, 'deviceName': DEVICE},
        timeout=60, verify=VERIFY)
    login.raise_for_status()
    token = login.json()['userInfo']['token']
    session.headers.update({'jde-AIS-Auth': token, 'jde-AIS-Auth-Device': DEVICE})
else:
    # Basic auth: AIS uses its configured default environment and role
    auth = (USER, PASSWORD)

try:
    # (2) POST /jderest/v3/orchestrator/{name} with the orchestration inputs
    resp = session.post(AIS + '/v3/orchestrator/' + ORCH,
                        json=inputs, auth=auth, timeout=120, verify=VERIFY)
    resp.raise_for_status()
    print(json.dumps(resp.json(), indent=2))
finally:
    if token:
        # (3) POST /jderest/v2/tokenrequest/logout ends the AIS session
        session.post(AIS + '/v2/tokenrequest/logout', json={'token': token},
                     timeout=30, verify=VERIFY)

Same call with curl (Basic auth)

curl -s -X POST 'https://ais.example.com:9300/jderest/v3/orchestrator/JDE_ORCH_AddSalesOrder' \
  -u 'INTEGUSER:YOUR_PASSWORD' \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -d '{"Customer": "4242", "Branch": "30"}'

curl with an AIS token

TOKEN=$(curl -s -X POST 'https://ais.example.com:9300/jderest/v2/tokenrequest' \
  -H 'Content-Type: application/json' \
  -d '{"username":"INTEGUSER","password":"YOUR_PASSWORD","environment":"JDV920","role":"*ALL","deviceName":"integration-host-01"}' \
  | jq -r '.userInfo.token')

curl -s -X POST 'https://ais.example.com:9300/jderest/v3/orchestrator/JDE_ORCH_AddSalesOrder' \
  -H 'Content-Type: application/json' \
  -H "jde-AIS-Auth: $TOKEN" \
  -H 'jde-AIS-Auth-Device: integration-host-01' \
  -d '{"Customer": "4242", "Branch": "30"}'

curl -s -X POST 'https://ais.example.com:9300/jderest/v2/tokenrequest/logout' \
  -H 'Content-Type: application/json' \
  -d "{\"token\":\"$TOKEN\"}"

Paths follow the Oracle JD Edwards EnterpriseOne 9.2 AIS REST API reference: POST /jderest/v2/tokenrequest (token in userInfo.token), POST /jderest/v3/orchestrator/{orchestration} (token header jde-AIS-Auth), POST /jderest/v2/tokenrequest/logout with a token body field. Check that your Tools release supports v3 and Basic auth on the orchestrator endpoint, and that the user is authorised to the orchestration in Security Workbench.

Get your AIS integration reviewed

Send us the orchestration and your target client (Python, Power Automate, MES) and we will check auth, error handling and session cleanup against your Tools release.

Optional. The tool and every export work without this. No spam.

Was this tool useful?

How to use it

Enter the AIS base URL (the same host and port your Orchestrator Studio uses, without /jderest), the orchestration name exactly as saved, and the input JSON using the input names defined on the orchestration. Pick v3 unless your Tools release predates it. Leave Authentication on False for a single call with HTTP Basic auth, or set it to True when you make several calls and want one AIS session: the script requests a token, sends it in the jde-AIS-Auth header and logs out in a finally block so sessions do not pile up on the AIS Server. The password is read from the JDE_PASSWORD environment variable, never from the script.

  • Run it first against a development path code (JDV920) with a test orchestration
  • Copy the input names from the orchestration's Inputs grid, they are case sensitive
  • Set VERIFY to your internal CA bundle if AIS uses a company certificate

Where this lives in EnterpriseOne

Orchestrations are built in Orchestrator Studio and stored as user defined objects (UDOs), so a user can only run one that is shared or published to them and authorised for their role. The AIS Server exposes every orchestration at /jderest/{version}/orchestrator/{name}; the token service at /jderest/v2/tokenrequest returns a token in userInfo.token along with the environment, role and user details. Older integrations use the unversioned /jderest/tokenrequest and /jderest/orchestrator/{name} paths, which still exist for compatibility. Because the endpoint is plain HTTPS with JSON, the same URL can be called from Power Automate, Power Apps, Excel Power Query or a scheduler, not just from Python.

Version differences and gotchas

The v3 and v2 orchestrator endpoints can return the output in different shapes, so compare the response in the Orchestrator Studio test panel with what your code parses before switching versions. With Basic auth and no other headers the AIS Server uses its configured default environment and role; from Tools 9.2.4 you can add the jde-AIS-Auth-Environment and jde-AIS-Auth-Role headers to choose them, and on older releases the token flow is the way to pass environment and role. A 444 response means the token is invalid or expired, and an authorisation error usually means the user's role is not allowed to run the orchestration in Security Workbench. Long-running orchestrations need a client timeout longer than the default; the script uses 120 seconds.

How to check the result in the system

Run the script with a test input and confirm the response JSON matches the orchestration outputs you mapped. Then check the business result in EnterpriseOne itself, for example the new order in Sales Order Entry or the updated record in the target table. If the call fails, the AIS Server log and the orchestration's own error handling show which step failed, and the HTTP status plus the message in the response body usually name the failing step or input.

Frequently Asked Questions

How do I get an AIS token for JD Edwards?

POST a JSON body with username, password, environment, role and deviceName to /jderest/v2/tokenrequest on the AIS Server. The token comes back in userInfo.token. Send it on later calls in the jde-AIS-Auth header and end the session with a POST to /jderest/v2/tokenrequest/logout carrying the token in the body.

Can I call a JDE orchestrator REST API with Basic authentication?

Yes, on supported Tools releases you can call /jderest/v3/orchestrator/{name} with an HTTP Basic Authorization header and skip the token request. AIS then runs the orchestration in its configured default environment and role, unless you add the jde-AIS-Auth-Environment and jde-AIS-Auth-Role headers (Tools 9.2.4 and later). Use the token flow for many calls in one session.

How do I call a JDE orchestration from Excel?

Use the same URL and JSON body from Power Query (Web connector with an advanced POST), a VBA XMLHTTP request, or Power Automate. The orchestration does not know or care which client calls it; what matters is a valid credential, the Content-Type application/json header, and input names that match the orchestration.

What is the difference between v2 and v3 orchestrator calls?

Both run the same orchestration, but the response format and the supported headers differ between versions, and v3 is the current path in the 9.2 REST reference. Test the call in Orchestrator Studio, look at the output shape, and code your parser against the version you will actually use in production.

If you want planners and buyers to ask JD Edwards questions in plain English on your own servers, with orchestrations like this as the controlled write path, we can set that up.

ArchRay builder
Design the on-prem AI stack for JD Edwards EnterpriseOne: model, GPUs, RAG pipeline, guardrails
See memory, speed and cost as you swap parts, then export the diagram. Free, in your browser.
Open the builder

Keep exploring

Free tools

ERP fixes and how-tos

Runs with your ERP

Guides

AI on your ERP

Integrations

Software