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.
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.
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.
Related Tools
JD Edwards Orchestrator Groovy Custom Request Script Generator
Generate a Groovy custom service request for JD Edwards Orchestrator that reads delimited text from an input, returns it as an array of rows and logs to the AIS Server log.
OracleJD Edwards Orchestrator Design Template
A fill-in design document for a JD Edwards Orchestrator orchestration: purpose, inputs, steps, rules, outputs, security and test cases.
OracleJDE Orchestrator API Concurrency Sizing Calculator
Convert peak calls per hour and average response time into concurrent requests, threads and JVM count, with a burst factor.
Developer ToolsJD Edwards C Business Function Skeleton Generator
Generate the .h and .c skeleton of a JD Edwards EnterpriseOne C business function that reads one table record by key, returns a value and sets an error correctly.
More Developer Tools tools
See all- JD Edwards UDC Lookup SQL Generator (F0004, F0005)
- JD Edwards F0911Z1 Journal Entry Batch Input SQL Generator
- JD Edwards Received Not Vouchered SQL Generator (F43121, F4311)
- JD Edwards F3002 Multi-Level BOM Explosion SQL Generator
- SAP Sales Order ABAP SELECT Generator (VBAK, VBAP, VBFA)
- SAP Sales Order Create BAPI ABAP Generator (BAPI_SALESORDER_CREATEFROMDAT2)
- SAP ABAP Open Items SELECT Generator
- SAP ACDOCA SQL Query Generator
- SAP QM Inspection Lot ABAP SELECT Generator
Keep exploring
Free tools
- JD Edwards Orchestrator Design TemplateA fill-in design document for a JD Edwards Orchestrator orchestration: purpose, inputs, steps, rules, outputs, security and test cases.
- JD Edwards Orchestrator Groovy Custom Request Script GeneratorGenerate a Groovy custom service request for JD Edwards Orchestrator that reads delimited text from an input, returns it as an array of rows and logs to the AIS Server log.
- JD Edwards Orchestrator Error Handling and Production Readiness ChecklistCheck an EnterpriseOne orchestration before it goes live: what happens when a step fails, who it runs as, how it is monitored and scheduled, and how it is promoted.
ERP fixes and how-tos
- How to set up JD Edwards Orchestrator (step by step)Set up a working JD Edwards Orchestrator end to end: enable the AIS server, build a form or service request, wire it into an orchestration, and call it over REST.
- How to Add a Private AI Layer to JD Edwards EnterpriseOne On-PremAdd a private AI layer to JD Edwards EnterpriseOne: AIS data service, Orchestrator, Security Workbench mapping, a local model and human approval.
- JD Edwards API Documentation: AIS REST, Orchestrator, BSSV and Connector OptionsJD Edwards integration options explained: AIS REST, Orchestrator, business services (BSSV), Z-files and third-party connectors such as Concur, with trade-offs.
Runs with your ERP
- Oracle Digital Assistant, OCI AI and JD Edwards OrchestratorHow JD Edwards Orchestrator calls OCI REST APIs for a chat assistant, document understanding and generative AI, with setup steps, pitfalls and on-prem options.
- Oracle CPQ and JD Edwards EnterpriseOne: quote to sales orderHow Oracle CPQ integrates with JD Edwards EnterpriseOne: customer data into quotes, sales orders created from quotes, and status back, with setup and pitfalls.
- RF-SMART and JD Edwards EnterpriseOne: Barcode Scanning and Mobile WMSHow RF-SMART connects barcode scanning to JD Edwards EnterpriseOne and World: integration method, data flows, setup steps, pitfalls and where private AI helps.
AI on your ERP
- AI for JD Edwards EnterpriseOne, Built on Orchestrator and AISAdd AI to JD Edwards E1 9.2 using Orchestrator, AIS, and BSSV rather than screen-scraping. Ground a private LLM on F4211, F4111, and F0411 data.
- AI for JD Edwards Inventory Management and Shop Floor ManufacturingAI on JD Edwards EnterpriseOne inventory and manufacturing: item ledger, work orders, MRP messages and cost variances, answered in plain English on your own servers.
Integrations
- How to add WhatsApp to JD Edwards EnterpriseOneHow to connect WhatsApp Business to JD Edwards EnterpriseOne using AIS REST, Orchestrator and Real Time Events: order status, shipment alerts, approvals and supplier replies.
- How to add Slack to JD Edwards EnterpriseOneConnect Slack to JD Edwards EnterpriseOne with AIS REST and Orchestrator: slash commands, interactive approvals, shortage alerts and an on-prem relay design.