Clonación de esquemas
La clonación crea una copia completa de un esquema de recinto: toda la distribución de asientos, todas las secciones, filas y asientos, los metadatos y coordenadas de los asientos, y las zonas de precios (copiadas como plantillas, sin conservar los mismos ID). Úsala para crear variaciones de un esquema existente, configurar recintos similares rápidamente o duplicar un esquema para pruebas.
La clonación es asíncrona. Iniciar la operación devuelve un UUID de inmediato; la copia se ejecuta en segundo plano y debes consultar un endpoint de resultado hasta que termine.
Autenticación
Ambos endpoints pertenecen a la Booking API privada y requieren la cabecera X-API-Key con el token de tu organización:
X-API-Key: {organizationToken}
La clave API secreta está disponible en el panel de administración del Editor (Organization Details, campo “Clave API secreta”) y también se devuelve en la respuesta de login del Editor como user.organizationToken para los administradores de la organización. Trátalo como una cadena opaca y envía el valor tal cual.
Paso 1 - iniciar la clonación
POST /api/private/v2.0/schemas/clone/{id}
| Parámetro | En | Obligatorio | Descripción |
|---|---|---|---|
id |
path | sí | ID numérico del esquema a clonar. |
El cuerpo de la respuesta es el UUID de la operación de clonación:
curl -X POST \
"https://booking.seatmap.pro/api/private/v2.0/schemas/clone/1001" \
-H "X-API-Key: ${ORG_TOKEN}"
# 200
# "123e4567-e89b-12d3-a456-426614174000"
| Estado | Significado |
|---|---|
| 200 | Clonación iniciada; el cuerpo contiene el UUID de la operación. |
| 403 | Tu organización no tiene acceso a este esquema. |
| 404 | Esquema no encontrado. |
Paso 2 - consultar el resultado
GET /api/private/v2.0/schemas/clone/result/{uuid}
| Parámetro | En | Obligatorio | Descripción |
|---|---|---|---|
uuid |
path | sí | UUID de la operación devuelto por la llamada de inicio. |
curl "https://booking.seatmap.pro/api/private/v2.0/schemas/clone/result/123e4567-e89b-12d3-a456-426614174000" \
-H "X-API-Key: ${ORG_TOKEN}"
Mientras la clonación sigue en curso:
{
"uuid": "123e4567-e89b-12d3-a456-426614174000",
"state": "IN_PROCESS",
"schemaId": 1001,
"newSchemaId": null
}
Cuando termina:
{
"uuid": "123e4567-e89b-12d3-a456-426614174000",
"state": "DONE",
"schemaId": 1001,
"newSchemaId": 1002
}
newSchemaId es el ID del esquema clonado; úsalo en todas las llamadas posteriores a la API para trabajar con la copia.
Estados de la operación
state |
Significado |
|---|---|
CREATED |
Operación registrada; la copia aún no ha comenzado. |
IN_PROCESS |
La copia está en curso — sigue consultando. |
DONE |
Terminal. El clon está listo; lee newSchemaId. |
ERROR |
Terminal. La clonación falló; vuelve a iniciar la operación. |
Intervalo de consulta recomendado: 2-5 segundos para esquemas típicos.
Fragmento de sondeo
async function cloneSchema(schemaId, orgToken, baseUrl = 'https://booking.seatmap.pro') {
const headers = { 'X-API-Key': orgToken };
const startRes = await fetch(`${baseUrl}/api/private/v2.0/schemas/clone/${schemaId}`, {
method: 'POST',
headers,
});
if (!startRes.ok) throw new Error(`Clone initiation failed: ${startRes.status}`);
const operationUuid = await startRes.json();
const deadline = Date.now() + 60_000;
while (Date.now() < deadline) {
const res = await fetch(`${baseUrl}/api/private/v2.0/schemas/clone/result/${operationUuid}`, {
headers,
});
if (!res.ok) throw new Error(`Clone result poll failed: ${res.status}`);
const result = await res.json();
if (result.state === 'DONE') return result.newSchemaId;
if (result.state === 'ERROR') throw new Error(`Clone ${operationUuid} failed`);
await new Promise((resolve) => setTimeout(resolve, 3_000));
}
throw new Error(`Clone ${operationUuid} did not complete in time`);
}
Notas
- El clon es un esquema totalmente independiente: los cambios en la copia nunca afectan al original.
- Las zonas de precios se copian como plantillas; las asignaciones de precios de un evento concreto no se trasladan.
- El flujo de autenticación, inicio y sondeo mostrado arriba está cubierto por nuestra suite de pruebas end-to-end.
Ver también
- Referencia de la API — explorador interactivo de la API y referencia completa.