Webhook pranešimai ir apdorojimo rezultatai

Webhook pranešimai ir apdorojimo rezultatai

Webhook leidžia BSS automatiškai perduoti informaciją kitai sistemai, kai BSS objekte įvyksta tam tikras įvykis – pavyzdžiui, sukuriamas, pakeičiamas ar ištrinamas dokumentas, darbuotojas, darbo sutartis ar sąskaita. Tokiu būdu jūsų sistemai nereikia nuolat tikrinti BSS API ir ieškoti pasikeitimų – apie juos BSS praneša automatiškai.

Svarbiausia prieš pradedant: Webhook įjungimą ir konfigūraciją atlieka BSS konsultantai. Kreipiantis reikia pateikti Webhook gavimo adresą (URL) ir nurodyti, apie kurių sričių pasikeitimus norite gauti pranešimus: Document, Employee, StaffContract, Invoice.

Jei Webhook gavimo adresas reikalauja autorizacijos, papildomai pateikite visą statinę Authorization antraštės reikšmę, kurią BSS turi perduoti su kiekvienu Webhook pranešimu. Gali būti naudojama gavėjo sistemai tinkama autorizacijos schema, pavyzdžiui, Bearer ar API key. Svarbu: BSS perduoda tą pačią sukonfigūruotą Authorization reikšmę su kiekviena užklausa. Dinamiškai gaunami ar periodiškai atnaujinami tokenai nepalaikomi.

Kaip veikia Webhook?

Kai BSS įvyksta sukonfigūruotą sritį atitinkantis įvykis, BSS į nurodytą adresą išsiunčia HTTP POST užklausą. Užklausos request body pateikiama informacija apie įvykį.

Vienoje užklausoje gali būti perduodama iki 100 įvykių. Jei perduotinų įvykių yra daugiau, jie siunčiami keliomis užklausomis.

Praktiškai: BSS įvyksta pasikeitimas → BSS išsiunčia Webhook → jūsų sistema priima pranešimą → pagal gautą informaciją nusprendžia, ką daryti toliau.

Pavyzdžiui, gavusi informaciją, kad darbo sutartis buvo pakeista, jūsų sistema gali pagal Webhook pateiktą identifikatorių iškviesti atitinkamą BSS API GET metodą ir pasiimti naujausius sutarties duomenis.

Kokius objektus galima stebėti?

entityType Objektas
document Dokumentas
employee Darbuotojas
invoice Sąskaita
staffContract Darbo sutartis

Konkrečios sritys, apie kurių pasikeitimus norite gauti Webhook pranešimus, nustatomos BSS ERP programos nustatymų grupėje WebHook application, nustatyme Sritys (Document, Employee, StaffContract, Invoice). Galima nurodyti vieną arba kelias sritis. Jei nurodomos kelios sritys, jų reikšmės atskiriamos kableliais.

Kokius įvykius galima gauti?

Laukas eventType parodo, kas įvyko su objektu arba kaip baigėsi jo apdorojimas.

eventType Ką reiškia?
created Sukurtas naujas objektas.
modified Esamas objektas pakeistas.
markedForDeletion Objektas pažymėtas ištrynimui (soft delete), tačiau dar nėra galutinai pašalintas.
deleted Objektas galutinai ištrintas.
warning Apdorojimo metu įvyko nekritinė problema, tačiau tolimesnis apdorojimas galėjo tęstis.
failed Objekto apdorojimas nepavyko.

Kokią informaciją gausite Webhook pranešime?

Vienas Webhook įvykis gali atrodyti taip:

{
  "entityNr": 12345,
  "entityType": "document",
  "eventType": "modified",
  "eventDate": "2025-10-01T23:12:01.987",
  "recordVersion": 1234567890,
  "metadata": {
    "documentNumber": "DOC-00012345"
  }
}
Laukas Ką reiškia?
entityNr Pasikeitusio BSS objekto identifikatorius. Jo reikšmė priklauso nuo entityType.
entityType Nurodo, kokio tipo objektui įvyko pasikeitimas.
eventType Nurodo, kas su objektu įvyko arba kaip baigėsi jo apdorojimas.
eventDate Įvykio data ir laikas.
recordVersion BSS įrašo versija.
metadata Papildoma informacija, padedanti identifikuoti objektą.
outcomes Apdorojimo rezultatų informacija. Aktualiausia gavus warning arba failed.

Kaip suprasti entityNr?

