Tillor
OntwikkelaarsVoorbeelden

Webhook-voorbeelden

Event payloads en webhook POST-voorbeelden

Dezelfde events als bij SSE. De payload-structuur is identiek.

Wrapper-structuur

{
  "event": "entity:action",
  "data": {},
  "timestamp": 1735689600000,
  "traceId": "4bf92f3577b34da6a3ce929d0e0e4736",
  "spanId": "00f067aa0ba902b7"
}

traceId hoort bij de Tillor-actie die het event veroorzaakte (bijv. API-call of achtergrondtaak), niet bij een latere webhook-retry.

Webhook POST-voorbeeld

Een volledige webhook POST-request ziet er zo uit:

POST /webhooks/tillor HTTP/1.1
Host: your-server.com
Content-Type: application/json

{
  "event": "invoice:paid",
  "data": {
    "invoice": {
      "id": "inv_def456uvw",
      "displayId": "2025-00123",
      "status": "BOOKED",
      "paymentStatus": "PAID",
      "amountTotal": 200.0,
      "paidDate": "2025-03-09T12:15:00.000Z",
      "customerId": "cust_abc123xyz"
    },
    "payment": {
      "id": "pay_ghi789rst",
      "amount": 200.0,
      "status": "PAID",
      "method": "BANCONTACT",
      "channel": "ONLINE",
      "provider": "MOLLIE",
      "paidAt": "2025-03-09T12:15:00.000Z"
    }
  },
  "timestamp": 1735811700000,
  "traceId": "4bf92f3577b34da6a3ce929d0e0e4736",
  "spanId": "00f067aa0ba902b7"
}

Event payloads

customer:created

{
  "event": "customer:created",
  "data": {
    "id": "cust_abc123xyz",
    "displayId": 1042,
    "firstName": "Jan",
    "lastName": "Jansen",
    "email": "jan.jansen@voorbeeld.nl",
    "phone": "+31612345678",
    "address": "Hoofdstraat 42",
    "city": "Amsterdam",
    "zipCode": "1012 AB",
    "country": "NL",
    "customerType": "STANDARD",
    "status": "DEFAULT",
    "createdAt": "2025-03-09T10:30:00.000Z",
    "updatedAt": "2025-03-09T10:30:00.000Z"
  },
  "timestamp": 1735806600000
}

invoice:paid

{
  "event": "invoice:paid",
  "data": {
    "invoice": {
      "id": "inv_def456uvw",
      "displayId": "2025-00123",
      "status": "BOOKED",
      "paymentStatus": "PAID",
      "amountTotal": 200.0,
      "paidDate": "2025-03-09T12:15:00.000Z",
      "customerId": "cust_abc123xyz"
    },
    "payment": {
      "id": "pay_ghi789rst",
      "amount": 200.0,
      "status": "PAID",
      "method": "BANCONTACT",
      "channel": "ONLINE",
      "provider": "MOLLIE",
      "paidAt": "2025-03-09T12:15:00.000Z"
    }
  },
  "timestamp": 1735811700000
}

controller:adoption:requested

{
  "event": "controller:adoption:requested",
  "data": {
    "adoptionId": "adopt_jkl012mno",
    "efuseId": "a1b2c3d4e5f6",
    "requestedFromIp": "192.168.1.42",
    "isNew": true
  },
  "timestamp": 1735809000000
}

nfc-tag:presented

{
  "event": "nfc-tag:presented",
  "data": {
    "id": "nfc_123abc456",
    "uid": "04A1B2C3D4E5F6",
    "type": "CARD",
    "balance": 25.5,
    "blockedAt": null,
    "customerId": "cust_abc123xyz"
  },
  "timestamp": 1735807500000
}

Enums

EntityEnumWaarden
CustomercustomerTypeSTANDARD, WORKER_RENTAL_CARAVAN, WORKER_TOWING_CARAVAN
InvoicestatusDRAFT, BOOKED
InvoicepaymentStatusUNPAID, PARTIALLY_PAID, PENDING, PAID
PaymentstatusPENDING, AUTHORIZED, PAID, CANCELED, FAILED, EXPIRED, REFUNDED, PARTIALLY_REFUNDED, CHARGED_BACK
PaymentmethodUNKNOWN, BANCONTACT, IDEAL, CREDITCARD, CASH, … (volledige lijst in OpenAPI)
PaymentchannelMANUAL, BANK_TRANSFER, TERMINAL, ONLINE, MANDATE
PaymentproviderMOLLIE, MANUAL, PONTO
ControllertypeACCESS, SHOWER, CHARGE_POINT
NfcTagtypeCARD, BRACELET, STICKER, KEY_FOB

On this page