Centro de ayuda›Desarrolladores›Operaciones de la cuenta

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ámetroTipoNivelQué hace
langtextoopcionalSi 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": []
}
CampoSignificado
sourcelogin con tu token normal; public si el token es de cliente final (enduser), y entonces vienen menos campos (ver missing_in_public).
customer.contactDatos públicos de contacto: email, teléfono y dirección que ve el cliente.
customer.description / conditions / cancellation_policyObjeto {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_urlEnlace al motor de reservas del centro.
customer.front_domain / front_domain_activeDominio propio del motor de reservas, si lo tiene activado.
customer.thumb_url / icon_urlLogo del centro.

Errores propios

SituaciónRespuesta
customer_id que no coincide con el de tu token200 con success: false, error: "execution_threw" y el detalle en details. Solo pásalo con tokens multicuenta y el id correcto.

Consejos

  • Usa lang cuando 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ámetroTipoNivelQué hace
fieldsobjetoobligatorioCampo 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_template y, dentro de theme, colors (lista de tres colores en hexadecimal, en este orden: principal, secundario y destacado) y hide_catalog_prices. theme se combina con el valor actual: puedes enviar solo colors o solo hide_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."
  ]
}
CampoSignificado
appliedLos campos que realmente se van a cambiar.
diffAntes 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.
warningsAvisos como el idioma que se preserva sin tocar; no impiden el cambio.

Errores propios

SituaciónRespuesta
Falta fields400 con error: "invalid_params" y el campo que falta en details.
Campo que no está en la lista permitida200 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 diff antes 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.

¿Te ha resultado útil este artículo?