Assets
Todos los endpoints requieren autenticación. Ver Autenticación.
Base URL: https://fivehub.pro
GET /api/assets — Listar assets
Sección titulada «GET /api/assets — Listar assets»Devuelve una lista paginada de todos los assets de tu organización.
Parámetros query:
| Parámetro | Tipo | Default | Descripción |
|---|---|---|---|
limit | number | 50 | Máximo de resultados (máx. 100). |
offset | number | 0 | Resultados a saltar (paginación). |
folderId | string | — | Filtrar por carpeta. Vacío ("") = solo raíz. Omitir = todos los assets. |
Respuesta 200:
{ "assets": [ { "id": "asset_abc123", "organizationId": "org_xyz", "key": "org_xyz/1700000000000-a1b2c3-imagen.png", "name": "imagen.png", "mimeType": "image/png", "size": 204800, "publicUrl": "https://cdn.fivehub.pro/org_xyz/...", "createdAt": "2025-01-15T10:30:00.000Z" } ], "total": 42, "limit": 50, "offset": 0}curl "https://fivehub.pro/api/assets?limit=10&offset=0" \ -H "x-api-key: TU_API_KEY"const { assets, total } = await client.list({ limit: 10, offset: 0 });POST /api/assets — Subir asset
Sección titulada «POST /api/assets — Subir asset»Sube un archivo a tu organización.
Body: multipart/form-data
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
file | File | Sí | Archivo binario. Máximo 100 MB. |
name | string | No | Nombre personalizado. Por defecto usa el nombre del archivo. |
folderId | string | No | ID de carpeta destino. Omitir para subir al nivel raíz. |
Respuesta 201: Devuelve el objeto Asset creado.
curl -X POST "https://fivehub.pro/api/assets" \ -H "x-api-key: TU_API_KEY" \ -F "file=@./recurso.zip" \ -F "name=mi-recurso-v2"const file = inputElement.files[0];const asset = await client.upload(file);console.log(asset.publicUrl);import { readFileSync } from 'fs';const blob = new Blob([readFileSync('./recurso.zip')]);const asset = await client.upload(blob, 'mi-recurso-v2.zip');console.log(asset.publicUrl);GET /api/assets/:id — Obtener asset
Sección titulada «GET /api/assets/:id — Obtener asset»Devuelve los metadatos de un asset por su ID.
Respuesta 200: Objeto Asset.
curl "https://fivehub.pro/api/assets/asset_abc123" \ -H "x-api-key: TU_API_KEY"const asset = await client.get('asset_abc123');console.log(asset.name, asset.size);DELETE /api/assets/:id — Eliminar asset
Sección titulada «DELETE /api/assets/:id — Eliminar asset»Elimina un asset permanentemente de la base de datos y del almacenamiento.
Respuesta 200: { "success": true }
curl -X DELETE "https://fivehub.pro/api/assets/asset_abc123" \ -H "x-api-key: TU_API_KEY"await client.delete('asset_abc123');GET /api/assets/:id/url — URL firmada
Sección titulada «GET /api/assets/:id/url — URL firmada»Genera una URL de descarga temporal para un asset.
Parámetros query:
| Parámetro | Tipo | Default | Descripción |
|---|---|---|---|
expiresIn | number | 3600 | Duración en segundos. |
Respuesta 200:
{ "url": "https://cdn.fivehub.pro/...?X-Amz-Expires=3600&...", "expiresIn": 3600, "asset": { "id": "asset_abc123", "name": "recurso.zip", "mimeType": "application/zip", "size": 5242880 }}curl "https://fivehub.pro/api/assets/asset_abc123/url?expiresIn=7200" \ -H "x-api-key: TU_API_KEY"const { url, expiresIn } = await client.getSignedUrl('asset_abc123', 7200);console.log('URL válida por', expiresIn, 'segundos:', url);Tipo Asset
Sección titulada «Tipo Asset»type Asset = { id: string; organizationId: string; folderId: string | null; // null = nivel raíz key: string; // ruta interna en el storage name: string; mimeType: string | null; size: number | null; // bytes publicUrl: string | null; createdAt: string; // ISO 8601};