SmartPacks API | Byg selv mod lageret
← Alle integrationer
API og udvikling

Byg selv oven på SmartPacks API

Lageret er ikke en lukket kasse. Har I en udvikler, kan I bygge selv.

SmartPack har et REST-API med 21 dokumenterede områder: ordrer, varer, lagertal, historisk lager, indkøbsordrer, modtagelser, forsendelser, refusioner, optælling, leveringsmetoder, droppoints, POS og mere. Alt svarer JSON i UTF-8.

Det er ikke et begrænset side-API. Det er præcis det API vores egne integrationer kører på, blandt andet Business Central, Uniconta og alle ShopConnect-apps. Får I ikke fat i noget gennem det, får vi det heller ikke selv.

Nøglerne opretter I selv under Indstillinger, Apps og Integrationer, Add Private App. Autentificering er to headere, ikke OAuth.

21 områderOrdrer, varer, lager, forsendelse, retur, indkøb og optælling
14 hændelserWebhooks der kalder jeres eget endpoint når noget sker på lageret
SelvbetjentI opretter appen i jeres egen konto og får App-ID og token med det samme
I bygger selv
Egne dataudtræk og rapporter
Egne dashboards og nøgletal
Integrationer vi ikke har
Automatiseringer i jeres eget flow
Jeres eget ERP eller PIM
+
SmartPack styrer lageret
Pluk, pak og forsendelse
Lagertal og beholdning
Fragtlabel og sporingsnummer
Retur og refusion
Lageret som master på lagertal

Passer til jer hvis en af de her ting gælder

💻

I har en udvikler

Så er der ingen ventetid på os. Opret en privat app, læs dokumentationen og kald løs. I skal ikke bestille adgang eller vente på en tekniker.

📊

I skal rapportere på lageret

Historisk lagerliste per dato, lagerværdi, varebevægelser og leveringsvolumen per postnummer ligger som færdige endpoints. Det er tal I ellers skal trække manuelt.

🔧

Jeres system står ikke på listen

Vi har over 60 integrationer, men ikke alt. Er jeres ERP, PIM eller portal ikke iblandt, er API'et vejen ind uden at vente på at vi bygger den.

Sådan kommer et kald igennem

🔑Opret privat app
i jeres konto
📜App-ID og
adgangstoken
📡Kald API'et
med to headere
🔄Webhook
den anden vej
📊Call Log viser
hvad der skete

Autentificering sker med headerne X-SmartPack-AppId og X-SmartPack-AccessToken. Ingen OAuth-dans, ingen tokens der udløber midt i en kørsel.

Hvad synkroniseres automatisk?

I kan læse

  • Ordrer, linjer og status
  • Varer, lagertal og stregkoder
  • Historisk lager per dato
  • Varebevægelser og optælling
  • Modtagelser, forsendelser og refusioner
  • Lagerværdi og reguleringer

I kan oprette og ændre

  • Varer, delvis opdatering
  • Ordrer og indkøbsordrer
  • Leveringsmetoder og priser
  • Dropshipment med sporing
  • Webhooks og notifikationer
  • Egne talfelter på entiteter

Det ejer SmartPack

  • Lagertallet mod webshoppen
  • Fulfillment mod webshoppen
  • Skriver to systemer det samme,
  • overskriver de hinanden i ring,
  • og der kommer ingen fejlbesked.
  • Læs derfor gerne. Skriv ikke.

Det du skal vide om API'et

🔑
Nøglerne er jeres egneUnder Indstillinger, Apps og Integrationer trykker I Add Private App. App-ID og adgangstoken genereres i samme operation. Det kræver en bruger med fuld kundeadgang, og ingen involvering fra os.
🔒
To headere, ikke OAuthX-SmartPack-AppId og X-SmartPack-AccessToken. Det er hele autentificeringen. En privat app er bundet til jeres konto alene.
📡
14 hændelser den anden vejVare opdateret, lagertal ændret, salgbart antal ændret, optælling, varebevægelse, ordre opdateret, ordrestatus, fulfillment, refusion, retur oprettet, retur afsluttet og tre på indkøbsordrer. I vælger selv hvilke, og kan sætte Basic auth på jeres endpoint.
📊
Call Log viser jeres kaldTopic, endpoint, HTTP-status, udfald, request og svar, ordrereference, varighed og forsøgsnummer. Op til fem forsøg ved fejl, hvert logget for sig. Jeres credentials renses ud før loggen gemmes.
✏️
Delvis opdatering på varerSender I kun de felter I vil ændre, rører API'et ikke resten. Udeladte og null-felter ignoreres. I behøver ikke sende hele varen for at rette en beskrivelse.
⚠️
Grænsen ligger ved lager og fulfillmentSmartPack sætter det absolutte lagertal i shoppen uden at læse hvad der stod før. Skriver jeres egen app også lager, vinder den der skrev sidst, og ingen af tallene er rigtige.

Hvad I kan bygge, og hvad I ikke skal bygge

