Hoppa till innehållet

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.

Visa fullständig referens
Nätverk av kopplingar som illustrerar systemintegration

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.

  1. GET /session/resolve?domain=shop.example.se

    Slå upp vilket företag och vilken butik domänen tillhör

  2. GET /session

    Öppna en session och hämta butikens konfiguration: valuta, språk, funktioner, grafisk profil och navigation

  3. GET /catalog/products?pageSize=20

    Lä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.

  1. GET /catalog/categories

    Kategoriträdet

  2. GET /catalog/search?q=slipmaskin

    Sök med relevansrankning, synonymer och stavfelstolerans

  3. GET /catalog/filters?category=verktyg

    Fasetter med antal för aktuellt urval

  4. GET /catalog/products/{slug}

    Produktsidan med bilder, attribut och varianter

  5. 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.

  1. POST /cart/items

    Lägg en artikel i varukorgen

  2. GET /checkout/data

    Frakt- och betalsätt som butiken erbjuder

  3. POST /checkout/apply-code

    Lös in rabattkod eller presentkort

  4. POST /checkout/sessions

    Starta betalningen hos butikens leverantör

  5. POST /checkout/place

    Lä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.

  1. POST /auth/login

    Logga in med lösenord, eller be om en engångskod

  2. GET /portal/orders

    Orderhistoriken med leveransstatus per rad

  3. GET /portal/invoices

    Kundens fakturor

  4. POST /portal/quotes/request

    Begär pris på en lista artiklar

  5. POST /portal/returns

    Registrera en retur mot en order

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.

Levererad order: effektiv order- och frakthantering

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.