Operaciones de la cuenta
Consulta los datos de tu centro y edita su configuración por API v1 o MCP.
La «cuenta» es el propio centro en Buky: su ficha pública (nombre, contacto, idiomas, textos legales, logo) y su configuración de contenido (idiomas activos, textos de los emails automáticos, check-in online, colores del tema). Estas dos operaciones leen y editan esa ficha; nunca tocan pago, facturación, plan de suscripción ni datos fiscales. Más contexto en Configuración inicial de tu empresa.
Operaciones de esta página: get-customer, update-customer (solo lectura: get-customer; escritura: update-customer)
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 dos operaciones, customer_id se toma de tu token: solo hace falta pasarlo con tokens multicuenta.
get-customer: consulta la ficha pública del centro
Devuelve el nombre, el contacto, los idiomas, los textos legales (condiciones, política de cancelación), el enlace al motor de reservas y el logo del centro. Es una operación de solo lectura: vale con cualquier token.
Cómo llamarla
curl "https://api.bukyapp.com/v1/ops/get-customer" \
-H "Authorization: Bearer bk_TU_TOKEN"curl -X POST https://api.bukyapp.com/v1/ops/get-customer \
-H "Authorization: Bearer bk_TU_TOKEN" \
-H "Content-Type: application/json" \
-d '{"lang": "en"}'Por MCP: «Enséñame la ficha pública del centro» o «¿En qué idiomas está activo el motor de reservas?».
Parámetros
| Parámetro | Tipo | Nivel | Qué hace |
|---|---|---|---|
lang | texto | opcional | Si lo pasas, description, conditions y cancellation_policy devuelven solo esa lengua como texto, en vez del objeto con todas. Si esa lengua no tiene contenido, cae a español o a la primera disponible. |
Qué devuelve
Ejemplo real, recortado (nombre y email sustituidos por ficticios):
{
"success": true,
"operation": "get-customer",
"customer_id": "5a55fff67e9fe0036a541d15",
"source": "login",
"customer": {
"name": "Surf Center Demo",
"website": null,
"timezone": "Europe/Madrid",
"langs": ["es", "en", "de"],
"contact": {
"email": "hola@example.com",
"tel": null,
"street": null,
"city": null,
"zip": null,
"state": null,
"country": "es"
},
"description": {},
"conditions": {},
"cancellation_policy": {},
"booker_url": "https://app.bukyapp.com/front/5a55fff67e9fe0036a541d15",
"front_domain": "flycustomtest.rockode.io",
"front_domain_active": false,
"thumb_url": "https://app.bukyapp.com/uploads/logo-example.png",
"icon_url": null
},
"warnings": []
}| Campo | Significado |
|---|---|
source | login con tu token normal; public si el token es de cliente final (enduser), y entonces vienen menos campos (ver missing_in_public). |
customer.contact | Datos públicos de contacto: email, teléfono y dirección que ve el cliente. |
customer.description / conditions / cancellation_policy | Objeto {idioma: texto} con la presentación, las condiciones de reserva y la política de cancelación. Vacío si no se han escrito. |
customer.booker_url | Enlace al motor de reservas del centro. |
customer.front_domain / front_domain_active | Dominio propio del motor de reservas, si lo tiene activado. |
customer.thumb_url / icon_url | Logo del centro. |
Errores propios
| Situación | Respuesta |
|---|---|
customer_id que no coincide con el de tu token | 200 con success: false, error: "execution_threw" y el detalle en details. Solo pásalo con tokens multicuenta y el id correcto. |
Consejos
- Usa
langcuando solo necesites un idioma: te ahorras filtrar el objeto completo.
update-customer: edita el contenido y la configuración del centro
Cambia solo los campos que le pasas dentro de fields; el resto de la ficha queda igual. Es una operación fail-closed: solo acepta los campos de una lista permitida de contenido y configuración; cualquier campo de pago, facturación, fiscal o dominio se rechaza aunque se lo pidas. 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/update-customer \
-H "Authorization: Bearer bk_TU_TOKEN" \
-H "Content-Type: application/json" \
-d '{"fields": {"conditions": {"es": "<p>Nuevas condiciones de reserva.</p>"}}, "dry_run": true}'Por MCP: «Cambia el color principal del tema a #0a7» o «Actualiza las condiciones de reserva en español». El asistente te enseña la prueba en seco antes de confirmar el cambio real.
Parámetros
| Parámetro | Tipo | Nivel | Qué hace |
|---|---|---|---|
fields | objeto | obligatorio | Campo a campo lo que quieres cambiar. Solo se aceptan las claves de la lista de abajo; cualquier otra se rechaza. |
Campos que admite fields:
- Identidad y contacto:
name,email_contact,tel,tel_contact,website,timezone,haveDifferentContactAddress,street_address_contact,city_contact,zip_contact,state_contact,country_contact. - Contenido legal:
description,conditions,cancellationPolicy— objetos{idioma: texto}; solo envías los idiomas que cambias, los demás se conservan. - Idiomas:
langs(lista de códigos activos, sustituye el conjunto completo),default_booking_lang. Ver Configurar idiomas y traducciones. - Emails automáticos:
emails_text_accommodation,emails_text_activity,emails_text_pack,emails_text_rental,emails_active_orderEnd,emails_subject_orderEnd,emails_text_orderEnd. - Check-in online:
checkin_online,checkin_prefill,checkin_prefill_valid_days,checkin_until_start_hours. Ver Configurar y gestionar el check-in online. - Tema visual:
theme_templatey, dentro detheme,colors(lista de tres colores en hexadecimal, en este orden: principal, secundario y destacado) yhide_catalog_prices.themese combina con el valor actual: puedes enviar solocolorso solohide_catalog_prices. - Otros:
calendarExportMode.
Qué devuelve
Prueba en seco real, cambiando las condiciones en español y el color principal del tema:
{
"success": true,
"dry_run": true,
"applied": ["conditions", "theme"],
"diff": {
"conditions": {
"type": "i18n",
"langs_set": ["es"],
"langs_preserved": ["de", "en", "fr", "it", "pt", "ca"]
},
"theme": {
"old": { "colors": ["#00ADCA", "#003657", "#FF9B09"], "hide_catalog_prices": false },
"new": { "colors": ["#0a7", "#003657", "#FF9B09"], "hide_catalog_prices": false }
}
},
"warnings": [
"conditions: se preservan los idiomas no tocados (de, en, fr, it, pt, ca); solo cambian es."
]
}| Campo | Significado |
|---|---|
applied | Los campos que realmente se van a cambiar. |
diff | Antes y después de cada campo. En textos por idioma (conditions, description, cancellationPolicy) muestra qué lenguas cambian y cuáles se conservan, en vez del texto completo. |
warnings | Avisos como el idioma que se preserva sin tocar; no impiden el cambio. |
Errores propios
| Situación | Respuesta |
|---|---|
Falta fields | 400 con error: "invalid_params" y el campo que falta en details. |
| Campo que no está en la lista permitida | 200 con success: false, error: "field_not_allowed", el campo en unknown y la lista completa en allowed_fields. |
| Campo sensible (pago, facturación, fiscal, dominio…) | 200 con success: false, error: "sensitive_field_blocked" y el motivo en blocked. Por ejemplo, taxes → «impuestos (usa la op dedicada)»; frontDomain → «infra/dominio». |
Consejos
- Corre siempre la prueba en seco primero (o dile a tu asistente «prueba en seco») y revisa el
diffantes de confirmar el cambio real. - Para textos por idioma, envía solo el idioma que cambias: los demás se conservan tal cual.
- Si necesitas tocar pago, pasarelas, facturación, datos fiscales o el dominio propio, hazlo desde el panel de Buky: esta operación los rechaza siempre.