entityNr reikšmė priklauso nuo entityType. Pagal šį identifikatorių galima kreiptis į atitinkamą BSS API metodą ir pasiimti detalesnę objekto informaciją.

entityType entityNr reikšmė
document documentNr
employee employeeNr
invoice invoiceNr
staffContract contractNr

Kam naudojamas metadata?

metadata pateikia papildomas objekto identifikavimo reikšmes. Jos priklauso nuo entityType ir kai kuriais atvejais nuo eventType.

entityType Galima metadata informacija
document documentNumber
employee staffCode
invoice invoiceNumber, serialNumber; warning ir failed atvejais taip pat gali būti pateikiami correlationId ir filename.
staffContract contractNo, employeeNr, timeboardNo

correlationId galima naudoti Webhook pranešimui susieti su pradine API užklausa. Kai Webhook grąžina pradinėje užklausoje perduotą X-Correlation-ID reikšmę, pagal ją galima nustatyti, su kuria konkrečia užklausa susijęs gautas rezultatas.

Svarbu: deleted įvykiams metadata nepateikiama. Jei apdorojimas nepavyko dar nesukūrus objekto, entityNr ir recordVersion gali būti null. Tokiu atveju objektą identifikuokite pagal metadata pateiktas reikšmes.

Ką daryti gavus warning?

eventType = warning reiškia, kad apdorojimo metu įvyko nekritinė problema, tačiau ji nesustabdė tolimesnio proceso. Todėl vien gavus warning nereikėtų laikyti visos operacijos nepavykusia.

Informaciją apie perspėjimą rasite outcomes masyve. Laukas code nurodo rezultatą, o outcome pateikia detalesnį jo paaiškinimą.

{
  "entityType": "invoice",
  "eventType": "warning",
  "eventDate": "2026-04-21T14:39:38.06",
  "metadata": {
    "correlationId": "FIZNET-00000876",
    "filename": "INV_20260421_143850_FIZNET-00000876.xml",
    "invoiceNumber": "AKV-invoiceTestv35",
    "serialNumber": "AKV"
  },
  "outcomes": [
    {
      "code": "INV6000",
      "outcome": "Failed to resolve budget amount owner: Type [TaxRateType] Code [244111]"
    }
  ]
}

Praktiškai: warning reiškia, kad operacija galėjo tęstis, tačiau jos metu nustatyta problema. Perskaitykite code ir outcome, kad suprastumėte, kokia situacija užfiksuota.

Ką daryti gavus failed?

eventType = failed reiškia, kad atitinkamo objekto apdorojimas nepavyko. Klaidos priežastį pirmiausia tikrinkite outcomes masyve.

[
  {
    "entityType": "invoice",
    "eventType": "failed",
    "eventDate": "2026-04-13T01:05:36.297",
    "metadata": {
      "correlationId": "9999999995555555555",
      "filename": "INV_20260413_010321_9999999995555555555.xml",
      "invoiceNumber": "AKV-invoiceTestv22",
      "serialNumber": "AKV"
    },
    "outcomes": [
      {
        "code": "INV0001",
        "outcome": "Invoice item product code is missing: Row Nr [1]"
      }
    ]
  }
]

Gavę failed, pagal code nustatykite klaidos tipą, o lauke outcome ieškokite detalesnės priežasties. Sąskaitų atveju metadata pateikiamos reikšmės, tokios kaip correlationId, filename, invoiceNumber ar serialNumber, padeda nustatyti, su kuria sąskaita ar pradine užklausa susijusi klaida.

Jei objektas dėl klaidos apskritai nebuvo sukurtas, entityNr ir recordVersion gali būti null. Tokiu atveju objekto identifikavimui naudokite metadata informaciją.

Trumpai: warning – operacija galėjo tęstis, tačiau yra perspėjimas. failed – operacija nepavyko ir reikia vertinti pateiktą klaidos priežastį.

Sąskaitų Webhook klaidų ir perspėjimų kodai

Sąskaitų warning ir failed Webhook pranešimuose outcomes pateikiamas rezultato kodas. Lentelėje nurodyta, su kuriuo eventType šiuo metu grąžinamas kiekvienas kodas.

