Skip to main content

aidp-rest-generic

Pull data from any REST API into a Spark DataFrame using the AIDP `aidataplatform` Generic REST connector. Use when the user has a non-Fusion / non-EPM / non-Essbase REST endpoint with a `manifest.url` describing the schema. Auth is HTTP Basic with derived properties driving query parameters.

설치로 이동

소스 정보

저장소
oracle-samples/oracle-aidp-samples
최근 소스 활동
2026년 6월 26일 15:45
감지된 SKILL.md 언어
영어
스타
46
포크
30

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
aidp-rest-generic
description
Pull data from any REST API into a Spark DataFrame using the AIDP `aidataplatform` Generic REST connector. Use when the user has a non-Fusion / non-EPM / non-Essbase REST endpoint with a `manifest.url` describing the schema. Auth is HTTP Basic with derived properties driving query parameters.
allowed-tools
Read, Write, Edit, Bash
# `aidp-rest-generic` — Generic REST via AIDP `aidataplatform` (`type=GENERIC_REST`) Read from arbitrary REST APIs as a Spark DataFrame. The connector requires a server-published **manifest** (a small JSON describing each API endpoint, parameters, and response schema) so it knows how to parse responses without a custom integration. ## When to use - Any REST endpoint that exposes a manifest URL (custom enterprise APIs commonly do). - Mentioned: "Generic REST", "manifest URL", "REST connector". ## When NOT to use - For **Fusion ERP/HCM/SCM** REST → [`aidp-fusion-rest`](../aidp-fusion-rest/SKILL.md). Different shape (no manifest; ≤499/page paging). - For **Fusion BICC** bulk extracts → [`aidp-fusion-bicc`](../aidp-fusion-bicc/SKILL.md). - For **EPM Cloud Planning** → [`aidp-epm-cloud`](../aidp-epm-cloud/SKILL.md). - For **Essbase** → [`aidp-essbase`](../aidp-essbase/SKILL.md). ## Read ```python import os from oracle_ai_data_platform_connectors.aidataplatform import ( AIDP_FORMAT, aidataplatform_options, ) opts = aidataplatform_options( type="GENERIC_REST", user=os.environ["REST_USER"], password=os.environ["REST_PASSWORD"], schema=os.environ.get("REST_SCHEMA", "default"), extra={ "base.url": os.environ["REST_BASE_URL"], # e.g. http://api.internal/v1 "manifest.url": os.environ["REST_MANIFEST_URL"], # e.g. http://api.internal/v1/manifest "auth.type": "basic", "api": os.environ["REST_API"], # e.g. "getOrdersByOrderID" # Any number of derived.property.<name> values feed into the API call: "derived.property.orderNo": os.environ.get("REST_ORDER_NO", "12345"), }, ) df = spark.read.format(AIDP_FORMAT).options(**opts).load() df.show(5) ``` ## Manifest contract The manifest describes: - `apis` — the named API operations (e.g. `getOrdersByOrderID`) - `parameters` — what the connector should send (path/query/body) - `responseSchema` — the Spark schema the connector should infer If you don't have a manifest URL, this connector won't work — fall back to the requests-based pattern in [`aidp-fusion-rest`](../aidp-fusion-rest/SKILL.md) and adapt for your API. ## Multiple derived properties Pass each as a separate `extra={}` key: ```python extra={ "base.url": "...", "manifest.url": "...", "auth.type": "basic", "api": "searchOrders", "derived.property.fromDate": "2025-01-01", "derived.property.toDate": "2025-12-31", "derived.property.status": "OPEN", } ``` ## Manifest from a workspace / volume path (`manifest.path`) If the manifest is a static file you've uploaded to your AIDP workspace or a Volume — instead of being served over HTTP — use `manifest.path` instead of `manifest.url`. Same shape, different source. Useful when the manifest is hand-authored or version-pinned alongside your notebook. ```python opts = aidataplatform_options( type="GENERIC_REST", user=os.environ["REST_USER"], password=os.environ["REST_PASSWORD"], schema="default", extra={ "base.url": os.environ["REST_BASE_URL"], "manifest.path": "/Volumes/myvol/manifests/orders_api.json", "auth.type": "basic", "api": "searchOrders", "derived.property.status": "OPEN", }, ) df = spark.read.format(AIDP_FORMAT).options(**opts).load() ``` The path can be: - `/Volumes/<catalog>/<schema>/<volume>/path/to/manifest.json` (AIDP Volume) - `/Workspace/Shared/.../manifest.json` (workspace file — works but FUSE-flaky) Volume paths are the preferred location. ## Gotchas - **`auth.type=basic` only.** If the API uses OAuth / API key headers / mTLS, this connector won't help — use the Python `requests` path. - **Manifest must be reachable from the AIDP cluster's VCN.** Egress restrictions apply. - **Schema `schema` option is the AIDP/Spark logical schema** for the resulting DataFrame, not a server-side one. Use `default` if unsure. - **Paging** is handled by the connector based on the manifest. If the manifest declares `maxPageSize`, the connector batches automatically. ## References - Helper: [scripts/oracle_ai_data_platform_connectors/aidataplatform.py](../../scripts/oracle_ai_data_platform_connectors/aidataplatform.py) - Official sample: [oracle-samples/oracle-aidp-samples → `data-engineering/ingestion/Read_Only_Ingestion_Connectors.ipynb`](https://github.com/oracle-samples/oracle-aidp-samples/blob/main/data-engineering/ingestion/Read_Only_Ingestion_Connectors.ipynb)
GitHub에서 보기