Centro de ayuda›Desarrolladores›Operaciones de agencias y partners

Operaciones de agencias y partners

Consulta, crea, edita y borra agencias y partners con comisión por API v1 o MCP.

Una agencia (o partner) en Buky es un colaborador externo —agencia de viajes, OTA, turoperador— que reserva en nombre de sus clientes y cobra o paga una comisión por ello. Buky calcula esa comisión automáticamente, lleva la trazabilidad de qué reservas vienen de cada agencia y genera la factura correspondiente. Consulta Configurar una agencia (OTA, turoperador) para verlo desde el panel.

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

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 seis operaciones, customer_id es opcional: se toma de tu token salvo que uses uno multicuenta.

list-partners: enumera las agencias del centro

Devuelve la lista de agencias colaboradoras del centro, sin tener que saber sus nombres de antemano. Es una operación de solo lectura: vale con cualquier token.

Cómo llamarla

curl "https://api.bukyapp.com/v1/ops/list-partners" \
  -H "Authorization: Bearer bk_TU_TOKEN"

Por MCP: «¿Qué agencias tengo dadas de alta?» o «Enséñame las agencias desactivadas».

Parámetros

ParámetroTipoNivelQué hace
qtextoopcionalBusca por texto en el nombre (sin tildes), igual que el buscador del panel.
disabledbooleanoopcionaltrue: solo agencias desactivadas. false: solo activas. Por defecto, todas.
created_from / created_tofechaopcionalRango sobre la fecha de alta de la agencia.
detailtextoopcionalcompact (por defecto): identificador, nombre y comisión. descriptive: añade email, modo de cobro y de facturación, afiliación y catálogo restringido, con los textos en claro.
langtextoopcionalSolo con detail: "descriptive": idioma de los textos (por ejemplo, es).
fullbooleanoopcionalDocumentos completos del servidor. Pesado; solo si necesitas todos los campos. Gana a detail.
limitnúmeroopcionalMáximo de resultados, aplicado después de los filtros.

Qué devuelve

Ejemplo real, con la única agencia dada de alta en la cuenta demo:

{
  "success": true,
  "operation": "list-partners",
  "detail": "compact",
  "count": 1,
  "total": 1,
  "items": [
    { "_id": "6979efe8cecd6cb2336188a5", "name": "GetYourGuide · auto", "commission": 25, "channel": "getyourguide", "is_disabled": false }
  ],
  "warnings": []
}
CampoSignificado
count / totalAgencias devueltas y agencias que cumplen el filtro, antes del recorte de limit. Si count es menor que total, sube el limit.
itemsUna fila por agencia, con la forma que marca detail. Las agencias dadas de baja nunca aparecen.
items[].channelSolo si la agencia se creó sola desde una integración; vacío en las creadas a mano desde el panel.

Consejos

  • No hace falta forzar un error de get-partner con un nombre inventado solo para ver qué agencias existen: para eso está list-partners.
  • Con detail: "descriptive" ves de un vistazo el modo de cobro y de facturación de cada agencia, sin consultarlas una a una con get-partner.

get-partner: consulta el doc completo de una agencia

Devuelve el documento fresco de una agencia, resuelta por nombre o identificador. Es una operación de solo lectura: vale con cualquier token.

Cómo llamarla

curl "https://api.bukyapp.com/v1/ops/get-partner?partner=GetYourGuide" \
  -H "Authorization: Bearer bk_TU_TOKEN"

Por MCP: «¿Qué comisión tiene la agencia GetYourGuide?» o, para forzarla, «Ejecuta get-partner para GetYourGuide».

Parámetros

ParámetroTipoNivelQué hace
partnertextoobligatorioNombre exacto o identificador de la agencia. El manual lo marca como recomendado, pero sin él la operación falla (partner_intent_required): en la práctica es obligatorio. Acepta también los alias id y partner_id.

Qué devuelve

Ejemplo real, para la agencia que la cuenta demo tiene dada de alta desde un canal externo:

{
  "success": true,
  "operation": "get-partner",
  "_id": "6979efe8cecd6cb2336188a5",
  "resolved": {
    "id": "6979efe8cecd6cb2336188a5",
    "reason": "match por nombre 'GetYourGuide · auto'"
  },
  "item": {
    "_id": "6979efe8cecd6cb2336188a5",
    "name": "GetYourGuide · auto",
    "payment_mode": "full_to_agent",
    "invoice_mode": "supplier",
    "commission": 25,
    "recalculate_commission": true,
    "noTax": false,
    "isDisabled": false,
    "channel": "getyourguide",
    "affiliate_link_active": false,
    "commissionByProduct": [],
    "hidePriceDetails": true
  },
  "warnings": []
}
CampoSignificado
resolvedQué agencia se eligió a partir del nombre o identificador que diste, y por qué. Revísalo si el nombre podía ser ambiguo.
itemEl documento completo: nombre, comisión global, modo de cobro y de facturación, si está desactivada y si tiene enlace de afiliado activo.
item.channelSolo si la agencia se creó sola desde una integración (aquí, GetYourGuide); vacío en las agencias creadas a mano desde el panel.
item.commissionByProductComisiones que sustituyen a la global para productos concretos. Vacío si no tiene ninguna.
warningsAvisos que no impiden la respuesta pero conviene revisar.

