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

# Listar Arquivos do Schema

> Recuperar uma lista paginada de arquivos enviados para um schema específico com capacidades de filtragem e ordenação.

## Autenticação

<Info>
  Este endpoint requer autenticação. Inclua seu token Bearer no cabeçalho Authorization.
</Info>

```bash theme={null}
Authorization: Bearer SEU_TOKEN_AQUI
```

## Parâmetros de Caminho

<ParamField path="slug" type="string" required>
  O slug do schema
</ParamField>

## Parâmetros de Consulta

<ParamField query="per_page" type="integer" default="15">
  Número de itens por página (1-100)
</ParamField>

<ParamField query="page" type="integer" default="1">
  Número da página (mínimo: 1)
</ParamField>

<ParamField query="search" type="string">
  Termo de busca para filtrar arquivos por nome, caminho ou status de upload
</ParamField>

<ParamField query="sort_by" type="string" default="created_at">
  Campo para ordenação. Opções: `file_name`, `size_bytes`, `schema_version`, `storage_path`, `validation`, `upload_status`, `created_at`, `updated_at`
</ParamField>

<ParamField query="sort_direction" type="string" default="desc">
  Direção da ordenação. Opções: `asc`, `desc`
</ParamField>

<ParamField query="date_from" type="string">
  Filtrar arquivos criados a partir desta data (formato ISO 8601)
</ParamField>

<ParamField query="date_to" type="string">
  Filtrar arquivos criados até esta data (formato ISO 8601)
</ParamField>

<ParamField query="created_at_start" type="string">
  Filtrar arquivos criados a partir deste timestamp (formato ISO 8601)
</ParamField>

<ParamField query="created_at_end" type="string">
  Filtrar arquivos criados até este timestamp (formato ISO 8601)
</ParamField>

<ParamField query="storage_path" type="string">
  Filtrar por caminho de armazenamento (correspondência parcial)
</ParamField>

<ParamField query="schema_version" type="string">
  Filtrar por versão do schema (correspondência parcial)
</ParamField>

<ParamField query="file_name" type="string">
  Filtrar por nome do arquivo (correspondência parcial)
</ParamField>

<ParamField query="validation" type="string">
  Filtrar por status de validação. Opções: `valid`, `invalid`, `pending`
</ParamField>

<ParamField query="upload_status" type="string">
  Filtrar por status de upload. Opções: `completed`, `pending`, `failed`
</ParamField>

## Resposta

<ResponseField name="data" type="array">
  Array de objetos de arquivo

  <Expandable title="Propriedades do Objeto Arquivo">
    <ResponseField name="id" type="integer">
      Identificador único do arquivo
    </ResponseField>

    <ResponseField name="file_name" type="string">
      Nome original do arquivo enviado
    </ResponseField>

    <ResponseField name="size_bytes" type="integer">
      Tamanho do arquivo em bytes
    </ResponseField>

    <ResponseField name="schema_version" type="string">
      Versão do schema quando o arquivo foi enviado
    </ResponseField>

    <ResponseField name="storage_path" type="string">
      Caminho onde o arquivo está armazenado
    </ResponseField>

    <ResponseField name="validation" type="string">
      Status de validação do arquivo (`valid`, `invalid`, `pending`)
    </ResponseField>

    <ResponseField name="upload_status" type="string">
      Status de upload do arquivo (`completed`, `pending`, `failed`)
    </ResponseField>

    <ResponseField name="created_at" type="string">
      Quando o arquivo foi criado (formato ISO 8601)
    </ResponseField>

    <ResponseField name="updated_at" type="string">
      Quando o arquivo foi atualizado pela última vez (formato ISO 8601)
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="meta" type="object">
  Metadados de paginação

  <Expandable title="Propriedades do Objeto Meta">
    <ResponseField name="current_page" type="integer">
      Número da página atual
    </ResponseField>

    <ResponseField name="from" type="integer">
      Número do primeiro item na página atual
    </ResponseField>

    <ResponseField name="last_page" type="integer">
      Número da última página
    </ResponseField>

    <ResponseField name="per_page" type="integer">
      Número de itens por página
    </ResponseField>

    <ResponseField name="to" type="integer">
      Número do último item na página atual
    </ResponseField>

    <ResponseField name="total" type="integer">
      Número total de itens
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="success" type="boolean">
  Sempre true para requisições bem-sucedidas
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X GET \
    "https://api.datasnap.cloud/api/v1/schemas/meu-schema/files?per_page=15&page=1&sort_by=created_at&sort_direction=desc" \
    -H "Authorization: Bearer SEU_TOKEN_AQUI" \
    -H "Content-Type: application/json"
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch(
    'https://api.datasnap.cloud/api/v1/schemas/meu-schema/files?per_page=15&page=1',
    {
      method: 'GET',
      headers: {
        'Authorization': 'Bearer SEU_TOKEN_AQUI',
        'Content-Type': 'application/json'
      }
    }
  );

  const data = await response.json();
  ```

  ```python Python theme={null}
  import requests

  url = "https://api.datasnap.cloud/api/v1/schemas/meu-schema/files"
  headers = {
      "Authorization": "Bearer SEU_TOKEN_AQUI",
      "Content-Type": "application/json"
  }

  params = {
      "per_page": 15,
      "page": 1,
      "sort_by": "created_at",
      "sort_direction": "desc"
  }

  response = requests.get(url, headers=headers, params=params)
  data = response.json()
  ```
</RequestExample>

<ResponseExample>
  ```json Resposta de Sucesso theme={null}
  {
    "data": [
      {
        "id": 123,
        "file_name": "dados_vendas.jsonl",
        "size_bytes": 2048576,
        "schema_version": "1.0.0",
        "storage_path": "/uploads/2024/08/dados_vendas.jsonl",
        "validation": "valid",
        "upload_status": "completed",
        "created_at": "2024-08-15T10:30:00Z",
        "updated_at": "2024-08-15T10:35:00Z"
      }
    ],
    "meta": {
      "current_page": 1,
      "from": 1,
      "last_page": 5,
      "per_page": 15,
      "to": 15,
      "total": 73
    },
    "success": true
  }
  ```

  ```json Resposta de Erro (404) theme={null}
  {
    "errors": {
      "schema": ["O esquema solicitado não foi encontrado."]
    }
  }
  ```

  ```json Resposta de Erro (401) theme={null}
  {
    "error": "Não autenticado."
  }
  ```
</ResponseExample>

## Códigos de Erro

<ResponseField name="200" type="Success">
  Lista de arquivos recuperada com sucesso
</ResponseField>

<ResponseField name="401" type="Error">
  Não autorizado - Token de autenticação inválido ou ausente
</ResponseField>

<ResponseField name="404" type="Error">
  Schema não encontrado
</ResponseField>

## Exemplos de Uso

### Listagem Básica de Arquivos

```bash theme={null}
GET /api/v1/schemas/meu-schema/files
```

### Buscar Arquivos Específicos

```bash theme={null}
GET /api/v1/schemas/meu-schema/files?search=dados.jsonl&validation=valid
```

### Filtrar por Intervalo de Datas

```bash theme={null}
GET /api/v1/schemas/meu-schema/files?date_from=2024-01-01T00:00:00Z&date_to=2024-12-31T23:59:59Z
```

### Ordenar por Tamanho do Arquivo

```bash theme={null}
GET /api/v1/schemas/meu-schema/files?sort_by=size_bytes&sort_direction=desc
```
