Export Project
Exporta todo el contenido del proyecto como un único documento JSON comprimido con gzip.
Este endpoint es la base del modo snapshot: exporta un proyecto una sola vez y sirve todos los métodos de lectura desde el snapshot local, sin llamadas a la API en cada petición.
Endpoint
curl https://api.contentisland.net/api/1.0/project/export \--header 'Authorization: Bearer TU_TOKEN_DE_ACCESO' \--output content-island-snapshot.json.gzRespuesta
Una respuesta correcta devuelve un JSON comprimido con gzip. Las cabeceras son:
| Cabecera | Valor |
|---|---|
Content-Type | application/json |
Content-Encoding | gzip |
Una vez descomprimido, se obtiene un objeto ContentSnapshot con la siguiente estructura:
interface ContentSnapshot { meta: { schemaVersion: number; // versión actual del esquema del snapshot (SNAPSHOT_SCHEMA_VERSION = 1) exportedAt: string; // marca de tiempo ISO-8601 de cuándo se generó el snapshot projectId: string; view: 'published' | 'preview'; }; project: Project; // misma estructura que GET /project contents: Content[]; // todo el contenido accesible, en todos los idiomas, sin paginación}meta.schemaVersion: La versión del esquema del snapshot. El valor soportado actualmente es1(SNAPSHOT_SCHEMA_VERSION).meta.exportedAt: Una marca de tiempo ISO-8601 que indica cuándo se generó el snapshot.meta.projectId: El ID del proyecto exportado.meta.view:'published'o'preview', según el token utilizado (ver más abajo).project: El objeto del proyecto, con la misma estructura que devuelveGET /project.contents: Todo el contenido accesible mediante el token, en todos los idiomas y sin paginación.
El array contents usa la estructura Content ya existente de la API con contenido relacionado con profundidad 0: los campos relacionados se mantienen como cadenas de id en bruto, las enumeraciones se representan como cadenas y los medios se referencian mediante URLs de la CDN (únicamente se incluyen las URLs; los medios permanecen en la CDN). El contenido serializado es idéntico byte a byte a lo que devuelve GET /contents para el mismo token sin parámetros de consulta.
Vista determinada por el token
La vista exportada la determina el token, no ningún parámetro:
- Un token normal exporta la vista
published. - Un token con prefijo
PREVIEW_exporta la vistapreview(borrador).
No existe un parámetro de consulta view: cambia de token para cambiar de vista.
Límite de peticiones
Este endpoint está limitado a un máximo de 5 peticiones de exportación por proyecto cada 60 segundos, aplicado por projectId (no por IP ni por token). El límite es configurable en el servidor mediante la variable de entorno EXPORT_RATE_LIMIT_MAX.
El límite se aplica por instancia del servidor: una protección frente a abusos, no un SLA a nivel de clúster. Una vez transcurrida la ventana de 60 segundos, el contador se reinicia, por lo que no hay bloqueos permanentes.
Superar el límite devuelve HTTP 429 con una cabecera Retry-After (segundos restantes en la ventana) y el siguiente cuerpo:
{ "error": { "code": "RATE_LIMITED", "message": "Too many export requests for this project. Try again later.", "requestId": "req_abc123" }}Códigos de estado
| Código | Descripción |
|---|---|
| 200 | La solicitud se ha procesado correctamente y se ha devuelto el snapshot JSON comprimido con gzip. |
| 401 | No autorizado. El token de acceso falta, no es válido o ha expirado. |
| 429 | Demasiadas peticiones. Se superó el límite por proyecto; incluye una cabecera Retry-After. |
| 500 | Error interno del servidor. Ocurrió un error al procesar la solicitud. |
Las respuestas de error siguen el contrato uniforme documentado en Errores — { "error": { "code", "message", "requestId", "details?" } }.