Hoppa till innehållet
Afi Planner

Har Afi Planner ett API med webhooks?

Kort svar

Ja. Alla Afi Planner-planer, även den kostnadsfria provperioden, har ett REST-API (beskrivet i OpenAPI 3.1) för att skapa ordrar, planera och skicka rutter och läsa status, ETA och leveransbevis, plus signerade webhooks för varje ändring. POST-anrop tar en Idempotency-Key så att ett omförsök aldrig skapar en andra order, och varje webhook har ett löpnummer så att ert system kan lägga händelserna i rätt ordning efter ett omförsök.

Så fungerar det i Afi Planner

Omförsök som aldrig dubblerar en order

Skicka en Idempotency-Key-header med ett POST-anrop: samma nyckel med samma innehåll inom 24 timmar får det första svaret tillbaka i stället för en andra åtgärd. Ordrar har också ert eget ordernummer, så att skicka samma nummer för samma dag igen uppdaterar ordern, så länge ingen förare har arbetat med den. När en förare har gjort det står ordern kvar som leveransunderlag: att skicka den igen nekas med 409 order_worked och orderns id, och PATCH /api/v1/orders/{id} ändrar dess fält.

  • Samma nyckel med annat innehåll eller annan sökväg nekas (409 idempotency_conflict)
  • Ett omförsök som kommer medan det första anropet pågår nekas också (409 idempotency_in_progress)
  • Upp till 1 000 ordrar per batchanrop och 600 anrop i minuten per nyckel
  • En dags plan rymmer högst paketets antal stopp per plan (500 i den kostnadsfria provperioden): en batch med fler nya ordrar än som ryms nekas helt (403 med planFull)

Händelser som går att ordna

Varje webhook har ett sequence-nummer: företagets egen räknare, ett mer för varje händelse, aldrig återanvänt. Ett omförsök har samma id, sequence och innehåll som första försöket, så ert system tillämpar en händelse bara om dess sequence är högre än den senaste det tillämpat för den ordern. occurredAt säger när det hände, till exempel leveranstiden i rapporten.

  • order.created, order.updated, order.status_changed, order.loaded (förarens lastkontroll lade den i bilen), order.eta_changed, order.rescheduled_by_customer, order.instructions_changed, order.rated, order.not_attempted, order.moved_back, order.cancelled, order.deleted
  • plan.optimized, plan.job_failed, route.dispatched
  • En endpoint som lyssnar på vissa händelsetyper ser luckor i numreringen (testpingar till andra endpoints ger också luckor); den går bara uppåt

Signerade, omförsökta och synliga

Varje anrop signeras med HMAC-SHA256 och en tidsstämpel i headern Afi-Signature. Svara med 2xx inom 10 sekunder; misslyckade leveranser försöks igen med växande intervall i ungefär ett dygn, och varje försök syns i en leveranslogg med HTTP-status, med ”Send test” och ”Retry now” under Inställningar.

Webhook-endpoint med en lyckad testleverans och listan över senaste händelser

Vanliga frågor

Kostar API:t extra?

Nej. API och webhooks ingår i alla planer, även den kostnadsfria provperioden.

Vad händer om vår endpoint ligger nere?

Varje händelse försöks igen i ungefär ett dygn. En endpoint som misslyckas tre dagar i rad stängs av och visas så under Inställningar → Developers. Händelser som uppstår medan en endpoint är avstängd (av er eller efter fel) sparas inte för den, och numreringen visar inte att de missades: läs dagens ordrar med GET /api/v1/orders?day= när ni har slagit på den igen.

Finns det en app för Shopify eller Zapier?

Inte än. I dag kopplar ni dem via API och webhooks.

Fler svar

Planera morgondagens rutter på 3 minuter

Starta din kostnadsfria provperiod på 3 månader. Inget kreditkort, inget uppstartssamtal, ingen installation.