| name | aidp-fusion-rest |
| description | Pull data from Oracle Fusion ERP / HCM / SCM REST APIs into a Spark DataFrame from an AIDP notebook. Use when the user mentions Fusion ERP, Fusion REST API, FA REST, Cloud ERP, or wants live data from a Fusion pod. HTTP Basic auth only. For volumes >499 rows/page or bulk extracts, route to aidp-fusion-bicc. |
| allowed-tools | Read, Write, Edit, Bash |
aidp-fusion-rest — Fusion ERP / HCM / SCM REST → Spark
When to use
- User wants to pull a small-to-medium volume of records from Fusion REST APIs (
/fscmRestApi/, /hcmRestApi/, etc.) into a Spark DataFrame.
- User mentions: "Fusion ERP", "Fusion REST", "FA REST", "Cloud ERP API".
- Total expected rows fit comfortably in memory (≤ ~50k); for >499 rows the helper auto-pages, but for bulk → BICC is faster.
When NOT to use
- For bulk extracts (>50k rows, daily snapshots) → use
aidp-fusion-bicc. Fusion's REST surface is hard-capped at 499 rows/page (MOS Doc ID 2429019.1) — pulling millions paginated is slow.
- For EPM Cloud Planning → use
aidp-epm-cloud.
- For Essbase MDX → use
aidp-essbase.
Prerequisites in the AIDP notebook
pip install requests pandas (usually already on the cluster).
- Helpers on
sys.path.
- Fusion pod URL + HTTP Basic credentials.
Auth: HTTP Basic
import os
from oracle_ai_data_platform_connectors.auth import http_basic_session
from oracle_ai_data_platform_connectors.rest.fusion import (
fetch_paged, rows_to_spark_dataframe,
)
session = http_basic_session(
username=os.environ["FUSION_USER"],
password=os.environ["FUSION_PASSWORD"],
base_url=os.environ["FUSION_BASE_URL"],
)
rows = fetch_paged(
session=session,
base_url=os.environ["FUSION_BASE_URL"],
path="/fscmRestApi/resources/11.13.18.05/invoices",
fields="InvoiceId,InvoiceNumber,InvoiceAmount,InvoiceDate",
extra_params={"q": "InvoiceDate >= '2026-01-01'"},
)
df = rows_to_spark_dataframe(spark, rows)
df.show(5)
print("rows:", df.count())
Gotchas
- 499 row/page hard cap — Fusion silently truncates
limit=500+ to 499. Helper enforces this automatically.
onlyData=true — helper sets this so only the actual fields come back, not Fusion's HATEOAS link envelope. Saves bandwidth.
q= filter syntax is Fusion-specific (q=InvoiceDate >= '2026-01-01' AND Status = 'PAID'). Quote string values in single quotes.
- Nested struct columns — Fusion responses contain nested objects (links, addresses).
rows_to_spark_dataframe() defaults to mode="json_string" which packs each row into a single row_json column. Use from_json downstream to project specific fields.
- Network — Fusion pods are public (
*.fa.<region>.oraclecloud.com); no AIDP VCN routing needed.
References