Centro de ayuda›Desarrolladores›Operaciones de personal

Operaciones de personal

Consulta, crea, edita y borra instructores y monitores de tu equipo por API v1 o MCP.

El personal son los instructores y monitores de tu equipo: los das de alta en Buky para asignarlos a actividades y sesiones, controlar su disponibilidad y consultar sus horas trabajadas. Más contexto en Gestionar el personal (instructores y monitores). El personal se asigna desde la ficha de cada actividad: ver Operaciones de actividades.

Operaciones de esta página: list-staff, get-staff, create-staff, update-staff, delete-staff (solo lectura: list-staff, get-staff; escritura: create-staff, update-staff, delete-staff)

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.

list-staff: lista el personal del equipo

Devuelve el personal dado de alta: identificador, nombre y si está activo o desactivado. Es la forma de ver quién existe sin tener que adivinar un nombre en get-staff. Es una operación de solo lectura: vale con cualquier token.

Cómo llamarla

curl "https://api.bukyapp.com/v1/ops/list-staff" \
  -H "Authorization: Bearer bk_TU_TOKEN"
curl -X POST https://api.bukyapp.com/v1/ops/list-staff \
  -H "Authorization: Bearer bk_TU_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"disabled": false}'

Por MCP: «Enséñame el personal que tengo dado de alta».

Parámetros

ParámetroTipoNivelQué hace
qtextoopcionalBusca por nombre, sin tildes. Es el mismo filtro que el buscador del panel.
disabledbooleanoopcionaltrue: solo desactivados. false: solo activos. Si lo omites, salen todos.
created_from, created_tofechaopcionalRango sobre la fecha de alta, como el filtro de fecha del panel.
detailtextoopcionalcompact (por defecto): solo lo necesario para identificar. descriptive: añade la cara pública (título, descripción) y el email.
langtextoopcionalSolo con detail: "descriptive". Idioma de los textos (por ejemplo es); si falta, se usa español o el primer idioma disponible.
fullbooleanoopcionaltrue trae el documento completo del servidor (pesado). Tiene prioridad sobre detail.
limitnúmeroopcionalMáximo de resultados, aplicado después de los filtros.

Qué devuelve

Ejemplo real, vista compacta (nombre sustituido por uno ficticio):

{
  "success": true,
  "detail": "compact",
  "count": 1,
  "total": 1,
  "items": [
    { "_id": "602a2edd48bcd3005f403474", "name": "Laura Gómez", "internalName": null, "is_disabled": false }
  ],
  "warnings": []
}
CampoSignificado
itemsUna fila por persona: _id, name (nombre interno), internalName y is_disabled (si está desactivada). Con detail: "descriptive" cada fila añade título, descripción y email; con full: true, el documento completo.
count / totalcount son las filas que llegan en items; total las que cumplen los filtros antes de aplicar limit. Si count es menor que total, limit recortó la lista.

get-staff: consulta la ficha completa de un miembro del personal

Devuelve el documento completo y actualizado de un instructor o monitor, resuelto por nombre o identificador. Es la forma de comprobar cómo quedó tras crearlo o editarlo. Es una operación de solo lectura: vale con cualquier token.

Cómo llamarla

curl "https://api.bukyapp.com/v1/ops/get-staff?staff=Laura%20G%C3%B3mez" \
  -H "Authorization: Bearer bk_TU_TOKEN"
curl -X POST https://api.bukyapp.com/v1/ops/get-staff \
  -H "Authorization: Bearer bk_TU_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"staff": "Laura Gómez"}'

Por MCP: «Enséñame la ficha del instructor Laura Gómez».

Parámetros

ParámetroTipoNivelQué hace
stafftextoobligatorioNombre o identificador del miembro del personal. El manual lo marca como recomendado, pero sin él la operación falla directamente: en la práctica es obligatorio.
id, staff_idtextoopcionalAlias de staff (por si tu integración ya usa ese nombre de campo).

Qué devuelve

Ejemplo real, recortado (nombre sustituido por uno ficticio):

{
  "success": true,
  "_id": "602a2edd48bcd3005f403474",
  "resolved": { "id": "602a2edd48bcd3005f403474", "reason": "match exacto 'Laura Gómez'" },
  "item": {
    "_id": "602a2edd48bcd3005f403474",
    "name": "Laura Gómez",
    "type": "Staff",
    "activities_staff_available": [],
    "categories": [],
    "extras": [],
    "gallery": [],
    "createdAt": "2021-02-15T08:20:45.902Z"
  },
  "warnings": []
}
CampoSignificado
_idIdentificador de la persona resuelta.
resolvedQué persona se eligió a partir del nombre que diste y por qué. Revísalo si el nombre es ambiguo.
itemFicha completa: nombre interno, idiomas, categorías y extras asociados, actividades donde está disponible (activities_staff_available) y galería de fotos.
warningsAvisos que no impiden la respuesta pero conviene revisar.

Errores propios

SituaciónRespuesta
Falta staff200 con success: false, error: "staff_intent_required".
Nombre que no coincide con nadie200 con success: false, error: "staff_unresolved" y staff_candidates con las personas reales del equipo.

create-staff: da de alta un instructor o monitor

Crea un nuevo miembro del personal con un mínimo de datos; el resto se completa después con update-staff. Es una operación de escritura: en esta documentación siempre se ejecuta en modo prueba (dry_run).

Cómo llamarla