Kodas eventType Ką reiškia? Ką tikrinti?
INV0001 failed Nenurodytas produkto kodas. Patikrinkite sąskaitos eilutės produkto kodą.
INV0002 failed Produktas nerastas arba jo tipas netinkamas. Patikrinkite produkto kodą, jo egzistavimą BSS ir produkto tipą.
INV0003 failed Nenurodytas pirkėjo kodas. Patikrinkite pirkėjo duomenis.
INV0004 failed Nenurodytas mokėtojo kodas. Patikrinkite mokėtojo duomenis.
INV0005 failed Sandėlis nerastas. Patikrinkite perduotą sandėlio kodą.
INV0006 failed Sandėlis nenurodytas. Patikrinkite sąskaitos sandėlio informaciją ir BSS konfigūraciją.
INV0007 failed Prekė sandėlyje nerasta. Patikrinkite produktą ir jo informaciją nurodytame sandėlyje.
INV0008 failed Mokėjimo kanalas nerastas. Patikrinkite perduotą mokėjimo kanalo kodą.
INV0009 failed Nepakanka prekės likučio. Patikrinkite sandėlyje turimą ir sąskaitoje prašomą kiekį.
INV1000 failed Nepavyko patvirtinti sąskaitos. Detalesnę priežastį tikrinkite outcome.
INV1001 failed Nepavyko patvirtinti mokėjimo. Detalesnę priežastį tikrinkite outcome.
INV1002 failed Nepavyko ištrinti sąskaitos. Detalesnę priežastį tikrinkite outcome.
INV1003 failed Nepavyko sukurti trūkstamų produktų ar paslaugų. Detalesnę priežastį tikrinkite outcome.
INV1004 failed Nepavyko sukurti partnerio. Detalesnę priežastį tikrinkite outcome.
INV1005 failed Nepavyko sukurti DVS priedo. Detalesnę priežastį tikrinkite outcome.
INV1006 failed Nepavyko išsaugoti pradinio XML DVS. Detalesnę priežastį tikrinkite outcome.
INV4000 failed Sąskaitos validavimo klaida. Konkrečią validavimo priežastį tikrinkite outcome.
INV4001 failed Sąskaitos konvertavimo klaida. Konkrečią priežastį tikrinkite outcome.
INV6000 warning Nepavyko nustatyti detalizacijos tipo. Perskaitykite outcome ir patikrinkite nurodytą detalizacijos tipą bei kodą.
INV9999 failed Nenumatyta klaida. Detalesnę klaidos informaciją tikrinkite outcome.

INV6000 yra perspėjimo kodas. Kiti lentelėje pateikti kodai žymi klaidas. Kodai INV1000–INV1006, INV4000–INV4001 ir INV9999 gali būti grąžinami kartu su detalesne klaidos priežastimi lauke outcome.

Ką jūsų sistema turi atsakyti BSS?

Priėmusi Webhook pranešimą jūsų sistema turi grąžinti:

202 Accepted

Taip BSS patvirtinama, kad Webhook pranešimas buvo sėkmingai priimtas. Jei grąžinamas nesėkmingas HTTP statusas, BSS bandys pranešimą siųsti pakartotinai, kol jis bus sėkmingai patvirtintas.

Svarbu: warning arba failed nereiškia, kad į pačią Webhook užklausą reikia atsakyti klaida. Šios reikšmės aprašo BSS vykdytos operacijos rezultatą. Jei jūsų sistema Webhook pranešimą sėkmingai gavo, ji turi grąžinti 202 Accepted.

Kas nutinka, jei Webhook pranešimo nepavyksta pristatyti?

Jei BSS negauna sėkmingo pranešimo gavimo patvirtinimo, Webhook pranešimas siunčiamas pakartotinai. Jei gavėjo servisas laikinai nepasiekiamas, jam vėl pradėjus veikti siunčiami likę nuo paskutinio sėkmingai patvirtinto perdavimo pranešimai.

Kodėl po vieno veiksmo galima gauti kelis pranešimus?

Vienas vartotojo ar API veiksmas nebūtinai reiškia vieną Webhook įvykį. Pavyzdžiui, kuriant sąskaitą gali būti sukuriama pati sąskaita ir su ja susijęs dokumentas. Jei sukonfigūruotos abi sritys, galima gauti atskirą invoice ir atskirą document įvykį.

Sąskaitų atveju Webhook gali būti generuojamas ne tik pakeitus pagrindinę sąskaitos informaciją. Pranešimas taip pat gali būti sukuriamas keičiant su sąskaita susijusius duomenis, pavyzdžiui, pirkėją, pardavėją, mokėtoją, naudos gavėją, sąskaitos eilutes, Lot/Batch/Serial informaciją ar detalizacijas.