Skip to content
Back to skills

Source 2d12dfd1611823be3125043b

ASecurity

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.

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added November 7, 2026
ai-agentspythongobashgitapi

Works with

  • api

Security analysis

A100/100

Pro scans all 3 files and shows the line behind each finding

Scanned November 7, 2026

npx -y skills add gutsofpratik/OpenClaude-Skills --skill source-2d12dfd1611823be3125043b --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Source 2d12dfd1611823be3125043b?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Source 2d12dfd1611823be3125043b
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/gutsofpratik-source-2d12dfd1611823be3125043b/badge)](https://www.skillsdirectory.com/skills/gutsofpratik-source-2d12dfd1611823be3125043b)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
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)

Files in this skill

  • PROVENANCE.json303 B
  • SKILL.md4.8 KB
  • UPSTREAM-LICENSE.txt1.1 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.