curl -X POST https://api.bukyapp.com/v1/ops/create-staff \
  -H "Authorization: Bearer bk_TU_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name": "Laura Gómez", "staff_email": "laura@example.com", "langs": ["es", "en"], "dry_run": true}'

Por MCP: «Da de alta a Laura Gómez como monitora, con email laura@example.com e idiomas español e inglés». El asistente te enseña la prueba en seco antes de crear de verdad.

Parámetros

ParámetroTipoNivelQué hace
nametextoobligatorioNombre interno de la persona. Es el que ves en el listado de personal del panel.
staff_emailtextoopcionalEmail para notificaciones.
langslistaopcionalIdiomas que habla, por código (["es", "en"]).
categories, extraslistarecomendadoCategorías o extras a vincular, por nombre o identificador. Se comprueban contra tu catálogo; si un nombre no coincide con nada, la operación no inventa y te devuelve las opciones reales.
thumbtextoopcionalFoto de perfil: identificador de una imagen ya subida (el que te da create-upload, o el que te devuelve tu asistente al adjuntar un fichero) o una URL pública. Se sube y se asocia a la ficha al terminar de crearla, no en el mismo paso. Ver Operaciones de imágenes.
galleryarrayopcionalGalería de la ficha: lista de imágenes, cada una identificador de una imagen ya subida o URL pública. Se sube y se asocia a la ficha al terminar de crearla, no en el mismo paso. Ver Operaciones de imágenes.

Qué devuelve

Prueba en seco real, con una foto de perfil por URL:

{
  "success": true,
  "dry_run": true,
  "resolved_categories": [],
  "resolved_extras": [],
  "payload_preview": {
    "name": "Laura Gómez",
    "description": {},
    "type": "Staff",
    "staff_email": "laura@example.com",
    "langs": ["es", "en"]
  },
  "images_pending": ["https://example.com/laura.jpg"],
  "images_missing": []
}
CampoSignificado
payload_previewLo que se guardaría si no fuera una prueba en seco. No incluye thumb ni gallery: esas se procesan aparte.
resolved_categories, resolved_extrasLas categorías y extras que pasaste, ya resueltos a los reales de tu catálogo.
images_pendingLas imágenes de thumb y gallery que quedan a la espera de subirse y asociarse una vez creada la ficha.
images_missingImágenes que pasaste y no se van a poder usar (identificador que no existe, por ejemplo).

Errores propios

SituaciónRespuesta
Falta name400 con error: "invalid_params" y el campo que falta en details.

Consejos

  • Con solo name basta para crear el registro; añade staff_email y langs cuando los tengas.

update-staff: edita nombre, email o idiomas

Cambia solo los campos que le pasas; el resto de la ficha queda igual. Es una operación de escritura: en esta documentación siempre se ejecuta en modo prueba.

Cómo llamarla

curl -X POST https://api.bukyapp.com/v1/ops/update-staff \
  -H "Authorization: Bearer bk_TU_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"staff": "Laura Gómez", "staff_email": "laura@example.com", "langs": ["es", "en", "de"], "dry_run": true}'

Por MCP: «Añade alemán a los idiomas de Laura Gómez».

Parámetros

ParámetroTipoNivelQué hace
stafftextoobligatorioNombre o identificador de la persona a editar.
nametextorecomendadoNuevo nombre interno.
staff_emailtextoopcionalNuevo email de notificaciones.
langslistaopcionalIdiomas que habla. Sustituye el conjunto completo: no se suma a los que ya tenía.

Tienes que aportar al menos uno de name, staff_email o langs: si no cambias nada, la operación falla.

Qué devuelve

{
  "success": true,
  "_id": "602a2edd48bcd3005f403474",
  "changes": { "langs": ["es", "en", "de"] },
  "note": "PUT parcial: solo estos campos cambian; customer/_id/__v nunca se envían."
}
CampoSignificado
changesLos campos que realmente van a cambiar.

Errores propios

SituaciónRespuesta
Ningún campo a cambiar200 con success: false, error: "no_changes".

delete-staff: da de baja a un miembro del personal

La persona deja de verse en el panel y se retira automáticamente de las actividades donde estaba asignada. No puedes deshacerlo desde la API ni desde el asistente, pero el soporte de Buky puede recuperarla si lo necesitas. Es una operación de escritura: en esta documentación siempre se ejecuta en modo prueba.

Cómo llamarla

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

Por MCP: «Da de baja a Laura Gómez del equipo» (el asistente te pedirá confirmación antes de marcar confirm: true).

Parámetros

ParámetroTipoNivelQué hace
stafftextoobligatorioNombre o identificador de la persona a dar de baja.
confirmbooleanorecomendadoDebe ser true para dar la baja de verdad; sin él, la operación solo muestra qué pasaría.

Qué devuelve

Prueba en seco real, con confirm: true:

{
  "success": true,
  "dry_run": true,
  "would_delete": { "_id": "602a2edd48bcd3005f403474", "name": "Laura Gómez" },
  "soft_deleted": false,
  "reversible": true,
  "warnings": []
}
CampoSignificado
would_deleteLa persona que se daría de baja.
reversibletrue: el soporte de Buky puede recuperarla si lo pides.

Errores propios

SituaciónRespuesta
El nombre no coincide con nadie del equipo200 con success: false, error: "staff_unresolved" y staff_candidates con las personas reales del equipo.

Consejos

  • Al dar de baja a alguien, Buky la quita automáticamente de las actividades donde estaba asignada.

¿Te ha resultado útil este artículo?