Descripción general

¿Qué son los Webhooks?

Los Webhooks son un método de comunicación entre aplicaciones. Se utilizan para que clientes de un servicio web puedan recibir notificaciones en sus propias aplicaciones cuando un evento de interés ocurra. Esto permite que exista una sincronización entre aplicaciones de forma muy sencilla mediante solicitudes POST a través de HTTPs.

¿Qué necesito para usar Webhooks?

  1. Una cuenta de Alegra:

    • Esta cuenta será la que quedará asociada a las suscripciones que crees, por lo que estarás recibiendo notificaciones relacionadas a ella.
  2. Una URL propia:

    • Deberás contar con una URL propia. Esta URL debe estar preparada para recibir solicitudes POST mediante HTTPs.
    • Al momento de crear una suscripción, webhooks enviará una solicitud POST con body vacío a la URL que especifiques. Es necesario que se responda a esta solicitud con código 2XX en menos de 5 segundos, de lo contrario no se creará la suscripción.
    • Cada vez que se intente enviar una notificación (mediante una solicitud POST con el contenido del mensaje en el cuerpo) a su URL, esta debe retornar un código 2XX en un plazo máximo de 5 segundos. Si esto no ocurre en 10 intentos consecutivos, su suscripción se eliminará automáticamente.

Formato de Solicitud a Esperar en sus Servidores

New-Client

NombreTipoDescripciónEjemplo
idIntegerIdentificador único que representa un contacto específico. La aplicación lo asigna automáticamente.774
nameObjectObjeto que contiene el nombre del contacto. Puede tener las llaves "firstName", "secondName", "lastName", "secondLastName" ó puede contener solamente "fullname"."name": {
"firstName": "Primer Nombre",
"secondName": "Segundo Nombre",
"lastName": "Primer Apellido",
"secondLastName": "Segundo Apellido"
}
phonePrimaryStringNúmero telefónico principal del contacto.+432432234
phoneSecondaryStringNúmero telefónico secundario del contacto.+534234523
mobileStringNúmero de celular/móvil.+443242323123
emailStringCorreo electrónico del contacto.[email protected]
typeArrayIndica si el contacto es cliente, proveedor, los dos o ninguno. Las opciones posibles son 'client' y 'provider'.["client", "provider"]
faxStringFax del contacto.unFax
identificationStringNúmero de identificación del contacto. Ejemplos: cédula, RFC, RNC, número de pasaporte.3211233
addressObjectObjeto que contiene la dirección del contacto."address": {
"zipCode": "050013",
"department": "Antioquia",
"country": "Colombia",
"address": "Una Dirección",
"city": "Abriaquí"
}
{
  "subject": "new-client",
  "message": {
    "client": {
      "id": "774",
      "name": {
        "firstName": "Primer Nombre",
        "secondName": "Segundo Nombre",
        "lastName": "Primer Apellido",
        "secondLastName": "Segundo Apellido"
      },
      "phonePrimary": "+432432234",
      "phoneSecondary": "+534234523",
      "mobile": "+443242323123",
      "email": "[email protected]",
      "type": [
        "client",
        "provider"
      ],
      "fax": "unFax",
      "identification": "3211233",
      "address": {
        "zipCode": "050013",
        "department": "Antioquia",
        "country": "Colombia",
        "address": "Una Dirección",
        "city": "Abriaquí"
      }
    }
  }
}

New-Item

