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:
Estado | Descripción |
---|---|
res_preconfirmation | Si el centro tiene preconfirmación de cita. Las citas llegan con este estado en vez de res |
res | Cita en estado inicial. Aceptada. Sin hacer |
confirmed | El cliente ha dicho explicitamente que va a la cita |
waiting | Está en espera. Se le quitan los recursos asignados ya que no está ocupando ninguna agenda en ese momento |
progress | En progreso. La cita se está realizando |
finished | Cita finalizada pero sin cobrar. (Puede ser un estado final, pero normalmente es intermedio) |
res_client_rejected | El cliente ha hecho una cancelación temprana |
res_late_cancel | El cliente ha hecho una cancelación tardía |
res_missing | Es un no show. El cliente no se ha presentado |
charged | Se ha cobrado la cita |
res_rejected | En caso de res_preconfirmation, el centro puede rechazar la cita. En otro caso, el centro ha cancelado la cita/clase |
deleted | La 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".