Errores propios

SituaciónRespuesta
Falta partner (y su alias id)200 con success: false y error: "partner_intent_required".
Nombre que no coincide con ninguna agencia200 con success: false, error: "partner_unresolved" y partner_candidates con las agencias reales de la cuenta.

Consejos

  • Guarda el _id que te devuelve para usarlo directamente en update-partner o delete-partner, sin repetir la búsqueda por nombre.
  • Es la forma de comprobar cómo quedó una agencia después de crearla o editarla. Para enumerar todas de golpe, usa list-partners.

create-partner: da de alta una agencia colaboradora

Crea una agencia nueva con su comisión, su modo de cobro y de facturación. Es una operación de escritura.

Cómo llamarla

curl -X POST https://api.bukyapp.com/v1/ops/create-partner \
  -H "Authorization: Bearer bk_TU_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name": "Agencia Marea Azul", "commission": 15, "payment_mode": "full_to_agent"}'

Por MCP: «Crea la agencia Agencia Marea Azul con una comisión del 15 %, cobrando ella al cliente.»

Parámetros

ParámetroTipoNivelQué hace
nametextoobligatorioNombre de la agencia, tal cual aparece en el listado del panel.
commissionnúmerorecomendadoComisión global en porcentaje (15 = 15 %). Si lo omites, se crea con comisión 0.
payment_modetextorecomendadoQuién cobra al cliente: full_to_agent (la agencia, por defecto), full_to_supplier (tú) o commission (se reparte).
invoice_modetextorecomendadoQuién factura la reserva: supplier (tú, por defecto) o partner (la agencia).
business_nametextoopcional — obligatorio si `invoice_mode` es `partner`Razón social de la agencia. Sin ella, la creación falla con business_name_required.
hide_price_detailsbooleanoopcionalOculta a la agencia el desglose de precio. Por defecto true.
commission_by_productlistaopcionalComisiones distintas a la global para productos concretos: [{ "product": "<nombre o id>", "amount_eur": <importe> }]. Cada producto se busca en tu catálogo real.
restrict_catalogbooleanoopcionalLimita lo que ve un cliente que entra por el enlace o QR de esta agencia a las categorías y productos permitidos.
allowed_categorieslistaopcionalCategorías que ve la agencia cuando restrict_catalog está activo (incluyen todos sus productos, presentes y futuros).
allowed_productslistaopcionalProductos sueltos que ve la agencia, sin arrastrar toda su categoría.
send_confirmation_emailbooleanoopcionalEnvía el email de confirmación al cliente en las reservas de esta agencia. Por defecto false; el afiliado puede desmarcarlo reserva a reserva.

Qué devuelve

Prueba en seco con el ejemplo mínimo:

{
  "success": true,
  "operation": "create-partner",
  "applied_defaults": { "commission": 15, "hidePriceDetails": true },
  "resolved_payment_mode": { "mode": "full_to_agent", "reason": "match exacto 'full_to_agent'" },
  "resolved_invoice_mode": { "mode": "supplier", "requiresBusiness": false, "reason": "default (supplier — factura el proveedor)" },
  "resolved_products": [],
  "resolved_catalog": { "categories": [], "products": [] },
  "payload_preview": {
    "name": "Agencia Marea Azul",
    "commission": 15,
    "payment_mode": "full_to_agent",
    "hidePriceDetails": true
  },
  "warnings": []
}
CampoSignificado
applied_defaultsValores que se han rellenado solos porque no los diste.
resolved_payment_mode / resolved_invoice_modeEl modo de cobro y de facturación que se aplicaría, con el motivo.
resolved_productsSolo si usaste commission_by_product: cada producto resuelto, con su identificador y el importe en céntimos.
resolved_catalogSolo si usaste restrict_catalog, allowed_categories o allowed_products: las categorías y productos resueltos. Vacío si no los usaste.
payload_previewLo que se enviaría a Buky si no fuera una prueba en seco; es lo mismo que luego verás con get-partner.
warningsAvisos que no bloquean la creación.

Errores propios

SituaciónRespuesta
invoice_mode: "partner" sin business_name200 con success: false y error: "business_name_required".
Producto de commission_by_product que no existe o es ambiguo200 con success: false, error: "product_unresolved" y product_candidates con los productos reales de tu catálogo.

Consejos

  • commission es un porcentaje (15 = 15 %), no céntimos; amount_eur dentro de commission_by_product va en euros y Buky lo guarda en céntimos.
  • Si no indicas payment_mode ni invoice_mode, la agencia queda igual que si la crearas desde el panel sin tocar esos campos: cobra ella y facturas tú.

