workorder.create till den naturliga ersättningen för att polla din kö: händelsen är signalen om att en arbetsorder har landat i din kö, oftast i väntan på att du ska acceptera eller avvisa den.
Sätta upp en slutpunkt
Slutpunkter registreras per leverantörsanläggning. Ett företag med flera anläggningar registrerar var och en som har en egen integration. Det finns ännu inget självbetjänings-API för detta: mejla support@useopenwrench.com med- HTTPS-URL:en som ska ta emot leveranserna,
- vilka av de tre händelserna du vill ha (
workorder.create,workorder.status_update,workorder.new_note), och - om slutpunkten är för test eller produktion.
Händelser
Lite mer om var och en:
workorder.createbetyder “nytt arbete för dig”, inte bara “en ny rad skapades”. Den utlöses när en arbetsorder skapas med din anläggning tilldelad, när en köpare tilldelar om en befintlig arbetsorder till dig (den går in iPendingConfirmationByServiceProvider), och när du själv öppnar en leverantörsinitierad arbetsorder (SupplierInitiatedPendingApproval). En arbetsorder som skapas för dig men först behöver köparens interna godkännande gerworkorder.createnär den nårPendingConfirmationByServiceProvider, inte när köparens godkännare ser den första gången.workorder.status_updateutlöses när en arbetsorder tilldelad dig går in iConfirmedByServiceProvider,TechAssigned,TechScheduled,TechRescheduled,WorkIncompleteWithReason(om den inte kommer direkt frånTechWorkingOnSite, vilket är en utcheckning),WorkUnsatisfactory,WorkReviewedAndCompleted,CancelledWithReasonellerPaymentMade. Det täcker ditt eget accepterande, schemaläggning som dina tekniker gör i OpenWrench-apparna, och köparens beslut om ditt arbete. Reservdelsstatusarna,TechEnRoute,TechWaitingOnSite,TechWorkingOnSite,WaitingForReviewsamt offert- och förslagsstatusarna ger inga händelser.workorder.new_noteutlöses för anteckningar i rottråden mellan köpare och leverantör från endera sidan, inklusive anteckningar som din egen integration postar, massuppladdningar av foton och anteckningen som bifogas en statusåtgärd. Dina interna anteckningar och trådarna på arbetsordrar som du lägger ut på underleverantör ger aldrig händelser.
- Omtilldelning bort från dig. Om köparen flyttar en arbetsorder till en annan leverantör försvinner den helt enkelt ur din kö. Stäm av mot
GET /v1/supplier/work_order/work_ordersom det spelar roll för dig. - Arbetsordrar du bara kan se. Om din anläggning finns på en arbetsorders synlighetslista i stället för att vara tilldelad den får du dess händelser bara om OpenWrench har aktiverat synlighets-webhooks för ditt företag. Fråga supporten om du behöver det.
Leveransens nyttolast
Varje leverans är en HTTPPOST med en JSON-kropp. Kroppen har två fält: event_type och data.
Skapande- och statushändelser
workorder.status_update använder samma data-form med oldStatus ifyllt.
Anteckningshändelser
Nyttolasten innehåller inte resten av tråden. Läs den med
GET /v1/supplier/work_order/work_order_notes/{woId} om du behöver sammanhang.
Verifiera leveranser
Varje leverans är signerad. Gatewayen beräknar en HMAC över den råa förfrågningskroppen med din slutpunkts signeringshemlighet och skickar den i ett signaturhuvud. När supporten registrerar din slutpunkt ger de dig hemligheten, huvudets namn och hash-algoritmen. Verifiera signaturen mot kroppens råa bytes innan du tolkar den, och avvisa allt som inte stämmer. Eftersom hemligheten är per slutpunkt är rotation en supportförfrågan: be om en ny hemlighet, driftsätt den, och be sedan supporten byta över slutpunkten.Svar, omförsök och dubbletter
- Bekräfta snabbt. Returnera
2xxså snart du har lagrat händelsen, och gör uppföljningsarbetet (hämta arbetsordern, uppdatera ditt system) asynkront. Ett svar som inte är2xxeller en timeout räknas som en misslyckad leverans. - Misslyckade leveranser görs om av gatewayen enligt ett schema med ökande väntetid. Gör din hanterare idempotent så att ett omförsök efter en delvis lyckad körning inte gör skada.
- Leveranser sker minst en gång. Samma händelse kan komma mer än en gång även utan något fel på din sida. Deduplicera på
event_typeplusworkOrderIdpluschangedAt(elleraddedAtför anteckningar). - Ordningen garanteras inte. Två händelser för samma arbetsorder kan komma i fel ordning. Härled inte tillståndet ur händelsesekvensen; hämta arbetsordern och lita på dess
status. - Gamla händelser kastas, de levereras inte sent. En händelse som inte har lämnats över till gatewayen inom tre timmar från ändringen kastas. Efter ett avbrott på OpenWrenchs sida, eller om din slutpunkt var nere längre än omförsöksfönstret, stäm av genom att polla
GET /v1/supplier/work_order/work_orders?statusChangedAt=...för perioden du missade.
Reagera på en händelse
Den rekommenderade hanteraren är liten: verifiera, lagra, bekräfta, hämta sedan.Sätta ihop det hela
Den typiska integrationsloopen, driven av webhooks:- Registrera en slutpunkt för
workorder.createochworkorder.status_update(lägg tillworkorder.new_noteom du speglar konversationen). - Vid
workorder.create, hämta arbetsordern och skapa jobbet i ditt system. Förgrena sedan pånewStatus:PendingConfirmationByServiceProviderbetyder att köparen väntar på dig, så görconfirmellerdeclineinom din SLA;SupplierInitiatedPendingApprovalbetyder att din egen begäran väntar på köparen, så gör ingenting tills enworkorder.status_updaterapporterar utfallet; alla andra statusar betyder att arbetsordern redan är din, så gå direkt till schemaläggning. - Vid
workorder.status_update, hämta arbetsordern.WorkUnsatisfactoryochWorkReviewedAndCompletedger dig köparens utlåtande;CancelledWithReasonstänger jobbet;PaymentMadestänger den ekonomiska delen. - Kör en periodisk polling på
assignedAtellerstatusChangedAtsom skyddsnät för allt som webhook-vägen kan ha missat, inklusive arbete som tilldelats om bort från dig.