Læsning er fri. Skrivning er fri på det meste. Men der er to felter hvor to systemer ikke kan deles om ansvaret, og det er værd at kende før I designer noget.

✅ Rapporter og dataudtrækHistorisk lager, lagerværdi, varebevægelser, leveringsvolumen. Læs alt I vil, så tit I vil. Der er ingen konflikt i at læse.
✅ Egne integrationer og flowsOpret ordrer og indkøbsordrer, træk status, lyt på webhooks, byg det led I mangler mellem lageret og jeres eget system.
❌ Skrive lagertal til shoppenVores sync sætter det absolutte tal uden at sammenligne. Gør jeres app det samme, overskriver de hinanden ved hver kørsel, og fejlen viser sig som forkerte tal uden en fejlbesked.
❌ Sende fulfillment til shoppenMarkerer I selv ordren afsendt, mens SmartPack også gør det, risikerer I dobbelt afsendelse. Vores beskyttelse mod dubletter gælder kun vores egne gentagelser, ikke jeres.
⚠️Kort sagt: læs alt, byg alt, men lad lageret eje lagertallet og afsendelsen. Er I i tvivl om et felt hører i den ene eller den anden kasse, så spørg os inden I bygger. Det er billigere end at finde ud af det bagefter.

Privat app eller public app

To slags apps, og forskellen betyder noget for hvad I skal bygge. En privat app er til jer selv. En public app er til at dele.

# Privat app
I opretter den selv · bundet til jeres konto
App-ID og token med det samme · ingen godkendelse
 
# Public app
kan installeres hos flere kunder
kræver Start, Install, Uninstall og GDPR-endpoints
registreres hos os først · nøgler ved installation

Skal I bare trække data og bygge til jer selv, er en privat app svaret, og I kan starte i dag. Vil I lave noget andre SmartPack-kunder skal kunne installere, er det en public app, og så skal vi snakke sammen om endpoints og retningslinjer.

⚠️Bemærk at dokumentationen kalder det fjerde endpoint GDPR, mens opsætningsfladen kalder feltet RequestEndpoint. Det er samme felt.

Sådan får I adgang

1
Opret en privat app

Indstillinger, Apps og Integrationer, Add Private App. Giv den et navn. App-ID og adgangstoken står med det samme. Det kræver en bruger med fuld kundeadgang.

2
Læs dokumentationen

Alle endpoints er beskrevet med request, response, parametre og fejlkoder. Den ligger åbent uden login på jeres eget domæne under api/v1.

3
Kør et enkelt kald først

Hent en vare på SKU eller en lagerliste. Så ved I at nøglerne virker, før I bygger noget ovenpå.

4
Sæt webhooks op til sidst

Når I ved hvad I skal reagere på, opretter I en webhook med de hændelser I vil have. Tjek Call Log bagefter, den viser om jeres endpoint svarede.

Spørgsmål og svar

Hvad koster det at bruge API'et?

Adgangen ligger i jeres SmartPack-abonnement, og I opretter selv en privat app uden at spørge os. Skal vi bygge noget for jer, eller skal en integration udvikles, aftaler vi det separat.

Skal vi have jeres hjælp for at komme i gang?

Nej. Nøglerne opretter I selv, og dokumentationen ligger åbent. Vi tager gerne en teknisk snak om mulighederne først, men I behøver ikke vente på os.

Kan vi trække historiske lagertal ud?

Ja. Der er et endpoint til historisk lagerliste på en valgt dato, og et til lagerværdireguleringer over et datointerval. Begge kan filtreres på lokation.

Kan vi skrive lagertal til vores webshop selv?

Det bør I ikke. SmartPack sætter det absolutte lagertal i shoppen uden at læse det nuværende først. Skriver jeres app også lager, overskriver de to hinanden ved hver kørsel, og det giver ingen fejlbesked. Læs lagertallet fra os i stedet.

Hvad sker der hvis vores endpoint er nede?

SmartPack prøver op til fem gange, og hvert forsøg logges som en linje i Call Log med status og svar. Fejlede kald gemmes i 30 dage, succesfulde i 7.

Er en privat app synlig for andre kunder?

Nej. En privat app er bundet til jeres konto alene. Skal noget kunne installeres hos flere kunder, er det en public app, og den skal registreres hos os først.

Skal vi tage en teknisk snak?

Vi gennemgår gerne hvad I vil bygge, hvilke endpoints der passer, og hvor grænsen går. Vi siger også fra hvis vi tror det bliver dyrere end det gavner.

Vil I vide om det kan bygges?

Fortæl hvad I gerne vil kunne, så siger vi hvilke endpoints der findes til det, og om der er en faldgrube I skal kende først.

Book demo →

📊 Call Log

Hvert kald logges med status, varighed, svar og forsøgsnummer. Jeres nøgler renses ud før loggen gemmes.

📖 API-dokumentation

Alle endpoints med request, response og fejlkoder. Ligger åbent uden login.

Åbn dokumentationen →