NombreTipoDescripciónEjemplo
idStringIdentificador único que representa un ítem específico. La aplicación lo asigna automáticamente.865
nameStringNombre del ítem.Un Ítem / S
descriptionStringDescripción del ítem.Descripción del Item
referenceStringReferencia del ítem.423424134213
itemCategoryObjectObjeto que describe la categoría del Ítem."itemCategory": {
"id": "19"
},
priceArrayContiene objetos que representan los precios del Ítem."price": [
{
"id": "123",
"price": 1
},
{
"id": "124",
"price": 3
}
],
inventoryObjectDescribe el inventario relacionado al Ítem"inventory": {
"unit": "unit",
"availableQuantity": 1,
"unitCost": 1,
"initialQuantity": 1,
"warehouses": [
{
"id": "10"
}
]
},
categoryObjectObjeto que describe la categoría del ítem."category": {
"id": "234"
},
category.idStringIdentificador de la categoría del ítem.234
taxArrayArray de impuestos aplicables al ítem.[]
statusStringEstado del ítem.active
customFields.idStringIdentificador de los campos personalizados asociados al ítem.6, 5, 1
typeStringTipo del ítem.variant
{
  "subject": "new-item",
  "message": {
    "item": {
      "id": "865",
      "name": "Un Ítem / S",
      "description": "Descripción del Item",
      "reference": "423424134213",
      "itemCategory": {
        "id": "19"
      },
      "price": [
        {
          "id": "123",
          "price": 1
        },
        {
          "id": "124",
          "price": 2
        }
      ],
      "inventory": {
        "unit": "unit",
        "availableQuantity": 1,
        "unitCost": 1,
        "initialQuantity": 1,
        "warehouses": [
          {
            "id": "10"
          }
        ]
      },
      "category": {
        "id": "234"
      },
      "tax": [],
      "status": "active",
      "customFields": [
        {
          "id": "6"
        },
        {
          "id": "5"
        },
        {
          "id": "1"
        }
      ],
      "type": "variant",
      "variantAttributes": null,
      "itemVariants": null,
      "subitems": null
    }
  }
}


New-Invoice


NombreTipoDescripciónEjemplo
idStringIdentificador único de la factura.123
dateStringFecha de la factura.2024-06-18
dueDateStringFecha de vencimiento de la factura.2024-06-18
observationsStringObservaciones de la factura. No visibles en el documento impreso o PDF.Estas son las observaciones de mi factura.
anotationStringNotas de la factura, visibles en el documento impreso o PDF.Favor consignar a la cuenta XXXXX.
statusStringEstado de la factura.open
client.idStringIdentificador del cliente asociado.123
numberTemplate.idStringIdentificador de la plantilla de numeración de la factura.123
seller.idStringIdentificador del vendedor asociado.123
totalNumberTotal de la factura.1190
totalPaidNumberTotal pagado de la factura.0
balanceNumberBalance restante de la factura.1190
decimalPrecisionStringPrecisión decimal para la factura.0
estimate.idStringIdentificador de la estimación asociada.123
costCenter.idStringIdentificador del centro de costos asociado.123
items.nameStringNombre del ítem.cédula digital / Option 2
items.descriptionStringDescripción del ítem.Descripción del Item
items.referenceStringReferencia del ítem.123321
items.priceNumberPrecio del ítem.1000
items.quantityNumberCantidad del ítem.1
items.taxArrayArray de impuestos aplicables al ítem.json "tax": [ { "id": "123" } ]
items.remission.idStringIdentificador de la remisión asociada al ítem.123
{
  "subject": "new-invoice",
  "message": {
    "invoice": {
      "id": "123",
      "date": "2024-06-18",
      "dueDate": "2024-06-18",
      "observations": "Notas de facturas de capacitación",
      "anotation": "Notas de facturas de capacitación",
      "status": "open",
      "client": {
        "id": "123"
      },
      "numberTemplate": {
        "id": "123"
      },
      "seller": {
        "id": "123"
      },
      "total": 1190,
      "totalPaid": 0,
      "balance": 1190,
      "decimalPrecision": "0",
      "estimate": {
        "id": "123"
      },
      "costCenter": {
        "id": "123"
      },
      "items": [
        {
          "name": "cédula digital / Option 2",
          "description": "Descripción del Item",
          "reference": "123321",
          "price": 1000,
          "quantity": 1,
          "tax": [
            {
              "id": "123"
            }
          ],
          "remission": {
            "id": "123"
          }
        }
      ]
    }
  }
}