Centro de ayuda›Desarrolladores›Operaciones de categorías

Operaciones de categorías

Lista, crea, edita y borra las categorías de tu catálogo por API v1 o MCP.

Las categorías agrupan tus productos (actividades, alojamientos, packs, alquileres, bonos, extras o

tienda) para que el cliente los encuentre por pestañas en tu catálogo público. Estas operaciones

listan, crean, editan y borran categorías. Sobre qué son y cómo se organizan de cara al

cliente, ver Gestionar categorías y etiquetas.

Operaciones de esta página: list-categories, create-category, update-category,

delete-category (solo lectura: list-categories; escritura: el resto).

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. En

las cinco, customer_id se toma de tu token salvo que uses uno multicuenta.

list-categories: lista las categorías de tu negocio

Solo lectura: vale con cualquier token. Es el catálogo que usan las demás operaciones cuando

referencias una categoría por nombre, así que conviene consultarlo antes de crear una nueva para no

duplicar («Surf» y «surf» y «Cursos de surf»).

Cómo llamarla

curl "https://api.bukyapp.com/v1/ops/list-categories?q=surf&disabled=false" \
  -H "Authorization: Bearer bk_TU_TOKEN"

Por MCP: «¿Qué categorías tengo creadas?», «Lista las categorías que contengan surf» o «¿Qué

categorías tengo desactivadas?».

Parámetros

ParámetroTipoNivelQué hace
qtextoopcionalFiltra por título (contiene, sin tildes).
disabledbooleanoopcionaltrue para ver solo las desactivadas; false para ver solo las activas. Por defecto, todas.
created_fromfechaopcionalCategorías creadas desde esta fecha (ISO).
created_tofechaopcionalCategorías creadas hasta esta fecha.
detailtextoopcionalVista de la respuesta: compact (por defecto, para identificar y enumerar) o descriptive (textos en claro, con las subcategorías).
langtextoopcionalSolo con detail:"descriptive". Idioma del título (es, en…). Si lo omites, el título llega en todos los idiomas rellenados.
fullbooleanoopcionaltrue devuelve el documento completo de cada categoría (todos los idiomas, orden en el catálogo, subcategorías…). Gana a detail.
limitnúmeroopcionalMáximo de categorías que devuelve, aplicado después del resto de filtros.

Qué devuelve

Ejemplo real, vista compacta (la de por defecto):

{
  "success": true,
  "operation": "list-categories",
  "customer_id": "5a55fff67e9fe0036a541d15",
  "detail": "compact",
  "count": 2,
  "total": 2,
  "items": [
    { "_id": "69bc294ac2395a856d55d2c7", "title": "Clase", "is_disabled": false },
    { "_id": "6a37efe25c498030c4a25ea3", "title": "pruebas", "is_disabled": false }
  ]
}

Con detail:"descriptive" y lang:"es", el título llega ya resuelto a un idioma y cada categoría

trae sus subcategorías (lista vacía si no tiene ninguna):

{
  "success": true,
  "operation": "list-categories",
  "detail": "descriptive",
  "count": 2,
  "total": 2,
  "items": [
    { "_id": "69bc294ac2395a856d55d2c7", "title": "Clase", "is_disabled": false, "children": [] },
    { "_id": "6a37efe25c498030c4a25ea3", "title": "pruebas", "is_disabled": false, "children": [] }
  ]
}
CampoSignificado
detailVista aplicada: compact, descriptive o full.
countCategorías devueltas, tras filtros y limit.
totalCategorías que cumplen los filtros, antes de aplicar limit. Si count es menor que total, limit recortó la lista.
itemsLa lista. En compact: _id, title e is_disabled. En descriptive, además children con las subcategorías. Con full:true, el documento completo de cada categoría (título por idioma, orden en el catálogo…).
warningsAvisos de la operación; solo aparece si hay algo que avisar.

Consejos

  • Usa disabled:true para encontrar categorías que ocultaste y que ya no ves en el catálogo.

create-category: crea una categoría nueva

Es de escritura. El ejemplo de esta página se ejecutó en modo prueba: el sistema valida y muestra

qué pasaría, pero no llega a crear nada.

Cómo llamarla

curl -X POST https://api.bukyapp.com/v1/ops/create-category \
  -H "Authorization: Bearer bk_TU_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"title": "Buceo", "dry_run": true}'

Por MCP: «Crea una categoría llamada Buceo».

Parámetros

ParámetroTipoNivelQué hace
titletextoobligatorioNombre de la categoría.
childrenlistaopcionalNodos que arma la categoría por dentro: {"type": "subtitle", "title": "..."} para un divisor con título, o {"type": "product", "product": "..."} (nombre o identificador) para enlazar un producto ya existente de cualquier catálogo (ver Operaciones de actividades u Operaciones de productos de tienda).

Qué devuelve

Prueba en seco con un divisor y un producto enlazado:

{
  "success": true,
  "dry_run": true,
  "operation": "create-category",
  "resolved_children": [
    { "index": 0, "type": "subtitle", "title": "Iniciación", "reason": "divisor con título" },
    { "index": 1, "type": "product", "product": "69dba4d4b227f96a4e3b21a8", "reason": "match exacto por nombre 'Surf Principiante'" }
  ],
  "payload_preview": {
    "title": { "es": "Cursos", "en": "New", "de": "New", "…": "…" },
    "children": [
      { "type": "subtitle", "title": { "es": "Iniciación", "…": "…" } },
      { "type": "product", "product": "69dba4d4b227f96a4e3b21a8" }
    ]
  }
}
CampoSignificado
resolved_childrenPor cada nodo de children, cómo se resolvió: el _id del producto encontrado y por qué.
payload_previewLo que se enviaría a crear: el título ya convertido a todos los idiomas (el que no rellenas queda como New) y los children resueltos.

En la prueba en seco no hay _id: como no se llega a crear nada, no existe todavía. En una

creación real la respuesta trae el _id de la categoría creada en su lugar.

Errores propios de esta operación

SituaciónRespuesta
Falta title400 con error: "invalid_params".
Un nodo product no encuentra el producto que le pasassuccess: false, error: "child_product_unresolved" y product_candidates con los productos disponibles para que elijas uno.

Consejos

  • Consulta list-categories antes de crear, para no duplicar una que ya existe con otro nombre.
  • Si solo quieres el título, no mandes children: es la variante mínima y la más habitual.

update-category: cambia el título o la visibilidad

Es de escritura, con edición parcial: solo cambia lo que le pasas, el resto de la categoría queda

igual.

Cómo llamarla

curl -X POST https://api.bukyapp.com/v1/ops/update-category \
  -H "Authorization: Bearer bk_TU_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"category": "Surf", "title": "Surf y bodyboard", "dry_run": true}'

Por MCP: «Cambia el nombre de la categoría Surf a "Surf y bodyboard"» u «Oculta la categoría Surf del catálogo».

Parámetros

ParámetroTipoNivelQué hace
categorytextoobligatorioCategoría a editar: nombre o identificador.
titletextorecomendadoNuevo nombre.
hiddenbooleanoopcionaltrue la oculta del catálogo público sin borrarla; false la vuelve a mostrar.

Qué devuelve

Prueba en seco cambiando el título:

{
  "success": true,
  "dry_run": true,
  "operation": "update-category",
  "_id": "69bc294ac2395a856d55d2c7",
  "changes": { "title": { "es": "Clases de surf" } }
}
CampoSignificado
_idIdentificador de la categoría resuelta a partir de category.
changesSolo los campos que de verdad van a cambiar.

Errores propios de esta operación

SituaciónRespuesta
Falta category400 con error: "invalid_params".
El nombre no coincide con ninguna categoríasuccess: false, error: "category_unresolved" y category_candidates con las categorías existentes.

Consejos

  • Los productos enlazados a una categoría (children de tipo producto) no se tocan desde aquí: ese

enlace se gestiona desde la ficha del producto, no desde la categoría.

delete-category: borra una categoría

Es de escritura. La categoría deja de verse en el panel y en el catálogo público. No puedes

deshacerlo desde la API ni desde el asistente, pero el soporte de Buky puede recuperarla si lo

necesitas. No borra en cascada, así que si algún producto sigue apuntando a la categoría, esa

referencia queda colgando sin más efecto.

Cómo llamarla

curl -X POST https://api.bukyapp.com/v1/ops/delete-category \
  -H "Authorization: Bearer bk_TU_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"category": "Buceo", "confirm": true, "dry_run": true}'

Por MCP: «Borra la categoría Buceo».

Parámetros

ParámetroTipoNivelQué hace
categorytextoobligatorioCategoría a borrar: nombre o identificador.
confirmbooleanorecomendadoDebe ser true para que el borrado real se ejecute; es la salvaguarda contra un borrado accidental.

Qué devuelve

Prueba en seco:

{
  "success": true,
  "dry_run": true,
  "operation": "delete-category",
  "would_delete": { "_id": "6a37efe25c498030c4a25ea3", "name": "pruebas" },
  "soft_deleted": false,
  "reversible": true,
  "warnings": ["borrado limpio (sin cascada): posibles referencias colgando a esta categoría son menores"]
}
CampoSignificado
would_deleteCategoría que se borraría (en un borrado real, este bloque se sustituye por la confirmación del borrado).
soft_deletedSi la operación llegó a borrar de verdad. En la prueba en seco, siempre false.
reversibletrue: el soporte de Buky puede recuperarla si lo pides.

Errores propios de esta operación

SituaciónRespuesta
El nombre no coincide con ninguna categoríasuccess: false, error: "category_unresolved" y category_candidates con las existentes.

Consejos

  • Si te equivocas, el soporte de Buky puede recuperarla.

¿Te ha resultado útil este artículo?