Buk · AsyncAPI Specification

Buk Webhooks

Version

View Spec View on GitHub Human ResourcesPayrollHR TechTime and AttendanceBenefitsRecruitingPerformance ManagementEmployee RecordsLatin AmericaChileSaaSWebhooksAsyncAPIWebhooksEvents

AsyncAPI Specification

Raw ↑
generated: '2026-08-08'
method: searched
source: https://demo.buk.cl/apidocs (Webhooks tab, served from every Buk tenant)
x-evidence:
  fetched: '2026-08-08'
  url: https://demo.buk.cl/apidocs
  http_status: 200
asyncapi_published: false
notes: >-
  Buk publishes no AsyncAPI document. It does publish a complete, human-readable webhook
  catalog inside the Webhooks tab of the same /apidocs page that serves the Swagger UI —
  event names, payload fields, allowed values and worked examples. That catalog is captured
  verbatim in structure below. Buk webhooks are NOTIFICATION-ONLY by design: the payload
  carries the record id, an ISO 8601 timestamp, the event_type and the tenant_url, and the
  integrator must call the Data Access API to read the changed record. There is no
  documented signature, secret, replay protection, retry policy or delivery guarantee, and
  no subscription API — endpoints are configured by a tenant administrator in the Buk UI
  under Configuración > Acceso API > Urls Webhooks.
delivery:
  transport: HTTP POST
  content_type: application/json
  envelope: '{"data": { ... }}'
  configuration:
    ui_path: Configuración > Acceso API > Urls Webhooks
    role_required: administrador or superadministrador
    fields:
    - name: Webhook Url
      covers: [Empleados, Áreas, Vacaciones, Licencias/Ausencias/Permisos]
      constraint: Must be a public https:// URL
    - name: Webhook Documentos Url
      covers: [Documentos]
      constraint: Must be a public https:// URL
  security:
    signature: not documented
    shared_secret: not documented
    replay_protection: not documented
  reliability:
    retries: not documented
    ordering: not documented
    at_least_once: not documented
common_fields:
- name: date
  type: string
  format: ISO 8601
  description: Timestamp at which the change was recorded.
- name: event_type
  type: string
  description: The event that triggered the notification.
- name: tenant_url
  type: string
  description: Address of the customer instance that emitted the event.
resources:
- resource: employee
  id_field: employee_id
  extra_fields:
  - name: employment_status
    values: [activo, pendiente, terminado]
  - name: metadata.relevant_for_bukas
    description: Whether the change is relevant to Buk Asistencia (boolean).
  - name: metadata.plan_id
    description: Id of the modified pension/insurance plan — employee_plan_update only.
  - name: metadata.responsibility_id
    description: Id of the modified family group — employee_responsibility_update only.
  events:
  - name: employee_create
    description: A new employee record was created.
  - name: employee_update
    description: Information on the employee record was modified.
  - name: employee_plan_update
    description: The employee's pension/social-security (previsional) information was modified.
  - name: employee_responsibility_update
    description: The employee's family group (grupo familiar) was modified.
  - name: job_hire
    description: A new job was created from the employee record.
  - name: job_termination
    description: A termination (finiquito), triggered individually or in bulk.
  - name: job_movement
    description: >-
      Any change to the employee's job — undo, cancel, renew, bulk modification, or reversal
      of a termination. Fires on any save of the job form even when nothing changed, so it
      behaves as a touch on the employee.
- resource: area
  id_field: area_id
  events:
  - name: area_create
    description: A new area or sub-area was created.
  - name: area_update
    description: Any modification to an area or sub-area.
- resource: vacation
  id_field: vacation_id
  extra_fields:
  - name: metadata.vacation_status
    description: 'Vacation status in English, e.g. approved, submitted, rejected.'
  events:
  - name: vacation_create
    description: A new vacation was created.
  - name: vacation_update
    description: Any modification to the vacation.
  - name: vacation_destroy
    description: The vacation was deleted.
- resource: licence
  id_field: licence_id
  events:
  - {name: licence_create, description: A new medical leave was created.}
  - {name: licence_update, description: The medical leave was modified.}
  - {name: licence_destroy, description: The medical leave was deleted.}
- resource: absence
  id_field: absence_id
  events:
  - {name: absence_create, description: A new absence was created.}
  - {name: absence_update, description: The absence was modified.}
  - {name: absence_destroy, description: The absence was deleted.}
- resource: permission
  id_field: permission_id
  events:
  - {name: permission_create, description: A new permission was created.}
  - {name: permission_update, description: The permission was modified.}
  - {name: permission_destroy, description: The permission was deleted.}
- resource: document
  id_field: document_id
  events:
  - name: document_create
    description: A new document requiring signature was created.
counts:
  resources: 7
  event_types: 18
  note: >-
    The provider documents licence/absence/permission as one templated family — "{tipo}" where
    tipo may be licence, absence or permission — giving three named events each. Counted
    expanded here; counted as 5 resource families and 15 distinct documented event names when
    the templated family is collapsed.
reconciliation:
  pattern: notification-then-read
  detail: >-
    On receipt, call the Data Access API for the changed record — GET /employees/{id},
    GET /areas/{id}, GET /vacations/{id} and so on — because the webhook body never carries
    the record itself.
  skill: skills/buk-consume-buk-webhooks.md