Eseményszerződések
A modulok üzleti eseményei (rendelés fizetve, készlet alacsony, szerviz-munka átvehető, …) séma-első, verziózott szerződésekből születnek. Minden eseménytípusnak JSON Schema-leírása van; a modul kódja ebből generált típusokat használ, ezért az esemény nem térhet el a sémától.
Ezekre az eseményekre épül a Vecton automatizáció (flow-k), és egyes
webhookok data mezője is ezt a szerződést követi.
Név és verzió
<modul>.<entitás>.<ige> v<N>
Például webshop.order.status_changed v1, warehouse.stock.low v1,
repair.case.ready_for_pickup v1.
Kompatibilitási szabályok:
- Egy kiadott verzió sémája nem változik visszafelé nem kompatibilis módon:
mező törlése, típusváltás vagy új kötelező mező csak új verzióban (
v2) jelenhet meg. - Ugyanabban a verzióban legfeljebb új, nem kötelező mező jelenhet meg. A feldolgozód tehát hagyja figyelmen kívül az ismeretlen mezőket.
- A régi és az új verzió átmenetileg együtt is élhet.
A katalógus lekérdezése
GET https://acme.app.vecton.hu/api/automation/catalog/events
Authorization: Bearer <token>
A válasz eseménytípusonként a típust, a verziót, a modult, a címet és a
leírást, az alany típusát és azonosító-mezőjét (subject, például
{ "type": "order", "id_field": "order_id" }), valamint a mezők listáját adja
(név, típus, kötelező-e, felsorolt értékek, formátum) és a teljes JSON Schemát
(schema). A ?service=webshop paraméter egy modulra szűr. Jog:
tenant.<szervezet>.automation.catalog.view.
Példa: webshop.order.status_changed v1
| Mező | Típus | Kötelező | Megjegyzés |
|---|---|---|---|
order_id | string (uuid) | igen | |
order_number | string | igen | |
webshop_id | string (uuid) | igen | |
new_status | string | igen | NEW, ROUTED, PICKING, PACKING, SHIPPED, DELIVERED, CANCELLED, COMPLETED |
old_status | string | null | nem | null, ha nem ismert |
fulfillment_status | string | null | nem | |
tracking_number, tracking_url | string | null | nem | |
delivered_at | string (date-time) | null | nem | |
reason | string | null | nem | a lemondás oka, csak CANCELLED-nél |
created_by | string | null | nem |
Modulonként
| Modul | Eseménytípusok (mind v1) |
|---|---|
| webshop | order.created, order.paid, order.status_changed, quote.sent, quote.accepted, quote.rejected, product.price_changed, gift_card.issued, gift_card.redeemed, discount_approval.decided, rma.status_changed, store_sale.completed, store_day.closed, register_shift.closed, store_cart.sent_to_register, store_cart.expired |
| warehouse | stock.changed, stock.low, receiving.scanned, pick_run.started, pick_run.progress, pick_run.completed, picking.short, picking.scan_rejected, packing.shortage_reported, shipping.shipped, shipping.delivered, shipping.returned, shipping.return_received, shipping.day_closed, transfer.requested, transfer.picked, transfer.dispatched, transfer.received, count_check.submitted, count_check.resolved, attendance.stamped |
| crm | task.created |
message.received | |
| repair | case.created, case.status_changed, case.ready_for_pickup, case.handed_over, case.overdue, internal_case.status_changed, quote.sent, quote.approved, quote.rejected |
| rental | booking.created, booking.cancelled, rental.issued, rental.returned, rental.due_today, rental.overdue, contract.purchased, contract.expiring, contract.invoice_issued, contract.charge_failed, damage.reported, damage.settled, deposit.rehold_failed, asset.maintenance_due |
A teljes név a modul előtagjával értendő (pl. rental.booking.created). A
pontos, naprakész lista mindig a katalógus-végpont válasza; egy modul eseménye
csak akkor keletkezik, ha a modul a szervezetnél be van kapcsolva.
Kapcsolat a webhookokkal
A webhook-eseménytípusok egy része (jelenleg a webshop order.status_changed,
quote.sent, quote.accepted és quote.rejected eseménye) egy szerződésre
hivatkozik; ezeknél a webhook data mezője a szerződés szerinti payload. A
többi webhook-esemény mezőit a GET /api/webhook/events payload_schema-ja
írja le. Lásd: Webhookok.