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

# Data sources

> Connect files or external APIs as your company's data origin, with a typed schema ready to use in data flows

A **data source** is a company-level origin of information: a
file you upload or an external API you connect, with a **typed schema**
that defines each field. The fields you publish become available to
agents, functions, and actions when you build
[data flows](/docs/en/datos/flujo-de-datos).

The module lives in the **Data** group of the side menu, in the
**Data sources** section.

## Create a source

A source is created with a four-step wizard: **Connect**,
**Review data**, **Define schema**, and **Publish**.

### 1. Connect

You can start from two origins:

* **Upload file**: accepts **JSON, XML, CSV, and Excel/XLSX** up to
  **50 MB**.
* **Connect external API**: you provide the **URL**, the method (**GET** or
  **POST**), and, if the service requires it, an **API key** that is sent
  as a Bearer token. The **Test connection** button verifies access before
  you continue. The response must be JSON, up to **5 MB**, and the
  connection waits a maximum of **10 seconds**. Only public
  HTTP(S) URLs are accepted.

In both cases woku automatically detects the fields present and the
number of records in the origin.

### 2. Review data

A table shows the detected fields. For each field you see a
**received example** and the **detected type** (Email, Number, Date,
Object, List, or Text), and you decide whether it is **included** or **excluded** from the
source. Excluded fields are not part of the published schema.

### 3. Define schema

In this step you define how each field ends up. You can work in three
ways, combining them as you prefer:

* **AI assistant**: a chat that proposes the schema field by field. It is
  detailed in the next section.
* **Visual tab**: field-by-field editing of the visible name, type,
  format, description, and whether it is required, including the properties of
  objects and the elements of lists.
* **Code tab**: a JSON editor for the schema with live validation. If
  there is an error, it marks the exact line and column where it occurs.

The available types are `string`, `number`, `integer`, `boolean`,
`null`, `object`, and `array`, plus an optional **format** such as `email` or
`date` for the fields that need it.

### 4. Publish

Before publishing you see a final summary with the fields that will be published,
the excluded fields, and the **View JSON** button to inspect the resulting
schema. Once published, the source becomes available to build data
flows.

## The schema assistant

The AI assistant reviews the detected data and proposes, field by field,
the **visible name**, the **type**, the **format**, the **description**, and
whether it is **required**. You can ask it for adjustments in natural
language, for example to mark a field as required or to change the description
of another, and the schema updates in the Visual and Code tabs.

The conversation with the assistant is saved together with the source and is
restored when you reopen it, so you pick up the context where you left off.

## Manage your sources

The module home shows each source as a card with the number of
**records**, the **defined fields**, the **excluded fields**, and how
long ago it was published. You can search among your sources by name.

From each source you can:

* **Edit schema**: reopens the wizard at the Define schema step to
  adjust fields and publish again.
* **View JSON**: shows the published schema.
* **Delete source**: removes it from the company.

Each source also stores a **sample of up to 50 complete records**,
which feeds the simulation and execution of the data flows that
use it.

## Limits and formats

| Concept                  | Value                                                 |
| ------------------------ | ----------------------------------------------------- |
| File formats             | JSON, XML, CSV, Excel/XLSX                            |
| Maximum file size        | 50 MB                                                 |
| External API response    | JSON, up to 5 MB                                      |
| API timeout              | 10 seconds                                            |
| Allowed URLs             | Public HTTP(S)                                        |
| Sample stored per source | Up to 50 records                                      |
| Field types              | string, number, integer, boolean, null, object, array |

## What's next

* [Data flows](/docs/en/datos/flujo-de-datos): build flows that use the
  published fields of your sources.
* [External study import](/docs/en/guias/importacion-estudios): to
  load your own studies and unify them with your respondents.
