Webhooks

Introducción:

WebHooks es un servicio que ofrecemos para que al realizar ciertas acciones dentro del ecosistema de Bewe, se envíe información sobre esas acciones a un servicio de nuestros clientes. Para ello nuestros clientes deben facilitar al equipo de operaciones una información específica para poder habilitar los WebHooks.

WebHooks disponibles

  • newClient: se activa cuando un nuevo cliente se da de alta. En este caso se envía la siguiente información:

    • from: procedencia del webhook, "api" o "SaaS" (String)
    • eventName: nombre del webhook (String)
    • _id: Id del cliente (String)
    • extraAttributes: valores extra en la ficha del cliente (Array)
    • name: Nombre del cliente (String)
    • lastname: Apellido del cliente (String)
    • email: Correo del cliente (String)
    • dni: Numero de identificacion del cliente (String)
    • phone: Telefono del cliente (String)
    • phone2: Segundo telefono del cliente (String)
    • address: Dirección del cliente (String)
    • postcode: Codigo postal del cliente (String)
    • gender: Genero del cliente (String)
    • old: Edad del cliente (String)
    • docType: Tipo de documento cliente (String)
    • groups: Grupos del cliente (Array)
    • town: Municipio del cliente (String)
    • extraData : Datos especificos del centro (Json)
  • newWork: se activa cuando crea una clase en la agenda y cuando un cliente reserva una cita individual o una plaza en una clase colectiva. En este caso se envía la siguiente información:

    • from: procedencia del webhook, "api" o "SaaS" (String)
    • eventName: nombre del webhook (String)
    • _id: Id de la cita (String)
    • state: Estado de la cita (String). A continuación podrá ver los valores posibles para este atributo:
