> For the complete documentation index, see [llms.txt](https://docs.editran.onesait.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.editran.onesait.com/documentacion-editran/editran-connect-v3.3/api/v2/files.md).

# Ficheros

## 1. Descripción

API para consultar y gestionar los ficheros de las transferencias de canales.

### Operaciones disponibles

* Obtener lista de ficheros de un canal
* Obtener información de un fichero de un canal
* Subir un fichero a un canal
* Subir un fichero a un canal e iniciar la transferencia
* Obtener el contenido de un fichero desde un canal
* Iniciar la subida de un fichero por fragmentos
* Enviar un fragmento de un fichero
* Obtener estado de la subida de un fichero por fragmentos
* Cancelar la subida de un fichero por fragmentos
* Finalizar la subida de un fichero por fragmentos
* Iniciar la descarga de un fichero desde un canal por fragmentos
* Recibir un fragmento de un fichero
* Cancelar la descarga de un fichero por fragmentos
* Finalizar la descarga de un fichero por fragmentos

***

## 2. Obtener lista de ficheros de un canal

### 2.1. Información general

**Método:** `GET`\
**URL:** `https://<tu_servidor>/integration/v2/channels/{channelCode}/files` **Descripción:** Obtiene una lista paginada de ficheros transferidos por un canal específico, con la posibilidad de filtrar por fechas de ejecución. La respuesta incluye información de la transferencia, como identificador, fecha y dirección, y la información del fichero, identificador y nombre.\
Esta operación requiere autenticación y está restringida a ciertos roles de usuario.

### 2.2. Cabeceras

```http
accept: application/json
Authorization: Bearer <token>
```

### 2.3. Parámetros

| Parámetro   | Tipo   | Obligatorio | Descripción                                                      | Valor por defecto |
| ----------- | ------ | ----------- | ---------------------------------------------------------------- | ----------------- |
| channelCode | string | Sí          | Código del canal. Formato: `codigoLocal-codigoRemoto-aplicacion` |                   |
| initialDate | string | No          | Fecha de ejecución inicial. Formato: `yyyy-MM-dd`                |                   |
| endDate     | string | No          | Fecha de ejecución final. Formato: `yyyy-MM-dd`                  |                   |
| page        | int    | Sí          | Número de página                                                 | 1                 |
| size        | int    | Sí          | Tamaño de página                                                 | 1                 |

### 2.4. Ejemplo de petición

```bash
curl -X 'GET' \
  'https://<tu_servidor>/integration/v2/channels/123456789-987654321-APP001/files?page=1&size=10' \
  -H 'accept: application/json' \
  -H 'Authorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJBdXRob3JpemF0...'
```

### 2.5. Seguridad

#### Autenticación

* Esta operación requiere autenticación mediante un token JWT válido.
* El token debe ser incluido en la cabecera `Authorization` con el formato `Bearer <token>`.

#### Roles autorizados

| Código                   | Descripción                        |
| ------------------------ | ---------------------------------- |
| ROLE\_GLOBALADMIN        | Administrador Global               |
| ROLE\_ADMIN              | Administrador                      |
| ROLE\_ADVOPERATOR        | Operador Avanzado                  |
| ROLE\_OPERATOR           | Operador                           |
| ROLE\_ADMINFF            | Administrador de Firma             |
| ROLE\_ADMINCONTROLATORFF | Administrador Controlador de Firma |

### 2.6. Respuestas

#### Códigos de estado

| Código | Descripción                |
| ------ | -------------------------- |
| 200    | Operación exitosa          |
| 401    | No autorizado              |
| 403    | Prohibido                  |
| 404    | No encontrado              |
| 500    | Error interno del servidor |

#### Respuesta 200 OK

Devuelve un objeto paginado con la lista de ficheros del canal.

**Estructura**

```json
{
  "totalPages": 1073741824,
  "totalElements": 9007199254740991,
  "size": 1073741824,
  "content": [
    {
      "channelCode": "string",
      "transfer": {
        "transferId": "string",
        "transferDateTime": "yyyy-MM-dd'T'HH:mm:ss.SSSXXX",
        "direction": "string"
      },
      "fileId": "string",
      "fileName": "string"
    }
  ],
  "number": 1073741824,
  "sort": {
    "empty": true,
    "unsorted": true,
    "sorted": true
  },
  "first": true,
  "last": true,
  "numberOfElements": 1073741824,
  "pageable": {
    "offset": 9007199254740991,
    "sort": {
      "empty": true,
      "unsorted": true,
      "sorted": true
    },
    "unpaged": true,
    "pageNumber": 1073741824,
    "pageSize": 1073741824,
    "paged": true
  },
  "empty": true
}
```

**Datos de paginación**

| Campo            | Descripción                             |
| ---------------- | --------------------------------------- |
| totalPages       | Número total de páginas                 |
| totalElements    | Número total de elementos               |
| size             | Tamaño de página                        |
| number           | Página actual                           |
| first            | Indica si es la primera página          |
| last             | Indica si es la última página           |
| numberOfElements | Número de elementos en la página actual |
| empty            | Indica si la página está vacía          |

**Contenido**

| Campo   | Descripción                  |
| ------- | ---------------------------- |
| content | Lista de ficheros del canal. |

***

## 3. Obtener información de un fichero de un canal

### 3.1. Información general

**Método:** `GET`\
**URL:** `https://<tu_servidor>/integration/v2/channels/{channelCode}/files/{fileId}` **Descripción:** Obtiene el detalle de un fichero transferido por un canal específico, incluyendo información de la transferencia, como identificador, fecha y dirección, y la información del fichero, nombre, ruta, hash y tamaño.\
Esta operación requiere autenticación y está restringida a ciertos roles de usuario.

### 3.2. Cabeceras

```http
accept: application/json
Authorization: Bearer <token>
```

### 3.3. Parámetros

| Parámetro   | Tipo   | Obligatorio | Descripción                                                      | Valor por defecto |
| ----------- | ------ | ----------- | ---------------------------------------------------------------- | ----------------- |
| channelCode | string | Sí          | Código del canal. Formato: `codigoLocal-codigoRemoto-aplicacion` |                   |
| fileId      | string | Sí          | Identificador del fichero                                        |                   |

### 3.4. Ejemplo de petición

```bash
curl -X 'GET' \
  'https://<tu_servidor>/integration/v2/channels/123456789-987654321-APP001/files/123e4567-e89b-12d3-a456-426614174000' \
  -H 'accept: application/json' \
  -H 'Authorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJBdXRob3JpemF0...'
```

### 3.5. Seguridad

#### Autenticación

* Esta operación requiere autenticación mediante un token JWT válido.
* El token debe ser incluido en la cabecera `Authorization` con el formato `Bearer <token>`.

#### Roles autorizados

| Código                   | Descripción                        |
| ------------------------ | ---------------------------------- |
| ROLE\_GLOBALADMIN        | Administrador Global               |
| ROLE\_ADMIN              | Administrador                      |
| ROLE\_ADVOPERATOR        | Operador Avanzado                  |
| ROLE\_OPERATOR           | Operador                           |
| ROLE\_ADMINFF            | Administrador de Firma             |
| ROLE\_ADMINCONTROLATORFF | Administrador Controlador de Firma |

### 3.6. Respuestas

#### Códigos de estado

| Código | Descripción                |
| ------ | -------------------------- |
| 200    | Operación exitosa          |
| 401    | No autorizado              |
| 403    | Prohibido                  |
| 404    | No encontrado              |
| 500    | Error interno del servidor |

#### Respuesta 200 OK

Devuelve un objeto con el detalle del fichero.

**Estructura**

```json
{
  "channelCode": "string",
  "transferId": "string",
  "transferStartDateTime": "string",
  "transferEndDateTime": "string",
  "direction": "string",
  "status": "string",
  "error": "string",
  "type": "string",
  "encryption": true,
  "files": [
    {
      "fileName": "string",
      "path": "string",
      "hash": "string",
      "size": "string",
      "actionPost": "string",
      "filePathPost": "string"
    }
  ]
}
```

***

## 4. Subir un fichero a un canal

### 4.1. Información general

**Método:** `POST`\
**URL:** `https://<tu_servidor>/integration/v2/channels/{channelCode}/files/uploads/simple` **Descripción:** Permite subir un fichero a un canal específico. El fichero se envía en el cuerpo de la petición y debe tener un máximo de **100 MB**. El canal deberá ser de emisión o bidireccional, y no podrá ser un canal de intercambio de claves ni un canal de firma. Además, el canal debe tener un directorio de emisión válido configurado, bien que la ruta completa a un fichero o bien una ruta que termine en `/*`.\
Esta operación requiere autenticación y está restringida a ciertos roles de usuario.

### 4.2. Cabeceras

```http
accept: */*
Content-Type: multipart/form-data
Authorization: Bearer <token>
```

### 4.3. Parámetros

| Parámetro   | Tipo   | Obligatorio | Descripción                                                      | Valor por defecto |
| ----------- | ------ | ----------- | ---------------------------------------------------------------- | ----------------- |
| channelCode | string | Sí          | Código del canal. Formato: `codigoLocal-codigoRemoto-aplicacion` |                   |

### 4.4. Cuerpo de la petición

El cuerpo de la petición debe contener el fichero a subir utilizando `multipart/form-data`. El tamaño máximo permitido para el fichero es de **100 MB**.

### 4.5. Ejemplos de petición

```bash
curl -X 'POST' \
  'https://<tu_servidor>/integration/v2/channels/123456789-987654321-APP001/files/uploads/simple' \
  -H 'accept: */*' \
  -H 'Content-Type: multipart/form-data' \
  -H 'Authorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJBdXRob3JpemF0...' \
  -F 'file=@/data/example/file.dat'
```

```bash
curl -X 'POST' \
  'https://<tu_servidor>/integration/v2/channels/123456789-987654321-APP001/files/uploads/simple' \
  -H 'accept: */*' \
  -H 'Content-Type: multipart/form-data' \
  -H 'Authorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJBdXRob3JpemF0...' \
  -F 'file=@/data/example/file.txt;type=text/plain'
```

```bash
curl -X 'POST' \
  'https://<tu_servidor>/integration/v2/channels/123456789-987654321-APP001/files/uploads/simple' \
  -H 'accept: */*' \
  -H 'Content-Type: multipart/form-data' \
  -H 'Authorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJBdXRob3JpemF0...' \
  -F 'file=@/data/example/file.xls;type=application/vnd.ms-excel'
```

### 4.6. Seguridad

#### Autenticación

* Esta operación requiere autenticación mediante un token JWT válido.
* El token debe ser incluido en la cabecera `Authorization` con el formato `Bearer <token>`.

#### Roles autorizados

| Código            | Descripción          |
| ----------------- | -------------------- |
| ROLE\_GLOBALADMIN | Administrador Global |
| ROLE\_ADMIN       | Administrador        |
| ROLE\_ADVOPERATOR | Operador Avanzado    |
| ROLE\_OPERATOR    | Operador             |

### 4.7. Respuestas

#### Códigos de estado

| Código | Descripción                |
| ------ | -------------------------- |
| 200    | Operación exitosa          |
| 400    | Solicitud incorrecta       |
| 401    | No autorizado              |
| 403    | Prohibido                  |
| 404    | No encontrado              |
| 500    | Error interno del servidor |

***

## 5. Subir un fichero a un canal e iniciar la transferencia

### 5.1. Información general

**Método:** `POST`\
**URL:** `https://<tu_servidor>/integration/v2/channels/{channelCode}/files/uploads/send` **Descripción:** Permite subir un fichero a un canal específico e iniciar la transferencia de forma inmediata. El fichero se envía en el cuerpo de la petición y debe tener un máximo de **100 MB**. El canal deberá ser de emisión o bidireccional, y no podrá ser un canal de intercambio de claves ni un canal de firma. Además, el canal debe tener un directorio de emisión válido configurado, bien que la ruta completa a un fichero o bien una ruta que termine en `/*`.\
Esta operación requiere autenticación y está restringida a ciertos roles de usuario.

### 5.2. Cabeceras

```http
accept: */*
Content-Type: multipart/form-data
Authorization: Bearer <token>
```

### 5.3. Parámetros

| Parámetro   | Tipo   | Obligatorio | Descripción                                                      | Valor por defecto |
| ----------- | ------ | ----------- | ---------------------------------------------------------------- | ----------------- |
| channelCode | string | Sí          | Código del canal. Formato: `codigoLocal-codigoRemoto-aplicacion` |                   |

### 5.4. Cuerpo de la petición

El cuerpo de la petición debe contener el fichero a subir y enviar utilizando `multipart/form-data`. El tamaño máximo permitido para el fichero es de **100 MB**.

### 5.5. Ejemplos de petición

```bash
curl -X 'POST' \
  'https://<tu_servidor>/integration/v2/channels/123456789-987654321-APP001/files/uploads/send' \
  -H 'accept: */*' \
  -H 'Content-Type: multipart/form-data' \
  -H 'Authorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJBdXRob3JpemF0...' \
  -F 'file=@/data/example/file.dat'
```

```bash
curl -X 'POST' \
  'https://<tu_servidor>/integration/v2/channels/123456789-987654321-APP001/files/uploads/send' \
  -H 'accept: */*' \
  -H 'Content-Type: multipart/form-data' \
  -H 'Authorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJBdXRob3JpemF0...' \
  -F 'file=@/data/example/file.txt;type=text/plain'
```

```bash
curl -X 'POST' \
  'https://<tu_servidor>/integration/v2/channels/123456789-987654321-APP001/files/uploads/send' \
  -H 'accept: */*' \
  -H 'Content-Type: multipart/form-data' \
  -H 'Authorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJBdXRob3JpemF0...' \
  -F 'file=@/data/example/file.xls;type=application/vnd.ms-excel'
```

### 5.6. Seguridad

#### Autenticación

* Esta operación requiere autenticación mediante un token JWT válido.
* El token debe ser incluido en la cabecera `Authorization` con el formato `Bearer <token>`.

#### Roles autorizados

| Código            | Descripción          |
| ----------------- | -------------------- |
| ROLE\_GLOBALADMIN | Administrador Global |
| ROLE\_ADMIN       | Administrador        |
| ROLE\_ADVOPERATOR | Operador Avanzado    |
| ROLE\_OPERATOR    | Operador             |

### 5.7. Respuestas

#### Códigos de estado

| Código | Descripción                |
| ------ | -------------------------- |
| 200    | Operación exitosa          |
| 400    | Solicitud incorrecta       |
| 401    | No autorizado              |
| 403    | Prohibido                  |
| 404    | No encontrado              |
| 500    | Error interno del servidor |

***

## 6. Obtener el contenido de un fichero desde un canal

### 6.1. Información general

**Método:** `GET`\
**URL:** `https://<tu_servidor>/integration/v2/channels/{channelCode}/files/{fileId}/content` **Descripción:** Permite obtener y descargar el contenido de un fichero asociado a un canal específico. El fichero se devuelve como un recurso binario, incluyendo las cabeceras necesarias para forzar su descarga. Tamaño máximo permitido: **100 MB**\
Esta operación requiere autenticación y está restringida a ciertos roles de usuario.

### 6.2. Cabeceras

```http
accept: */*
Authorization: Bearer <token>
```

### 6.3. Parámetros

| Parámetro   | Tipo   | Obligatorio | Descripción                                                      | Valor por defecto |
| ----------- | ------ | ----------- | ---------------------------------------------------------------- | ----------------- |
| channelCode | string | Sí          | Código del canal. Formato: `codigoLocal-codigoRemoto-aplicacion` |                   |
| fileId      | string | Sí          | Identificador del fichero                                        |                   |

### 6.4. Ejemplo de petición

```bash
curl -X 'GET' \
  'https://<tu_servidor>/integration/v2/channels/123456789-987654321-APP001/files/123e4567-e89b-12d3-a456-426614174000/content' \
  -H 'accept: */*' \
  -H 'Authorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJBdXRob3JpemF0...'
```

### 6.5. Seguridad

#### Autenticación

* Esta operación requiere autenticación mediante un token JWT válido.
* El token debe ser incluido en la cabecera `Authorization` con el formato `Bearer <token>`.

#### Roles autorizados

| Código                   | Descripción                        |
| ------------------------ | ---------------------------------- |
| ROLE\_GLOBALADMIN        | Administrador Global               |
| ROLE\_ADMIN              | Administrador                      |
| ROLE\_ADVOPERATOR        | Operador Avanzado                  |
| ROLE\_OPERATOR           | Operador                           |
| ROLE\_ADMINFF            | Administrador de Firma             |
| ROLE\_ADMINCONTROLATORFF | Administrador Controlador de Firma |

### 6.6. Respuestas

#### Códigos de estado

| Código | Descripción                |
| ------ | -------------------------- |
| 200    | Operación exitosa          |
| 400    | Solicitud incorrecta       |
| 401    | No autorizado              |
| 403    | Prohibido                  |
| 404    | No encontrado              |
| 500    | Error interno del servidor |

#### Respuesta 200 OK

Devuelve el fichero solicitado.

**Cabeceras**

| Header              | Descripción                                 |
| ------------------- | ------------------------------------------- |
| Content-Type        | Tipo MIME del fichero                       |
| Content-Disposition | attachment; filename="nombre\_del\_fichero" |

**Cuerpo**

* Tipo: `binary`
* Contenido: fichero solicitado

El cuerpo de la respuesta contiene el contenido del fichero solicitado, devuelto como un recurso binario. El fichero se devuelve con las cabeceras `Content-Type` y `Content-Disposition` configuradas para forzar su descarga. El valor del header `Content-Type` se establece según el tipo MIME del fichero, y el header `Content-Disposition` se configura con el nombre original del fichero para que se utilice al descargarlo. El tamaño máximo permitido para el fichero es de **100 MB**.

**Ejemplo de respuesta**

```
HTTP/1.1 200 OK
Content-Type: application/xls
Content-Disposition: attachment; filename="file.xls"

(binary content of the file)
```

***

## 7. Iniciar la subida de un fichero por fragmentos

### 7.1. Información general

**Método:** `POST`\
**URL:** `https://<tu_servidor>/integration/v2/channels/{channelCode}/files/uploads` **Descripción:** Permite iniciar el proceso de subida de un fichero por fragmentos a un canal específico. Esta operación es útil para subir ficheros de gran tamaño, dividiéndolos en partes más pequeñas que se envían de forma independiente. Se generará un *identificador del proceso de subida* que se utilizará en las operaciones de envío de fragmentos, consulta, cancelación o finalización.\
El canal deberá ser de emisión o bidireccional, y no podrá ser un canal de intercambio de claves ni un canal de firma. Además, el canal debe tener un directorio de emisión válido configurado, bien que la ruta completa a un fichero o bien una ruta que termine en `/*`.\
Esta operación requiere autenticación y está restringida a ciertos roles de usuario.

### 7.2. Cabeceras

```http
accept: */*
Authorization: Bearer <token>
```

### 7.3. Parámetros

| Parámetro   | Tipo    | Obligatorio | Descripción                                                         | Valor por defecto |
| ----------- | ------- | ----------- | ------------------------------------------------------------------- | ----------------- |
| channelCode | string  | Sí          | Código del canal. Formato: `codigoLocal-codigoRemoto-aplicacion`    |                   |
| filename    | string  | Sí          | Nombre del fichero a subir                                          |                   |
| chunks      | integer | Sí          | Número total de partes en las que se dividirá el fichero (mínimo 1) | 1                 |

### 7.4. Ejemplo de petición

```bash
curl -X 'POST' \
  'https://<tu_servidor>/integration/v2/channels/123456789-987654321-APP001/files/uploads?filename=file.dat&chunks=2' \
  -H 'accept: */*' \
  -H 'Authorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJBdXRob3JpemF0...' \
  -d ''
```

### 7.5. Seguridad

#### Autenticación

* Esta operación requiere autenticación mediante un token JWT válido.
* El token debe ser incluido en la cabecera `Authorization` con el formato `Bearer <token>`.

#### Roles autorizados

| Código            | Descripción          |
| ----------------- | -------------------- |
| ROLE\_GLOBALADMIN | Administrador Global |
| ROLE\_ADMIN       | Administrador        |
| ROLE\_ADVOPERATOR | Operador Avanzado    |
| ROLE\_OPERATOR    | Operador             |

### 7.6. Respuestas

#### Códigos de estado

| Código | Descripción                |
| ------ | -------------------------- |
| 200    | Operación exitosa          |
| 400    | Solicitud incorrecta       |
| 401    | No autorizado              |
| 403    | Prohibido                  |
| 404    | No encontrado              |
| 500    | Error interno del servidor |

#### Respuesta 200 OK

Devuelve un identificador único del proceso de subida en formato **UUID**.

**Cuerpo**

* Tipo: `string (UUID)`
* Contenido: identificador del proceso

**Ejemplo de respuesta**

```
550e8400-e29b-41d4-a716-446655440000
```

***

## 8. Enviar un fragmento de un fichero

### 8.1. Información general

**Método:** `PUT`\
**URL:** `https://<tu_servidor>/integration/v2/channels/{channelCode}/files/uploads/{uploadId}` **Descripción:** Permite enviar un fragmento de un fichero para su posterior ensamblado y subida al canal.\
El fragmento se envía en el cuerpo de la petición y además, se debe indicar el número del fragmento que se está enviando, comenzando en 1. No es necesario que los fragmentos se envíen en orden, pero sí es necesario que el número de fragmento sea correcto, pudiendo repetirse el envío de un mismo fragmento.\
El tamaño máximo permitido para cada fragmento es de **100 MB**.\
Esta operación requiere autenticación y está restringida a ciertos roles de usuario.

### 8.2. Cabeceras

```http
accept: */*
Content-Type: multipart/form-data
Authorization: Bearer <token>
```

### 8.3. Parámetros

| Parámetro   | Tipo    | Obligatorio | Descripción                                                      | Valor por defecto |
| ----------- | ------- | ----------- | ---------------------------------------------------------------- | ----------------- |
| channelCode | string  | Sí          | Código del canal. Formato: `codigoLocal-codigoRemoto-aplicacion` |                   |
| uploadId    | string  | Sí          | Identificador del proceso de subida por fragmentos               |                   |
| chunkNumber | integer | Sí          | Número del fragmento que se está enviando (comenzando en 1)      | 1                 |

### 8.4. Cuerpo de la petición

El cuerpo de la petición debe contener el fragmento a enviar utilizando `multipart/form-data`. El tamaño máximo permitido para el fichero es de **100 MB**.

### 8.5. Ejemplos de petición

```bash
curl -X 'PUT' \
  'https://<tu_servidor>/integration/v2/channels/123456789-987654321-APP001/files/uploads/550e8400-e29b-41d4-a716-446655440000?chunkNumber=1' \
  -H 'accept: */*' \
  -H 'Content-Type: multipart/form-data' \
  -H 'Authorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJBdXRob3JpemF0...' \
  -F 'chunkFile=@/data/example/file.dat.part1'
```

```bash
curl -X 'PUT' \
  'https://<tu_servidor>/integration/v2/channels/123456789-987654321-APP001/files/uploads/550e8400-e29b-41d4-a716-446655440000?chunkNumber=1' \
  -H 'accept: */*' \
  -H 'Content-Type: multipart/form-data' \
  -H 'Authorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJBdXRob3JpemF0...' \
  -F 'chunkFile=@/data/example/file.txt.part1;type=text/plain'
```

```bash
curl -X 'PUT' \
  'https://<tu_servidor>/integration/v2/channels/123456789-987654321-APP001/files/uploads/550e8400-e29b-41d4-a716-446655440000?chunkNumber=1' \
  -H 'accept: */*' \
  -H 'Content-Type: multipart/form-data' \
  -H 'Authorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJBdXRob3JpemF0...' \
  -F 'chunkFile=@/data/example/file.xls.part1;type=application/vnd.ms-excel'
```

### 8.6. Seguridad

#### Autenticación

* Esta operación requiere autenticación mediante un token JWT válido.
* El token debe ser incluido en la cabecera `Authorization` con el formato `Bearer <token>`.

#### Roles autorizados

| Código            | Descripción          |
| ----------------- | -------------------- |
| ROLE\_GLOBALADMIN | Administrador Global |
| ROLE\_ADMIN       | Administrador        |
| ROLE\_ADVOPERATOR | Operador Avanzado    |
| ROLE\_OPERATOR    | Operador             |

### 8.7. Respuestas

#### Códigos de estado

| Código | Descripción                |
| ------ | -------------------------- |
| 200    | Operación exitosa          |
| 400    | Solicitud incorrecta       |
| 401    | No autorizado              |
| 403    | Prohibido                  |
| 404    | No encontrado              |
| 500    | Error interno del servidor |

***

## 9. Obtener estado de la subida de un fichero por fragmentos

### 9.1. Información general

**Método:** `GET`\
**URL:** `https://<tu_servidor>/integration/v2/channels/{channelCode}/files/uploads/{uploadId}` **Descripción:** Permite obtener el estado actual de la subida de un fichero por fragmentos. La respuesta incluye información sobre el número total de fragmentos, el número de fragmentos enviados hasta el momento, además de una relación de los fragmentos ya enviados.\
Esta operación requiere autenticación y está restringida a ciertos roles de usuario.

### 9.2. Cabeceras

```http
accept: */*
Authorization: Bearer <token>
```

### 9.3. Parámetros

| Parámetro   | Tipo   | Obligatorio | Descripción                                                      | Valor por defecto |
| ----------- | ------ | ----------- | ---------------------------------------------------------------- | ----------------- |
| channelCode | string | Sí          | Código del canal. Formato: `codigoLocal-codigoRemoto-aplicacion` |                   |
| uploadId    | string | Sí          | Identificador del proceso de subida por fragmentos               |                   |

### 9.4. Ejemplo de petición

```bash
curl -X 'GET' \
  'https://<tu_servidor>/integration/v2/channels/123456789-987654321-APP001/files/uploads/550e8400-e29b-41d4-a716-446655440000' \
  -H 'accept: */*' \
  -H 'Authorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJBdXRob3JpemF0...'
```

### 9.5. Seguridad

#### Autenticación

* Esta operación requiere autenticación mediante un token JWT válido.
* El token debe ser incluido en la cabecera `Authorization` con el formato `Bearer <token>`.

#### Roles autorizados

| Código            | Descripción          |
| ----------------- | -------------------- |
| ROLE\_GLOBALADMIN | Administrador Global |
| ROLE\_ADMIN       | Administrador        |
| ROLE\_ADVOPERATOR | Operador Avanzado    |
| ROLE\_OPERATOR    | Operador             |

### 9.6. Respuestas

#### Códigos de estado

| Código | Descripción                |
| ------ | -------------------------- |
| 200    | Operación exitosa          |
| 400    | Solicitud incorrecta       |
| 401    | No autorizado              |
| 403    | Prohibido                  |
| 404    | No encontrado              |
| 500    | Error interno del servidor |

#### Respuesta 200 OK

Devuelve un objeto con el estado actual del proceso de *subida de un fichero por fragmentos*.

**Estructura**

```json
{
  "filename": "string",
  "chunks": 1073741824,
  "uploadedChunks": 1073741824,
  "uploadedChunkFiles": [
    "string"
  ]
}
```

***

## 10. Cancelar la subida de un fichero por fragmentos

### 10.1. Información general

**Método:** `DELETE`\
**URL:** `https://<tu_servidor>/integration/v2/channels/{channelCode}/files/uploads/{uploadId}` **Descripción:** Permite cancelar el proceso de subida de un fichero por fragmentos. Esta operación eliminará cualquier fragmento que haya sido enviado hasta el momento y toda la información del proceso.\
Esta operación requiere autenticación y está restringida a ciertos roles de usuario.

### 10.2. Cabeceras

```http
accept: */*
Authorization: Bearer <token>
```

### 10.3. Parámetros

| Parámetro   | Tipo   | Obligatorio | Descripción                                                      | Valor por defecto |
| ----------- | ------ | ----------- | ---------------------------------------------------------------- | ----------------- |
| channelCode | string | Sí          | Código del canal. Formato: `codigoLocal-codigoRemoto-aplicacion` |                   |
| uploadId    | string | Sí          | Identificador del proceso de subida por fragmentos               |                   |

### 10.4. Ejemplo de petición

```bash
curl -X 'DELETE' \
  'https://<tu_servidor>/integration/v2/channels/123456789-987654321-APP001/files/uploads/550e8400-e29b-41d4-a716-446655440000' \
  -H 'accept: */*' \
  -H 'Authorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJBdXRob3JpemF0...'
```

### 10.5. Seguridad

#### Autenticación

* Esta operación requiere autenticación mediante un token JWT válido.
* El token debe ser incluido en la cabecera `Authorization` con el formato `Bearer <token>`.

#### Roles autorizados

| Código            | Descripción          |
| ----------------- | -------------------- |
| ROLE\_GLOBALADMIN | Administrador Global |
| ROLE\_ADMIN       | Administrador        |
| ROLE\_ADVOPERATOR | Operador Avanzado    |
| ROLE\_OPERATOR    | Operador             |

### 10.6. Respuestas

#### Códigos de estado

| Código | Descripción                |
| ------ | -------------------------- |
| 200    | Operación exitosa          |
| 400    | Solicitud incorrecta       |
| 401    | No autorizado              |
| 403    | Prohibido                  |
| 404    | No encontrado              |
| 500    | Error interno del servidor |

***

## 11. Finalizar la subida de un fichero por fragmentos

### 11.1. Información general

**Método:** `POST`\
**URL:** `https://<tu_servidor>/integration/v2/channels/{channelCode}/files/uploads/{uploadId}/finalize` **Descripción:** Permite finalizar el proceso de subida de un fichero por fragmentos. Se procedera a ensamblar los fragmentos enviados para generar el fichero completo, y se subirá el fichero resultante al canal para su posterior transferencia. Previamente, se validará que se han enviado todos los fragmentos indicados al iniciar el proceso.\
Una vez finalizado el proceso, se eliminará cualquier fragmento que haya sido enviado y toda la información del proceso. El canal deberá ser de emisión o bidireccional, y no podrá ser un canal de intercambio de claves ni un canal de firma. Además, el canal debe tener un directorio de emisión válido configurado, bien que la ruta completa a un fichero o bien una ruta que termine en `/*`.\
Esta operación requiere autenticación y está restringida a ciertos roles de usuario.

### 11.2. Cabeceras

```http
accept: */*
Authorization: Bearer <token>
```

### 11.3. Parámetros

| Parámetro   | Tipo   | Obligatorio | Descripción                                                      | Valor por defecto |
| ----------- | ------ | ----------- | ---------------------------------------------------------------- | ----------------- |
| channelCode | string | Sí          | Código del canal. Formato: `codigoLocal-codigoRemoto-aplicacion` |                   |
| uploadId    | string | Sí          | Identificador del proceso de subida por fragmentos               |                   |

### 11.4. Ejemplo de petición

```bash
curl -X 'POST' \
  'https://<tu_servidor>/integration/v2/channels/123456789-987654321-APP001/files/uploads/550e8400-e29b-41d4-a716-446655440000/finalize' \
  -H 'accept: */*' \
  -H 'Authorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJBdXRob3JpemF0...' \
  -d ''
```

### 11.5. Seguridad

#### Autenticación

* Esta operación requiere autenticación mediante un token JWT válido.
* El token debe ser incluido en la cabecera `Authorization` con el formato `Bearer <token>`.

#### Roles autorizados

| Código            | Descripción          |
| ----------------- | -------------------- |
| ROLE\_GLOBALADMIN | Administrador Global |
| ROLE\_ADMIN       | Administrador        |
| ROLE\_ADVOPERATOR | Operador Avanzado    |
| ROLE\_OPERATOR    | Operador             |

### 11.6. Respuestas

#### Códigos de estado

| Código | Descripción                |
| ------ | -------------------------- |
| 200    | Operación exitosa          |
| 400    | Solicitud incorrecta       |
| 401    | No autorizado              |
| 403    | Prohibido                  |
| 404    | No encontrado              |
| 500    | Error interno del servidor |

***

## 12. Iniciar el proceso de descarga de un fichero desde un canal por fragmentos

### 12.1. Información general

**Método:** `POST`\
**URL:** `https://<tu_servidor>/integration/v2/channels/{channelCode}/files/{fileId}/downloads` **Descripción:** Permite iniciar el proceso de descarga de un fichero por fragmentos. Esta operación es útil para descargar ficheros de gran tamaño, dividiéndolos en partes más pequeñas que se descargan de forma independiente. Se generará un *identificador del proceso de descarga* que se utilizará en las operaciones de consulta, cancelación o descarga de fragmentos.\
El tamaño máximo de cada fragmento podrá indicarse mediante parámetro, con un valor máximo de **100 MB**. En caso de no indicarlo, se utilizará por defecto el tamaño máximo permitido.\
Se devolverá la información del fichero a descargar, incluyendo su nombre, tamaño, hash y número de fragmentos en los que se dividirá para su descarga. Además, se devolverá una relación de los fragmentos con su número, nombre, tamaño y hash.\
Esta operación requiere autenticación y está restringida a ciertos roles de usuario.

### 12.2. Cabeceras

```http
accept: */*
Authorization: Bearer <token>
```

### 12.3. Parámetros

| Parámetro   | Tipo    | Obligatorio | Descripción                                                      | Valor por defecto |
| ----------- | ------- | ----------- | ---------------------------------------------------------------- | ----------------- |
| channelCode | string  | Sí          | Código del canal. Formato: `codigoLocal-codigoRemoto-aplicacion` |                   |
| fileId      | string  | Sí          | Identificador del fichero a descargar                            |                   |
| chunkSize   | integer | No          | Tamaño de cada fragmento en MB (máx. 100 MB)                     | 100               |

### 12.4. Ejemplo de petición

```bash
curl -X 'POST' \
  'https://<tu_servidor>/integration/v2/channels/123456789-987654321-APP001/files/123e4567-e89b-12d3-a456-426614174000/downloads?chunkSize=50' \
  -H 'accept: */*' \
  -H 'Authorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJBdXRob3JpemF0...' \
  -d ''
```

### 12.5. Seguridad

#### Autenticación

* Esta operación requiere autenticación mediante un token JWT válido.
* El token debe ser incluido en la cabecera `Authorization` con el formato `Bearer <token>`.

#### Roles autorizados

| Código            | Descripción          |
| ----------------- | -------------------- |
| ROLE\_GLOBALADMIN | Administrador Global |
| ROLE\_ADMIN       | Administrador        |
| ROLE\_ADVOPERATOR | Operador Avanzado    |
| ROLE\_OPERATOR    | Operador             |

### 12.6. Respuestas

#### Códigos de estado

| Código | Descripción                |
| ------ | -------------------------- |
| 200    | Operación exitosa          |
| 400    | Solicitud incorrecta       |
| 401    | No autorizado              |
| 403    | Prohibido                  |
| 404    | No encontrado              |
| 500    | Error interno del servidor |

#### Respuesta 200 OK

Devuelve un objeto con el identificador único del proceso de descarga en formato **UUID**, la información del fichero y de los fragmentos.

**Estructura**

```json
{
  "downloadId": "string",
  "filename": "string",
  "size": "string",
  "hash": "string",
  "chunks": 1073741824,
  "chunkFiles": [
    {
      "number": "string",
      "filename": "string",
      "size": "string",
      "hash": "string"
    }
  ]
}
```

***

## 13. Recibir un fragmento de un fichero

### 13.1. Información general

**Método:** `GET`\
**URL:** `https://<tu_servidor>/integration/v2/channels/{channelCode}/files/downloads/{downloadId}` **Descripción:** Permite recibir un fragmento de un fichero que se está descargando por fragmentos. Se debe indicar el número del fragmento que se desea recibir, comenzando en 1. No es necesario que los fragmentos se reciban en orden, pero sí es necesario que el número de fragmento sea correcto.\
El fragmento se devuelve como un recurso binario, incluyendo las cabeceras necesarias para forzar su descarga.\
Esta operación requiere autenticación y está restringida a ciertos roles de usuario.

### 13.2. Cabeceras

```http
accept: */*
Authorization: Bearer <token>
```

### 13.3. Parámetros

| Parámetro   | Tipo    | Obligatorio | Descripción                                                      | Valor por defecto |
| ----------- | ------- | ----------- | ---------------------------------------------------------------- | ----------------- |
| channelCode | string  | Sí          | Código del canal. Formato: `codigoLocal-codigoRemoto-aplicacion` |                   |
| downloadId  | string  | Sí          | Identificador del proceso de descarga por fragmentos             |                   |
| chunkNumber | integer | Sí          | Número del fragmento que se está recibiendo (comenzando en 1)    | 1                 |

### 13.4. Ejemplos de petición

```bash
curl -X 'GET' \
  'https://<tu_servidor>/integration/v2/channels/123456789-987654321-APP001/files/downloads/550e8400-e29b-41d4-a716-446655440000?chunkNumber=1' \
  -H 'accept: */*' \
  -H 'Authorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJBdXRob3JpemF0...'
```

### 13.5. Seguridad

#### Autenticación

* Esta operación requiere autenticación mediante un token JWT válido.
* El token debe ser incluido en la cabecera `Authorization` con el formato `Bearer <token>`.

#### Roles autorizados

| Código            | Descripción          |
| ----------------- | -------------------- |
| ROLE\_GLOBALADMIN | Administrador Global |
| ROLE\_ADMIN       | Administrador        |
| ROLE\_ADVOPERATOR | Operador Avanzado    |
| ROLE\_OPERATOR    | Operador             |

### 13.6. Respuestas

#### Códigos de estado

| Código | Descripción                |
| ------ | -------------------------- |
| 200    | Operación exitosa          |
| 400    | Solicitud incorrecta       |
| 401    | No autorizado              |
| 403    | Prohibido                  |
| 404    | No encontrado              |
| 500    | Error interno del servidor |

#### Respuesta 200 OK

Devuelve el fragmento del fichero solicitado.

**Cabeceras**

| Header              | Descripción                                   |
| ------------------- | --------------------------------------------- |
| Content-Type        | Tipo MIME del fichero                         |
| Content-Disposition | attachment; filename="nombre\_del\_fragmento" |

**Cuerpo**

* Tipo: `binary`
* Contenido: fragmento del fichero solicitado

El cuerpo de la respuesta contiene el contenido del fragmento del fichero solicitado, devuelto como un recurso binario. El fichero se devuelve con las cabeceras `Content-Type` y `Content-Disposition` configuradas para forzar su descarga. El valor del header `Content-Type` se establece según el tipo MIME del fichero, y el header `Content-Disposition` se configura con el nombre del fragmento para que se utilice al descargarlo.

**Ejemplo de respuesta**

```
HTTP/1.1 200 OK
Content-Type: application/xls
Content-Disposition: attachment; filename="file.xls.part1"

(binary content of the file)
```

***

## 14. Cancelar el proceso de descarga de un fichero por fragmentos

### 14.1. Información general

**Método:** `DELETE`\
**URL:** `https://<tu_servidor>/integration/v2/channels/{channelCode}/files/downloads/{downloadId}` **Descripción:** Permite cancelar el proceso de descarga de un fichero por fragmentos. Esta operación eliminará los fragmentos que han sido generados para su descarga y toda la información del proceso.\
Esta operación requiere autenticación y está restringida a ciertos roles de usuario.

### 14.2. Cabeceras

```http
accept: */*
Authorization: Bearer <token>
```

### 14.3. Parámetros

| Parámetro   | Tipo   | Obligatorio | Descripción                                                      | Valor por defecto |
| ----------- | ------ | ----------- | ---------------------------------------------------------------- | ----------------- |
| channelCode | string | Sí          | Código del canal. Formato: `codigoLocal-codigoRemoto-aplicacion` |                   |
| downloadId  | string | Sí          | Identificador del proceso de descarga por fragmentos             |                   |

### 14.4. Ejemplo de petición

```bash
curl -X 'DELETE' \
  'https://<tu_servidor>/integration/v2/channels/123456789-987654321-APP001/files/downloads/550e8400-e29b-41d4-a716-446655440000' \
  -H 'accept: */*' \
  -H 'Authorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJBdXRob3JpemF0...'
```

### 14.5. Seguridad

#### Autenticación

* Esta operación requiere autenticación mediante un token JWT válido.
* El token debe ser incluido en la cabecera `Authorization` con el formato `Bearer <token>`.

#### Roles autorizados

| Código            | Descripción          |
| ----------------- | -------------------- |
| ROLE\_GLOBALADMIN | Administrador Global |
| ROLE\_ADMIN       | Administrador        |
| ROLE\_ADVOPERATOR | Operador Avanzado    |
| ROLE\_OPERATOR    | Operador             |

### 14.6. Respuestas

#### Códigos de estado

| Código | Descripción                |
| ------ | -------------------------- |
| 200    | Operación exitosa          |
| 400    | Solicitud incorrecta       |
| 401    | No autorizado              |
| 403    | Prohibido                  |
| 404    | No encontrado              |
| 500    | Error interno del servidor |

***

## 15. Finalizar el proceso de descarga de un fichero por fragmentos

### 15.1. Información general

**Método:** `POST`\
**URL:** `https://<tu_servidor>/integration/v2/channels/{channelCode}/files/downloads/{downloadId}/finalize` **Descripción:** Permite finalizar el proceso de descarga de un fichero por fragmentos. Esta operación se utiliza para indicar que se han recibido todos los fragmentos generados para la descarga del fichero, y se procederá a eliminar cualquier fragmento que haya sido generado y toda la información del proceso.\
Esta operación requiere autenticación y está restringida a ciertos roles de usuario.

### 15.2. Cabeceras

```http
accept: */*
Authorization: Bearer <token>
```

### 15.3. Parámetros

| Parámetro   | Tipo   | Obligatorio | Descripción                                                      | Valor por defecto |
| ----------- | ------ | ----------- | ---------------------------------------------------------------- | ----------------- |
| channelCode | string | Sí          | Código del canal. Formato: `codigoLocal-codigoRemoto-aplicacion` |                   |
| downloadId  | string | Sí          | Identificador del proceso de descarga por fragmentos             |                   |

### 15.4. Ejemplo de petición

```bash
curl -X 'POST' \
  'https://<tu_servidor>/integration/v2/channels/123456789-987654321-APP001/files/downloads/550e8400-e29b-41d4-a716-446655440000/finalize' \
  -H 'accept: */*' \
  -H 'Authorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJBdXRob3JpemF0...' \
  -d ''
```

### 15.5. Seguridad

#### Autenticación

* Esta operación requiere autenticación mediante un token JWT válido.
* El token debe ser incluido en la cabecera `Authorization` con el formato `Bearer <token>`.

#### Roles autorizados

| Código            | Descripción          |
| ----------------- | -------------------- |
| ROLE\_GLOBALADMIN | Administrador Global |
| ROLE\_ADMIN       | Administrador        |
| ROLE\_ADVOPERATOR | Operador Avanzado    |
| ROLE\_OPERATOR    | Operador             |

### 15.6. Respuestas

#### Códigos de estado

| Código | Descripción                |
| ------ | -------------------------- |
| 200    | Operación exitosa          |
| 400    | Solicitud incorrecta       |
| 401    | No autorizado              |
| 403    | Prohibido                  |
| 404    | No encontrado              |
| 500    | Error interno del servidor |


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.editran.onesait.com/documentacion-editran/editran-connect-v3.3/api/v2/files.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
