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ámetro | Tipo | Nivel | Qué hace |
|---|---|---|---|
q | texto | opcional | Busca por nombre, sin tildes. Es el mismo filtro que el buscador del panel. |
disabled | booleano | opcional | true: solo desactivados. false: solo activos. Si lo omites, salen todos. |
created_from, created_to | fecha | opcional | Rango sobre la fecha de alta, como el filtro de fecha del panel. |
detail | texto | opcional | compact (por defecto): solo lo necesario para identificar. descriptive: añade la cara pública (título, descripción) y el email. |
lang | texto | opcional | Solo con detail: "descriptive". Idioma de los textos (por ejemplo es); si falta, se usa español o el primer idioma disponible. |
full | booleano | opcional | true trae el documento completo del servidor (pesado). Tiene prioridad sobre detail. |
limit | número | opcional | Má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": []
}| Campo | Significado |
|---|---|
items | Una 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 / total | count 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ámetro | Tipo | Nivel | Qué hace |
|---|---|---|---|
staff | texto | obligatorio | Nombre 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_id | texto | opcional | Alias 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": []
}| Campo | Significado |
|---|---|
_id | Identificador de la persona resuelta. |
resolved | Qué persona se eligió a partir del nombre que diste y por qué. Revísalo si el nombre es ambiguo. |
item | Ficha completa: nombre interno, idiomas, categorías y extras asociados, actividades donde está disponible (activities_staff_available) y galería de fotos. |
warnings | Avisos que no impiden la respuesta pero conviene revisar. |
Errores propios
| Situación | Respuesta |
|---|---|
Falta staff | 200 con success: false, error: "staff_intent_required". |
| Nombre que no coincide con nadie | 200 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ámetro | Tipo | Nivel | Qué hace |
|---|---|---|---|
name | texto | obligatorio | Nombre interno de la persona. Es el que ves en el listado de personal del panel. |
staff_email | texto | opcional | Email para notificaciones. |
langs | lista | opcional | Idiomas que habla, por código (["es", "en"]). |
categories, extras | lista | recomendado | Categorí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. |
thumb | texto | opcional | Foto 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. |
gallery | array | opcional | Galerí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": []
}| Campo | Significado |
|---|---|
payload_preview | Lo que se guardaría si no fuera una prueba en seco. No incluye thumb ni gallery: esas se procesan aparte. |
resolved_categories, resolved_extras | Las categorías y extras que pasaste, ya resueltos a los reales de tu catálogo. |
images_pending | Las imágenes de thumb y gallery que quedan a la espera de subirse y asociarse una vez creada la ficha. |
images_missing | Imágenes que pasaste y no se van a poder usar (identificador que no existe, por ejemplo). |
Errores propios
| Situación | Respuesta |
|---|---|
Falta name | 400 con error: "invalid_params" y el campo que falta en details. |
Consejos
- Con solo
namebasta para crear el registro; añadestaff_emailylangscuando 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ámetro | Tipo | Nivel | Qué hace |
|---|---|---|---|
staff | texto | obligatorio | Nombre o identificador de la persona a editar. |
name | texto | recomendado | Nuevo nombre interno. |
staff_email | texto | opcional | Nuevo email de notificaciones. |
langs | lista | opcional | Idiomas 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."
}| Campo | Significado |
|---|---|
changes | Los campos que realmente van a cambiar. |
Errores propios
| Situación | Respuesta |
|---|---|
| Ningún campo a cambiar | 200 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ámetro | Tipo | Nivel | Qué hace |
|---|---|---|---|
staff | texto | obligatorio | Nombre o identificador de la persona a dar de baja. |
confirm | booleano | recomendado | Debe 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": []
}| Campo | Significado |
|---|---|
would_delete | La persona que se daría de baja. |
reversible | true: el soporte de Buky puede recuperarla si lo pides. |
Errores propios
| Situación | Respuesta |
|---|---|
| El nombre no coincide con nadie del equipo | 200 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.