EstadoDescripción
res_preconfirmationSi el centro tiene preconfirmación de cita. Las citas llegan con este estado en vez de res
resCita en estado inicial. Aceptada. Sin hacer
confirmedEl cliente ha dicho explicitamente que va a la cita
waitingEstá en espera. Se le quitan los recursos asignados ya que no está ocupando ninguna agenda en ese momento
progressEn progreso. La cita se está realizando
finishedCita finalizada pero sin cobrar. (Puede ser un estado final, pero normalmente es intermedio)
res_client_rejectedEl cliente ha hecho una cancelación temprana
res_late_cancelEl cliente ha hecho una cancelación tardía
res_missingEs un no show. El cliente no se ha presentado
chargedSe ha cobrado la cita
res_rejectedEn caso de res_preconfirmation, el centro puede rechazar la cita. En otro caso, el centro ha cancelado la cita/clase
deletedLa cita ha sido eliminada
  • day: Dia de agendamiento (String)
  • iniHour: Hora de inicio de la cita (String)
  • fiHour: Hora final de la cita (String)
  • idClient: Id del cliente que asistira a la cita (String)
  • resources: Recursos y servicios necesarios para la cita que pueden ser recursos fisicos extra o empleados (Array de objetos). A continuación podrás ver la estructura de datos de este atributo:
{
  ...,
  resources: [
    {
      idResource, // Id(s) de recurso(s) (Array o String)
      idTreatment, // id del servicio, tratamiento o clase (String)
      to, // Fecha inicial de la cita (String)
      from, // Fecha Final de la cita  (String)
    },
    ...
  ]
}
  • idTreatment: Ids de los servicios de la cita ...son los mismos que aparecen en resources (Array- Strings )

  • idEmployee:: Id Empleado que crea la cita (String)

  • dataClient: Datos del cliente : fullname,phone, email (JSON)

  • extraData : Datos específicos del centro (JSON)

  • dataResourses: Datos de los empleados y servicios de la cita(array de objetos)

  • _IdBHAccount: Id del centro(String)

  • idResourses: Id de los recursos de los empleados(Array de Strings)

  • categoryTreatment: Nombre de los servicios(Array de Strings)

  • idCommerce: Id de centro hijo(solo aplica para multi sedes, String)

  • newTicket:: se activa cuando el cliente realiza un pago (se crea un ticket en nuestro sistema). En este caso se envía la siguiente información:

    • from: procedencia del webhook, "api" o "SaaS" (String)
    • eventName: nombre del webhook (String)
    • _id: Id del ticket (String)
    • type: Tipo de Cobro (receipt: recibo; bill: factura; order: //TODO ) (String)
    • globalDiscount: Valor del descuento Global (Number)
    • typeDiscount: Tipo de descuento Global (String)
    • amount: Importe total = sumatorio de amount de cada item (Number)
    • taxes: Iva total es el sumatorio de la operacion =total item* iva item/100 ,por cada item(Number)
    • total: Total del cobro global =amount +taxes (Number)
    • payMix: Aplica cuando la forma de pago es mixta ,es decir aplicar mas de una como tarjeta debito y efectivo (Array)
    • idClientSubscription: id de la subscripcion del cliente si aplica (String)
    • idEmployee: Id de empleado que genera el cobro (String)
    • idClient: id del cliente al que se le genera el cobro (String)
    • wayToPay: Forma de Pago (creditcard,_mix,cash) (String)
    • idCash:id de la caja (String)
    • date: Fecha de creacion del cobro (ISODate)
    • datemod: Fecha de ultima modificación (ISODate)
    • _idBHAccount: Id del centro (String)
    • dataClient: Datos del cliente : fullname,phone, email (Json)
    • extraData : Datos específicos del centro (Json)
    • dataItems: Detalle de los items (idproduct,idtreatment,etc..) (Array)
    • Items: items aplicados al cobro (Array). A continuación podrás ver la estructura de datos de este atributo:
{
  ...,
  items: [
    {
      typeDiscount, // Tipo de descuento para el item (String)
      type, // Tipo de item cobrado (String)
        /*
        * Posibles valores de atributo "type":
        * work: Cita
        * product: Producto
        * treat: Servicio o tratamiento ,
        * pack: Bono
        * special: especial
        * debt: Debe
        * prepaid: Adelante
        * giftcard: Tarjeta de regalo
        * subscription: Subscripcion
        * eventclass: Evento
        * course: Curso
        */
      name, // nombre del tipo de item cobrado (String)
      pack, // Datos del bono si aplica (Array)
      discount, // Datos del descuento si aplica (Array)
      quantity, // Cantidad del item (Number)
      amount, // Importe del item (Number)
      tax, // Iva del Item (Number),
      total, // Total del Item = quantity *amount (Number)
      annotation, // Nombre clave para buscar las tarjetas de regalo (String)
      idTreatment, // Id del servicio o tratamiento si aplica (String)
      idProduct, // Id del producto si aplica (String)
      idDiscount, // Id del descuento si aplica (String)
      idClientSubscription, // id de la susbscripcion del cliente si aplica (String)
      idSubscription, // id de la susbscripcion relacionada en con el id de clientSubscriprion ,si aplica (String)
    },
    ...
  ]
}
  • updateWork:: se activa cuando se edita la fecha, hora o estado de una cita. En este caso se envía la siguiente información:

    • from: procedencia del webhook, "api" o "SaaS" (String)
    • oldWork: datos de la cita antes de ser editada (Object)
    • newWork: datos de la cita después de ser editada (Object)
    • updatedData: Datos de la cita editados (Object)
    • dataClient: Datos del cliente : fullname,phone, email (Json)
    • extraData : Datos específicos del centro (Json)
  • deleteWork:: se activa cuando se elimina una cita. En este caso se envía la siguiente información:

    • from: procedencia del webhook, "api" o "SaaS" (String)
    • day: día de la cita (Date)
    • iniHour: hora de inicio de la cita (String)
    • fiHour: hora de fin de la cita (String)
    • idClient: id del cliente (String)
    • idTreatment: Array de ids de servicios/tratamientos de la cita (Array de Strings)
    • idWork: id de la cita (String)
    • clientFullname: Nombre y apellidos del cliente (String)
    • treatmentName: Array de nombres de los servicios del a cita (Array de Strings)
    • dataClient: Datos del cliente : fullname,phone, email (Json)
    • extraData : Datos específicos del centro (Json)
  • updateSocialMediaCenter: Se activa cuando se editan los campos de redes sociales y términos y condiciones desde el Sass:

    • idBHAccount: Id centro
    • from: Via desde donde se ejecuta
    • oldSocialMediaCenter: Datos antes de ser editados (objeto)
    • newSocialMediaCenter: DAtos después de ser editados (objeto)
    • updatedData: Datos editados (objeto)
    • eventName: Nombre del webhook
    • extraData : Datos específicos del centro (Json)
  • updateSchedulesCenter: Se activa cuando se editan los horarios del centro desde el Sass

    • idBHAccount: Id centro
    • from: Via desde donde se ejecuta
    • oldSchedules: Datos del horario del centro antes de ser editados (Array de objetos)
    • NewSchedules: Datos del horario del centro después de ser editados (Array de objetos)
    • updatedData: Datos del horario del centro modificados (Array de objetos)
    • eventName: Nombre del webhook
    • extraData : Datos específicos del centro (Json)
  • updateCenter: Se activa cuando se modifica la información del centro desde la API

    • idBHAccount: Id centro
    • from: Via desde donde se ejecuta
    • updatedData: Datos modificados del centro (objeto)
    • eventName: Nombre del webhook
    • extraData : Datos específicos del centro (Json)
  • createAccount: Se activa cuando se crea una cuenta

    • idBHAccount: Id centro
    • from: Via desde donde se ejecuta
    • token: Token de la cuenta creada para ser uso de la API
    • type: new | old, indica si la cuenta es nueva o se esta reinstalando
    • name: Nombre de la centro creado
    • idSessionEmployee: Id employee que realiza la creación
    • eventName: Nombre del webhook
  • activateAccount: Se activa cuando se hace la activación de una cuneta que se encontraba desactivada

    • idBHAccount: Id centro
    • from: Via desde donde se ejecuta
    • idSessionEmployee: Id employee que realiza la creación
    • eventName: Nombre del webhook
  • deactivateAccount: Se activa cuando se hace la desactivación de una cuneta que se encontraba activa

    • idBHAccount: Id centro
    • from: Via desde donde se ejecuta
    • idSessionEmployee: Id employee que realiza la creación
    • eventName: Nombre del webhook
  • changePlan: Se activa cuando se le cambia el plan a una cuenta

    • idBHAccount: Id centro
    • from: Via desde donde se ejecuta
    • idSessionEmployee: Id employee que realiza la creación
    • oldPlan: Id plan. antiguo
    • newPlan: Id nuevo plan
    • eventName: Nombre del webhook

Datos requeridos para habilitar un WebHook

Para habilitar un nuevo WebHook nuestros clientes deben ponerse en contacto con nuestro equipo de operaciones, y facilitarle la siguiente información:

  • URL de redireccionamiento: URL o endpoint donde se enviarán los datos.
  • Token de acceso: Token de acceso a la API del cliente (solo si esta es necesaria).
  • Formato de datos de la petición: Formato de los datos enviados. Disponemos de los siguientes tipos:
    • raw-json: formato JSON.
    • form-data: formato estándar de los datos de formularios. IMPORTANTE: cuando se selecciona este formato, los valores de tipo Array se transforman en String
  • Tipo de contenido: Valor del header "Content-Type". Por ejemplo: si envíamos la información en formato JSON, esta propiedad suele ser el valor "application/json".