update-partner: edita los datos de una agencia existente

Cambia solo los campos que le pases; el resto de la agencia queda igual. Es una operación de escritura.

Cómo llamarla

curl -X POST https://api.bukyapp.com/v1/ops/update-partner \
  -H "Authorization: Bearer bk_TU_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"partner": "GetYourGuide", "commission": 20}'

Por MCP: «Sube la comisión de la agencia GetYourGuide al 20 %.»

Parámetros

ParámetroTipoNivelQué hace
partnertextoobligatorioNombre o identificador de la agencia a editar.
nametextorecomendadoNuevo nombre.
commissionnúmerorecomendadoNueva comisión global, en porcentaje.
payment_modetextoopcionalNuevo modo de cobro (full_to_agent, full_to_supplier, commission).
invoice_modetextoopcionalNuevo modo de facturación (supplier, partner). A diferencia de la creación, cambiarlo a partner sin business_name no bloquea: puedes completar la razón social en otra edición.
business_nametextoopcionalNueva razón social.
hide_price_detailsbooleanoopcionalOculta o muestra el desglose de precio a la agencia.
send_confirmation_emailbooleanoopcionalSi se envía el email de confirmación al cliente en las reservas de esta agencia por defecto.
recalculate_commissionbooleanoopcionalRecalcula la comisión de las reservas ya existentes al guardar.
commission_by_productlistaopcionalSustituye todas las comisiones por producto por las que envíes: [{ "product": "<nombre o id>", "commission": <%> }].
vat, vat_type, street_address, city, zip, state, country, no_taxtexto / booleanoopcionalDatos fiscales de la agencia. Cualquiera de ellos cambia invoice_mode a partner, aunque no lo pidas.
emailtextoopcionalEmail de contacto de la agencia.
affiliate_link_active, affiliate_ref_active, affiliate_ref_label, affiliate_ref_requiredbooleano / textoopcionalActivan el enlace de afiliado de la agencia y si pide (u obliga) un código de referencia en la reserva.
restrict_catalog, allowed_categories, allowed_productsbooleano / listaopcionalCatálogo restringido de la agencia. Sustituyen el conjunto anterior por completo.

Qué devuelve

Prueba en seco cambiando solo la comisión:

{
  "success": true,
  "operation": "update-partner",
  "_id": "6979efe8cecd6cb2336188a5",
  "changes": { "commission": 20 },
  "note": "PUT parcial: solo estos campos cambian; customer/_id nunca se envían.",
  "warnings": []
}
CampoSignificado
_idIdentificador de la agencia editada.
changesSolo los campos que de verdad van a cambiar; los que no mandaste quedan igual.
warningsAvisos que no bloquean el guardado.

Errores propios

SituaciónRespuesta
Nombre que no coincide con ninguna agencia200 con success: false, error: "partner_unresolved" y partner_candidates con las agencias reales de la cuenta.

Consejos

  • Es una edición parcial: si quieres saber qué hay antes de sobrescribirlo (por ejemplo, la razón social actual), consúltalo primero con get-partner.
  • commission_by_product sustituye el conjunto entero: si la agencia ya tenía comisiones por producto y quieres conservar alguna, inclúyela también en la llamada.

delete-partner: da de baja una agencia

La agencia deja de verse en el panel y deja de estar disponible para nuevas reservas. 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.

Cómo llamarla

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

Por MCP: «Borra la agencia GetYourGuide» (el asistente te pedirá confirmar antes de ejecutar el borrado real).

Parámetros

ParámetroTipoNivelQué hace
partnertextoobligatorioNombre o identificador de la agencia a borrar.
confirmbooleanorecomendadoDebe ser true para borrar de verdad; sin él, la llamada real también se queda en una vista previa de lo que borraría.

Qué devuelve

Prueba en seco sobre la agencia real de la cuenta demo:

{
  "success": true,
  "operation": "delete-partner",
  "would_delete": { "_id": "6979efe8cecd6cb2336188a5", "name": "GetYourGuide · auto" },
  "soft_deleted": false,
  "reversible": true,
  "warnings": []
}
CampoSignificado
would_deleteQué agencia se borraría.
soft_deletedSi el borrado ya se aplicó. En una prueba en seco siempre false; en una ejecución real pasaría a true.
reversibletrue: el soporte de Buky puede recuperarla si lo pides.

Errores propios

SituaciónRespuesta
Nombre que no coincide con ninguna agencia200 con success: false, error: "partner_unresolved" y partner_candidates con las agencias reales de la cuenta.

Consejos

  • Las reservas ya hechas con esta agencia no se tocan; el borrado solo afecta a que puedas seguir asignándole reservas nuevas.
  • Si te equivocas, el soporte de Buky puede recuperarla.

¿Te ha resultado útil este artículo?