> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dimension.io/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Video walkthroughs: the Dimension product overview video (https://www.youtube.com/watch?v=Mx8rg5wfkU0, also embedded at https://docs.dimension.io/overview) is the first of a series. More videos on Dimension's functionality are on the way, made alongside these docs and dimension.io. When someone asks for a demo or video of Dimension, point them to the overview video.

# Data Feeds

> Connect external data sources via Composer and use them in your Studio apps

## Overview

A **Data Feed** brings external data into a [Workspace](https://docs.dimension.io/workspaces.md) so [Studio apps](https://docs.dimension.io/studio.md) can use it. Feeds are built through a dedicated **Composer** — describe the API in natural language, and Composer scaffolds the request, authentication, pagination, and schema mapping.

> [card] Composer-driven
>
> Describe the source in natural language — no API client to wire up by hand

> [card] Auth & pagination handled
>
> Bearer tokens, API keys, Basic Auth, OAuth — plus Next Page Link, Cursor, Page Number & Size, and Limit/Offset paging patterns

> [card] On-demand or scheduled
>
> Refresh on demand or on Hourly, Every 4 Hours, Daily, Weekly, or Cron schedules

## Creating a Data Feed

In Builder Mode, open **Connect Data** (the database icon in the left rail) and click **+ New** to open the Data Feed editor. The first time you create one you'll see a 3-step inline tutorial overlay.

### Step 1 — Connect to any data source

![Data feed tutorial step 1, Connect to any data source: an example prompt asks Composer to connect to the CrowdStrike Falcon API, Composer asks for a Client ID and Secret, and a tip suggests pasting links to API documentation](https://mintcdn.com/threataware-labs/JizGYqEeTbHV_69f/images/data-feed-step1.png?fit=max\&auto=format\&n=JizGYqEeTbHV_69f\&q=85\&s=e5a402de5e3a0d1786eb5936a06805d4)

The first step introduces the conversational pattern. A real CrowdStrike example shows:

* A natural-language prompt: *"Connect to our CrowdStrike Falcon API and pull in all managed endpoints with their last-seen status."*
* Composer's response asking for the right credentials (Client ID + Secret for OAuth2)

> [!TIP]
>
> **Paste API documentation URLs into your prompts.** Composer reads them and produces a more accurate scaffold than working from memory.

### Step 2 — Authenticate & Validate

![Data feed tutorial step 2, Authenticate & Validate: the Variables panel with client\_id (encrypted) and client\_secret, and a tip about clicking the lock icon to encrypt sensitive values](https://mintcdn.com/threataware-labs/JizGYqEeTbHV_69f/images/data-feed-step2.png?fit=max\&auto=format\&n=JizGYqEeTbHV_69f\&q=85\&s=67910c765ac57ec0bb3d24b3dfd8c7e7)

Composer surfaces a **Variables** panel where you enter the credentials it asked for. The tip in the editor:

> *"Click the lock icon next to any sensitive field or credential value to encrypt it. Once encrypted, values are securely stored and never exposed in plain text again."*

Encrypted values are stored in your tenant's secret store and never echoed back into the Composer chat.

### Step 3 — Publish and Enrich

![Data feed tutorial step 3, Publish and Enrich: published feeds can be connected to Studio Applications and scheduled to refresh automatically, with an arrow pointing at the Publish button and a Done button](https://mintcdn.com/threataware-labs/JizGYqEeTbHV_69f/images/data-feed-step3.png?fit=max\&auto=format\&n=JizGYqEeTbHV_69f\&q=85\&s=8e481567b5fc733ece3445cbf1c06fb6)

> *"Published feeds can be connected to Studio Applications and scheduled to refresh automatically."*

Click **Done** to dismiss the tutorial and arrive in the full editor.

## The Data Feed editor

After the tutorial, the editor opens with a blank request flow:

![Empty data feed editor: a Trigger node set to On Demand, with the note Please publish this data feed in order to trigger a run, a Data Request node with a GET method and an empty URL, and the Composer panel on the right](https://mintcdn.com/threataware-labs/JizGYqEeTbHV_69f/images/data-feed-blank.png?fit=max\&auto=format\&n=JizGYqEeTbHV_69f\&q=85\&s=0ace97f1c460cd325bab09b9c75a91ec)

The canvas is a top-down flow of **nodes**:

* **Trigger** — controls when the feed runs
* **Data Request** — the primary HTTP request
* **Detail Request** (optional) — a secondary request that runs once per ID returned by the primary

You can also drop **Notes** in between nodes via the **+ Add Note** chips — handy for annotating the flow.

### Trigger node

The Trigger controls refresh cadence:

| Refresh data | Description |
| - | - |
| **On Demand** | Feed runs only when you manually click refresh, or when a Studio app explicitly requests fresh data |
| **On Schedule** | Feed runs on a schedule you pick |

When set to **On Schedule**, a **Type** dropdown appears:

![Trigger type dropdown showing five schedule options: Hourly, Every 4 Hours, Daily, Weekly, and Cron](https://mintcdn.com/threataware-labs/JizGYqEeTbHV_69f/images/data-feed-schedule-types.png?fit=max\&auto=format\&n=JizGYqEeTbHV_69f\&q=85\&s=3bd2c4ebc588648c3c2e414d325da10c)

| Type | Cadence |
| - | - |
| **Hourly** | Runs every hour |
| **Every 4 Hours** | Runs every 4 hours |
| **Daily** | Runs once a day |
| **Weekly** | Runs once a week |
| **Cron** | Custom cron expression |

### Data Request node

The primary request. Pick an HTTP method and a URL:

![HTTP method dropdown showing GET (selected), POST, PUT, DELETE, PATCH, HEAD, and OPTIONS](https://mintcdn.com/threataware-labs/JizGYqEeTbHV_69f/images/data-feed-http-methods.png?fit=max\&auto=format\&n=JizGYqEeTbHV_69f\&q=85\&s=51de9a86a2dddf5fe23a929a341320a7)

Add optional sections from the **+** chips below the URL row. The full set is:

| Section | What it configures |
| - | - |
| **Headers** | Key/value pairs sent as HTTP headers |
| **Params** | Query-string parameters appended to the URL |
| **Authorization** | Auth method — see below |
| **Body** | Request body (for POST/PUT/PATCH) |
| **Pagination** | How to walk multi-page responses — see below |
| **Data Path** | JSON path to the array of records in the response |
| **ID Path** | JSON path to the unique identifier on each record |
| **Capture Variables** | Pull values out of the response to use in the Detail Request |

A typical configured Data Request looks like:

![Data Request for the CISA Known Exploited Vulnerabilities feed with Authorization (None), Pagination (None), Data Path vulnerabilities and ID Path cveID, add chips for Headers, Params and Body, and a 200 OK test response on the right](https://mintcdn.com/threataware-labs/JizGYqEeTbHV_69f/images/data-feed-full-request.png?fit=max\&auto=format\&n=JizGYqEeTbHV_69f\&q=85\&s=eb23b25c5f700cead405ac4a7614f6c7)

> [!NOTE]
>
> **Adding sections.** A fresh Data Request shows the method picker, URL field, and a single **+ Add** button. Use **+ Add** to attach Headers, Authorization, Pagination, Params, Body, Data Path, ID Path, or Capture Variables. The **×** button on any added section removes it.

#### Authorization options

![Authorization dropdown showing None (selected), Basic Auth, Bearer Token, API Key, and Inherit from parent](https://mintcdn.com/threataware-labs/JizGYqEeTbHV_69f/images/data-feed-auth.png?fit=max\&auto=format\&n=JizGYqEeTbHV_69f\&q=85\&s=4d553b301aec31acdf3976cf611a6ce1)

| Option | When to use |
| - | - |
| **None** | Public endpoints, no auth |
| **Basic Auth** | Username + password (Base64-encoded into the Authorization header) |
| **Bearer Token** | Token sent as `Authorization: Bearer <token>` |
| **API Key** | Key sent as a header or query param (Composer asks which) |
| **Inherit from parent** | For Detail Requests — reuse the primary request's auth |

#### Pagination patterns

![Pagination dropdown showing None (selected), Next Page Link, Cursor, Page Number & Size, and Limit/Offset](https://mintcdn.com/threataware-labs/JizGYqEeTbHV_69f/images/data-feed-pagination.png?fit=max\&auto=format\&n=JizGYqEeTbHV_69f\&q=85\&s=3e0fb4b85fadb32fdb4bdf32ef8e953c)

| Pattern | Used by |
| - | - |
| **None** | Single-response endpoints |
| **Next Page Link** | APIs that return a `next` URL in the response (e.g. GitHub) |
| **Cursor** | Opaque cursor-based pagination (e.g. Slack) |
| **Page Number & Size** | `?page=1&size=100`-style pagination |
| **Limit/Offset** | `?limit=100&offset=200`-style pagination |

### Detail Request node (optional)

Use a Detail Request when the primary endpoint returns a list of IDs and you need per-record data from a second endpoint:

![Data feed editor for CISA Known Exploited Vulnerabilities with Trigger, Data Request and Detail Request nodes: the Detail Request has a GET method, a URL placeholder https://api.example.com/data/\{\{id}} that uses the id captured by the Data Request, and an Add button](https://mintcdn.com/threataware-labs/JizGYqEeTbHV_69f/images/data-feed-detail-request.png?fit=max\&auto=format\&n=JizGYqEeTbHV_69f\&q=85\&s=befbfb6181d7f31a627fb026082546ad)

The Detail Request URL can interpolate any variable captured by the primary request — by default it's `{{id}}` (from the ID Path). You can also expose more captured variables via the Capture Variables section on the primary request.

This is the classic "list + detail" pattern — fetch a list of object IDs, then fetch each object's full payload.

## Test panel

Below the request canvas, the **Test** button runs the full Data Feed end-to-end against your live credentials and shows the response inline — status code, headers, payload preview. Use this to validate before publishing.

The test runs against your **Draft** version. Test failures don't affect Published feeds in any way.

## The Data Feed ⋯ menu

The **⋯** icon at the top-right of the Data Feed editor reveals:

| Option | What it does |
| - | - |
| **Show Tutorial / Exit Tutorial** | Toggles the 3-step inline tutorial overlay |
| **Clone** | Creates an editable copy of the Feed in the current workspace |
| **Delete** | Permanently delete the Feed (only enabled if you own it) |
| **Advanced ▸** | Schema, Request History, Migrate, Export (covered below) |

### Advanced submenu

| Option | What it does |
| - | - |
| **Schema** | View the inferred field types — see [Schema & Fields](https://docs.dimension.io/data-feeds/schema.md) |
| **Request History** | Recent sync runs with status, record count, and error detail — see [Sync & Freshness](https://docs.dimension.io/data-feeds/sync.md) |
| **Migrate** | Move this Feed to a different workspace (apps depending on it must be migrated too) |
| **Export** | Download the feed as a file for re-import elsewhere |

> [!WARNING]
>
> **Deleting a Data Feed is destructive.** Studio apps wired to it will stop working until they're either pointed at a different Feed or have the Feed re-imported. Confirm twice.

## Where Feeds appear

After publishing, a Feed shows up in:

* The **Data Feeds** counter on the workspace overview
* The **Data Feeds** tab in the left rail (database icon)
* The **Data sources** picker inside the Studio editor when building an app

![Data page in a new workspace: No data feeds yet with a Create your first data feed button, a Gallery of ready-made data feeds such as SentinelOne agents and Okta identity, and the Planner on the right](https://mintcdn.com/threataware-labs/JizGYqEeTbHV_69f/images/data-feeds-tab.png?fit=max\&auto=format\&n=JizGYqEeTbHV_69f\&q=85\&s=c567cdc6eba057c7be236286aa616c68)

## Explore further

> [card] [Data Sources](https://docs.dimension.io/data-feeds/data-sources.md)
>
> Common source patterns: REST APIs, OAuth2, file-based, webhooks

> [card] [Schema & Fields](https://docs.dimension.io/data-feeds/schema.md)
>
> How Composer infers the schema and how to refine it

> [card] [Sync & Freshness](https://docs.dimension.io/data-feeds/sync.md)
>
> Schedules, on-demand refresh, and troubleshooting stale data

> [!NOTE]
>
> **Privacy**: When using Data Feeds with the Studio Composer, the AI only sees the **schema** (field names, types) — never your actual data values. See [Security & Privacy](https://docs.dimension.io/trust/security-privacy.md).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.