Storage API

Vision General

Storage API es una API para gestionar el almacenamiento de objetos de Fess. Permite obtener el listado de archivos y directorios en el almacenamiento, asi como descargar, eliminar y subir archivos.

URL Base

/api/admin/storage

Autenticacion

Todos los endpoints de Admin API, incluida Storage API, requieren autenticacion mediante un token de acceso. Especifique el token de acceso en el encabezado Authorization de la solicitud.

Authorization: Bearer <token de acceso>

Para obtener informacion sobre como obtener el token de acceso y los permisos necesarios (de forma predeterminada, el rol admin-api), consulte Vision General de Admin API.

Lista de Endpoints

Metodo Ruta Descripcion
GET /list/{id} Obtener listado de archivos y directorios
GET /download/{id} Descargar un archivo
DELETE /delete/{id} Eliminar un archivo
PUT /upload Subir un archivo

Obtener Listado de Archivos y Directorios

Devuelve el listado de archivos y directorios ubicados bajo el directorio especificado. En {id} especifique el id del directorio obtenido en el listado. Si se omite {id}, se obtiene el listado del directorio raiz.

Solicitud

GET /api/admin/storage/list/{id}

Respuesta

En items se almacena un array de objetos que representan la informacion de archivos y directorios (primero los directorios, luego los archivos). Cada objeto tiene los siguientes campos.

Campo Descripcion
id Identificador codificado. Cadena que representa la ruta del objeto codificada en Base64 seguro para URL, utilizada como {id} al descargar o eliminar.
path Ruta del directorio padre
name Nombre del archivo o directorio
hashCode Valor de hash utilizado en el procesamiento interno (no es un valor estable que represente el contenido del objeto)
size Tamano (en bytes)
directory Indica si es un directorio (boolean)
lastModified Fecha y hora de la ultima modificacion (formato ISO 8601; incluido solo para archivos)
{
  "response": {
    "version": "15.7.0",
    "status": 0,
    "items": [
      {
        "id": "c3ViZGly",
        "path": "/",
        "name": "subdir",
        "hashCode": 12345,
        "size": 0,
        "directory": true
      },
      {
        "id": "c2FtcGxlLnR4dA==",
        "path": "/",
        "name": "sample.txt",
        "hashCode": 67890,
        "size": 1024,
        "directory": false,
        "lastModified": "2025-01-01T00:00:00.000+00:00"
      }
    ]
  }
}

Descargar un Archivo

Descarga un archivo del almacenamiento. En {id} especifique el id obtenido en el listado. La respuesta se devuelve como un flujo de datos de tipo application/octet-stream.

Solicitud

GET /api/admin/storage/download/{id}

Respuesta

Flujo binario del archivo (Content-Type: application/octet-stream).

Nota

La respuesta de esta API no incluye el encabezado Content-Disposition. El nombre del archivo con el que se guarda debe especificarse en el lado del cliente (en cURL, utilice la opcion -o).

Eliminar un Archivo

Elimina un archivo del almacenamiento. En {id} especifique el id obtenido en el listado.

Solicitud

DELETE /api/admin/storage/delete/{id}

Respuesta

{
  "response": {
    "version": "15.7.0",
    "status": 0
  }
}

Subir un Archivo

Sube un archivo al almacenamiento. El envio se realiza en formato multipart/form-data. El directorio de destino se especifica mediante el campo de formulario path, no como parte de la ruta URL.

Solicitud

PUT /api/admin/storage/upload
Content-Type: multipart/form-data

Descripcion de los Campos

Campo Requerido Descripcion
path No Ruta del directorio de destino (sin barras al inicio ni al final). Si se omite, el archivo se guarda en el raiz (directamente bajo el bucket).
file Si Archivo a subir

Respuesta

{
  "response": {
    "version": "15.7.0",
    "status": 0
  }
}

Errores

Cada endpoint devuelve una respuesta con status distinto de 0 (1 en caso de error de validacion) cuando el procesamiento falla. El campo message del cuerpo de la respuesta contiene el detalle del error. Para obtener informacion sobre los valores de status y los codigos de estado HTTP, consulte Vision General de Admin API.

Los principales casos de error son los siguientes.

Endpoint Principales casos en que se produce un error
Obtener listado de archivos y directorios Cuando el numero de elementos supera el limite
Descargar un archivo Cuando el id es invalido o la descarga falla
Eliminar un archivo Cuando el id es invalido o la eliminacion falla
Subir un archivo Cuando no se especifica file o la subida falla

Ejemplos de Uso

Obtener Listado del Directorio Raiz

curl -X GET "http://localhost:8080/api/admin/storage/list/" \
     -H "Authorization: Bearer YOUR_TOKEN"

Descargar un Archivo

curl -X GET "http://localhost:8080/api/admin/storage/download/c2FtcGxlLnR4dA==" \
     -H "Authorization: Bearer YOUR_TOKEN" \
     -o sample.txt

Eliminar un Archivo

curl -X DELETE "http://localhost:8080/api/admin/storage/delete/c2FtcGxlLnR4dA==" \
     -H "Authorization: Bearer YOUR_TOKEN"

Subir un Archivo

curl -X PUT "http://localhost:8080/api/admin/storage/upload" \
     -H "Authorization: Bearer YOUR_TOKEN" \
     -F "path=subdir" \
     -F "file=@sample.txt"

Informacion de Referencia