Centro de ayuda›Desarrolladores›Operaciones de duplicados

Operaciones de duplicados

Duplica una actividad, pack, alquiler, bono o automatización existente para crear otra a partir de ella por API v1 o MCP.

Duplicar una entidad es crear una copia completa de un documento existente — textos en todos los

idiomas, tarifas, configuración — sin rehacerlo desde cero. El manual admite duplicar actividades,

packs, alquileres, bonos y automatizaciones; sirve para lanzar variantes de un producto que ya tienes

montado, por ejemplo una nueva temporada o tarifa de una actividad — ver

Operaciones de actividades.

Operaciones de esta página: duplicate-entity (escritura).

Las bases comunes (autenticación, GET frente a POST, prueba en seco, errores HTTP, límites) están en

API v1 — Introducción y primeros pasos.

Los ejemplos de esta página toman customer_id del token; solo hace falta indicarlo con tokens

multicuenta.

duplicate-entity: clona una actividad, pack, alquiler, automatización o bono

Copia un documento entero de tu cuenta — textos en todos los idiomas, tarifas, configuración — y le

antepone «Copia de» al nombre. Es una operación de escritura: solo puedes duplicar dentro de tu

propia cuenta, nunca desde otra.

Cómo llamarla

curl -X POST https://api.bukyapp.com/v1/ops/duplicate-entity \
  -H "Authorization: Bearer bk_TU_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"entity": "activity", "source_id": "6aa3db20f4b405ea4e3dfc20", "dry_run": true}'

Por MCP: «Duplica la actividad Surf Principiante en piscina» o «Haz una copia de mi pack Surf Camp».

El asistente primero resuelve el nombre a un identificador (con get-activity u otra operación de

lectura del catálogo correspondiente, ver Operaciones de actividades)

y luego duplica.

El manual completo, siempre actualizado, está en GET https://api.bukyapp.com/v1/ops/duplicate-entity/manual.

Parámetros

ParámetroTipoNivelQué hace
entitytextoobligatorioTipo de entidad a clonar: activity, pack, rental, automation o bonoclass. Los alojamientos (accommodation) no están soportados: sus habitaciones son documentos aparte.
source_idtextoobligatorioIdentificador (24 caracteres hexadecimales) del documento a clonar. Tiene que pertenecer a tu cuenta.
overridesobjetoopcionalCampos de nivel superior que quieres fijar en la copia (por ejemplo {"internalName": "Curso Surf (variante)"}), en vez del «Copia de…» automático.

Qué devuelve

Prueba en seco real, duplicando la actividad «Surf Principiante en piscina»:

{
  "success": true,
  "operation": "duplicate-entity",
  "dry_run": true,
  "entity": "activity",
  "source_id": "6aa3db20f4b405ea4e3dfc20",
  "applied": {
    "stripped": ["_id", "__v", "createdAt", "isDisabled", "children", "externalCals", "activities_useSessionsFrom"],
    "reset": ["channel_getyourguide_active", "channel_getyourguide_variations"],
    "renamed": ["title"]
  },
  "remap_count": 2,
  "payload_preview": {
    "title": { "es": "Copia de Surf Principiante en piscina", "en": "Copia de New" },
    "rates": [
      { "description": { "name": "Adulto", "color": "#eeeeee" }, "price": 6000, "_id": "6aa95adb7771d7f7a797f43d" }
    ]
  },
  "warnings": []
}
CampoSignificado
applied.strippedCampos del original que la copia no hereda: identificador, fecha de creación, estado activo/inactivo, hijos y las sesiones enlazadas.
applied.resetCampos que vuelven a su valor por defecto en la copia; aquí, la conexión con el canal GetYourGuide se desactiva.
applied.renamedCampos a los que se antepone «Copia de…» (el título, en todos los idiomas).
remap_countCuántas referencias internas (por ejemplo, el identificador de cada tarifa) se regeneran para que la copia no comparta subdocumentos con el original.
payload_previewEl documento que se crearía. En una importación real, la respuesta añade además clone_id con el identificador del nuevo documento (no aparece en la prueba en seco).
warningsAvisos que no bloquean la copia.

Con overrides, el internalName que pases sustituye al «Copia de…» automático; el resto del

documento se copia igual.

Errores propios

SituaciónRespuesta
entity no soportado (accommodation, o cualquier valor que no sea activity, pack, rental, automation, bonoclass)200 con success: false, error: "operation_not_covered" y la lista covered_entities.
source_id que no existe en tu cuenta200 con success: false, error: "source_not_found".
Falta entity o source_id400 con error: "invalid_params" y el campo que falta en details.

Consejos

  • Duplicar es el atajo para crear variantes de un mismo producto (temporada, idioma, tarifa distinta)

sin rehacer la ficha entera. Ajusta después el clon con update-activity u otro update-* de su

catálogo, en Operaciones de actividades o la página equivalente.

  • El estado activo/inactivo no se copia (isDisabled queda fuera del clon): el nuevo documento nace

con el valor por defecto del sistema, no con el del original.

  • Según el manual, las imágenes no se duplican: el clon comparte los mismos ficheros que el original

(misma cuenta), con un aviso en warnings cuando el original tiene imágenes. Para subir o borrar

imágenes, ver Operaciones de imágenes.

¿Te ha resultado útil este artículo?