Headless commerce
När butiken ska vara er egen och Fluit motorn bakom den. Samma API som driver vår egen storefront, mot samma lager och samma order.
API och integrationer Headless commerce
Kort svar
Fluits commerce-API är 94 REST-anrop i 24 grupper som täcker sortiment,
sök, priser, saldo, varukorg, kassa och den inloggade kundens egna sidor. Bas-URL är
https://api.erp.fluit.cloud/ecom. Ni bygger frontenden i det ramverk ni
vill ha och anropar API:et från er egen server. Det som ligger bakom är inte en
e-handelsplattform bredvid affärssystemet, utan affärssystemet självt: priset är priset en
säljare skulle ge, saldot är lagrets saldo, och en order som läggs här är en kundorder i
Fluit med allokering, plock och fakturering.
Bas-URL
https://api.erp.fluit.cloud/ecom
Autentisering
X-Tenant-Id för företag,
X-Channel för butik, och en sessionstoken som
Authorization: Bearer.
Anropas från
Er egen server. Frontenden pratar med er backend, er backend med Fluit. Så är vår egen butik byggd.
Specifikation
Hela ytan som OpenAPI-dokument: swagger.json, eller renderad i referensen.
Vad API:et täcker
Sex områden, samma data som resten av Fluit arbetar i.
Butiken
En kanal är en butik: eget sortiment, egen prislista, egen valuta och egen grafisk profil.
- Flera butiker i samma företag, var och en med sitt sortiment
- Hela butikskonfigurationen i ett anrop
- Innehållssidor, blogg och hjälpartiklar som redaktören själv styr
- Kanalens omdirigeringstabell för egen routing
Katalog och sök
Indexerat sök med relevansrankning, synonymer och stavfelstolerans, inte en substrängmatchning.
- Fasetter med antal, räknade på aktuellt urval
- Varianter, attribut, korsreferenser och relaterade produkter
- Produktflöde för Google Merchant
- Bilder och dokument direkt ur artikelregistret
Priser och saldo
Priset kommer ur butikens prislista, och ur kundens avtalspriser när sessionen är inloggad. Saldot är samma saldo som lagerpersonalen ser.
- Priser för flera artiklar i ett anrop
- Moms in- eller exklusive per butik, med valfri kundväxling
- Saldo aggregerat enligt butikens inställning
- Ingen separat handelsdatabas att hålla i synk
Varukorg och kassa
Anonyma sessioner har varukorg, och varukorgen överlever inloggningen. Betalningen startas leverantörsoberoende.
- Rabattkuponger och presentkort på samma endpoint
- Fraktpris räknat per land och leveranssätt
- Postnummeruppslag i adressformuläret
- Ordern blir en kundorder i Fluit, med allokering och plock
Kundens sidor
Order, fakturor, leveranser, offertförfrågningar, returer och supportärenden för den inloggade kunden.
- Leveranser med spårning där transportören ger den
- Returer med behörighetskontroll mot ordern och retursedel
- Ärenden som hamnar i samma kö som supportmejlen
- Adressbok med standardadress
Engagemang
Recensioner, nyhetsbrev och en shoppingassistent som svarar mot butikens eget sortiment.
- Recensioner med moderering före publicering
- Nyhetsbrev med dubbel opt-in och avregistrering i ett klick
- Assistenten strömmar svar och läser butikens katalog och innehåll
- Sidvisningar in i Fluits egen SEO- och trafikvy
Fyra flöden
En endpointlista säger vad som går att anropa, inte i vilken ordning. Här är de fyra kedjorna en butik behöver, med anropen i den ordning de faktiskt görs.
Starta en butik
Tre anrop tar dig från ett domännamn till en produktlista. Det första behöver inga headers alls: det finns för att ta reda på vilka de ska vara.
-
GET
/session/resolve?domain=shop.example.seSlå upp vilket företag och vilken butik domänen tillhör
-
GET
/sessionÖppna en session och hämta butikens konfiguration: valuta, språk, funktioner, grafisk profil och navigation
-
GET
/catalog/products?pageSize=20Läs sortimentet som är publicerat i den här butiken
Bläddra och söka
Produkter adresseras med slug eller id, så URL:en kan bära den läsbara. Fasetterna kommer ur träffarna, inte ur hela attributvokabulären, så filterpanelen speglar det som faktiskt finns i resultatet.
-
GET
/catalog/categoriesKategoriträdet
-
GET
/catalog/search?q=slipmaskinSök med relevansrankning, synonymer och stavfelstolerans
-
GET
/catalog/filters?category=verktygFasetter med antal för aktuellt urval
-
GET
/catalog/products/{slug}Produktsidan med bilder, attribut och varianter
-
GET
/catalog/stock?itemIds=…Saldo för flera artiklar i ett anrop
Varukorg till lagd order
Varukorgen hänger på sessionen, så det finns inget varukorgs-id att bära runt. Betalningen startas leverantörsoberoende: svaret säger hur den ska renderas, inte vem som producerade den, och en butik kan därför byta betalleverantör utan att röra frontenden.
-
POST
/cart/itemsLägg en artikel i varukorgen
-
GET
/checkout/dataFrakt- och betalsätt som butiken erbjuder
-
POST
/checkout/apply-codeLös in rabattkod eller presentkort
-
POST
/checkout/sessionsStarta betalningen hos butikens leverantör
-
POST
/checkout/placeLägg ordern, som blir en kundorder i Fluit
Inloggad kund
Inloggningen uppgraderar den befintliga sessionen i stället för att ersätta den, så varukorgen följer med och priserna byts till kundens avtalspriser i samma sekund. Allt under /portal är kundens eget och går inte att nå för någon annan.
-
POST
/auth/loginLogga in med lösenord, eller be om en engångskod
-
GET
/portal/ordersOrderhistoriken med leveransstatus per rad
-
GET
/portal/invoicesKundens fakturor
-
POST
/portal/quotes/requestBegär pris på en lista artiklar
-
POST
/portal/returnsRegistrera en retur mot en order
Hela ytan
94 anrop i 24 grupper. Varje grupp har sin egen sida i referensen, med parametrar, svar, scheman och ett curl-exempel per anrop.
Session och kanal 2 anrop
Kanaler 4 anrop
Katalog 15 anrop
Priser 2 anrop
Omdirigeringar 1 anrop
Innehållssidor 2 anrop
Blogg 2 anrop
Hjälpartiklar 4 anrop
Varukorg 5 anrop
Kassa 10 anrop
Klarna Checkout 4 anrop
Konto 6 anrop
Profil 2 anrop
Adresser 5 anrop
Ordrar 2 anrop
Fakturor 1 anrop
Leveranser 2 anrop
Offertförfrågningar 5 anrop
Returer 6 anrop
Ärenden 7 anrop
Recensioner 2 anrop
Nyhetsbrev 3 anrop
Shoppingassistent 1 anrop
Analys 1 anrop
Vanliga frågor
Vad menas med headless commerce hos Fluit?
Att butiksfronten är er egen och Fluit är motorn bakom den. Ni bygger gränssnittet i det ramverk ni vill ha, och hämtar sortiment, priser, saldo, varukorg, kassa och kundens egna sidor från ett REST-API med bas-URL https://api.erp.fluit.cloud/ecom. Samma API driver Fluits egen storefront i produktion, så det ni bygger mot är inte en särskild integrationsyta utan den yta produkten själv använder.
Behöver jag en separat e-handelsplattform?
Nej. Katalog, priser, kampanjer, varukorg, kassa, order, returer och kundens sidor ligger i Fluit, i samma system som lager, inköp och fakturering. Det finns ingen produktdatabas till som ska hållas i synk, och saldot i butiken är samma saldo som lagerpersonalen ser. Vill ni inte bygga någon frontend alls finns Fluits färdiga butik att använda som den är.
Hur autentiserar jag mot commerce-API:et?
Med tre headers. X-Tenant-Id väljer företag, X-Channel väljer butik, och Authorization: Bearer bär en sessionstoken från GET /ecom/session. Sessionen är inte samma sak som en inloggning: en anonym besökare får också en session, och den bär varukorgen. Loggar besökaren in uppgraderas sessionen på plats, så varukorgen följer med.
Ska anropen gå från webbläsaren eller från min server?
Från er server. Er frontend anropar er egen backend, och er backend anropar Fluit, med tenant-id och sessionstoken kvar på er sida. Så är Fluits egen butik byggd: sidorna laddas server-side och webbläsaren pratar aldrig direkt med API:et. Behöver ni ändå anropa direkt från webbläsaren läggs er domän till i konfigurationen, hör av er så ordnar vi det.
Kan jag byta betalleverantör utan att bygga om butiken?
Ja. POST /ecom/checkout/sessions är leverantörsoberoende: svaret innehåller ett renderingsläge och antingen ett HTML-fragment, en vidarebefordrings-URL eller en klientnyckel. Frontenden agerar på läget, inte på leverantörens namn. De äldre endpointsen under /ecom/kco är Klarna-specifika och finns kvar för befintliga butiker, men nybyggen ska använda den leverantörsoberoende varianten.
Finns commerce-API:et dokumenterat för AI-assistenter?
Ja. https://api.erp.fluit.cloud/ecom/llms.txt är hela butiksytan som en textfil i llms.txt-format: autentisering, kanaler och sessioner, flöden, felkoder och samtliga endpoints med parametrar. Filen genereras ur API:ets OpenAPI-dokument, så den kan inte hamna ur synk med koden, och den kräver ingen nyckel för att läsas.
Vad är skillnaden mot Fluits publika REST API?
Målgruppen. Commerce-API:et är skrivet för en butiksfront och en besökare: sortiment i en kanal, priser för den som är inloggad, varukorg och kassa. Det publika API:et under /preview är skrivet för ett annat system: affärsnycklar i URL:erna, API-nyckel med scopes, idempotensnycklar och delta-synk. Bygger ni en butik vill ni ha det första. Ska ni synka mot ett affärssystem, ett WMS eller en ekonomifunktion vill ni ha det andra.
Ska ni bygga butiken själva?
Berätta hur butiken ska fungera så går vi igenom kanaler, priser, kassa och vad som behövs på er sida.