Simaware artikel-API

Använd detta skrivskyddade API för att låta backend-systemet på en extern webbplats hämta artikeldata från Simaware.

Viktigt: Lägg aldrig Simaware API-nyckeln i HTML, frontend-JavaScript, mobilappar eller publika kodarkiv. Webbplatsens backend måste anropa Simaware.

Så fungerar integrationen

  1. Skapa en API-nyckel i Simaware under Företag -> API / Integrationer.
  2. Lagra API-nyckeln som en hemlig miljövariabel i webbplatsens backend.
  3. Webbplatsens backend anropar Simaware API med Bearer-token.
  4. Webbplatsen lagrar eller uppdaterar artiklar i sin egen databas.
  5. Webbplatsens frontend hämtar artikeldata från webbplatsens backend, inte direkt från Simaware.

Bas-URL och autentisering

Ersätt domänen och token med din riktiga Simaware-domän och API-nyckel.

Base URL:
https://simaware.se

Header:
Authorization: Bearer sima_live_your_api_key_here

Hämta en artikel

Använd artikelnumret som värde i URL:en. Exempel på artikelnummer: 12345.

GET /api/v1/items/12345
Authorization: Bearer sima_live_your_api_key_here

Exempelsvar

{
  "data": {
    "artnum": "12345",
    "ean": "7350000000000",
    "product": "Example Product",
    "brand": "Example Brand",
    "short_describtion": "Short item summary",
    "description": "Short product description",
    "category": "Drinks",
    "package_qty": 24,
    "package_H": 12.0,
    "package_W": 8.0,
    "package_D": 20.0,
    "weight": 0.33,
    "in_stock": 48,
    "market_price": 12.9,
    "wholesale_price": 18.5,
    "vat": 12,
    "vat_code": 3003,
    "vat_percent": 12,
    "pic": "/static/uploads/items/example.jpg",
    "item_status": "available",
    "created_at": "2026-08-20T09:00:00Z",
    "updated_at": "2026-08-20T10:15:00Z"
  },
  "sync_time": "2026-08-20T10:20:00Z"
}

Hämta alla artiklar med sidindelning

GET /api/v1/items?limit=100&page=1
Authorization: Bearer sima_live_your_api_key_here

Om pagination.has_more är true, hämta nästa sida tills has_more är false.

{
  "data": [
    {
      "artnum": "12345",
      "ean": "7350000000000",
      "product": "Example Product",
      "brand": "Example Brand",
      "short_describtion": "Short item summary",
      "description": "Short product description",
      "category": "Drinks",
      "package_matrial": "Carton",
      "package_qty": 24,
      "package_H": 12.0,
      "package_W": 8.0,
      "package_D": 20.0,
      "weight": 0.33,
      "in_stock": 48,
      "market_price": 12.9,
      "wholesale_price": 18.5,
      "vat": 12,
      "vat_code": 3003,
      "vat_percent": 12,
      "pic": "/static/uploads/items/example.jpg",
      "item_status": "available",
      "created_at": "2026-08-20T09:00:00Z",
      "updated_at": "2026-08-20T10:15:00Z"
    }
  ],
  "sync_time": "2026-08-20T10:20:00Z",
  "pagination": {
    "page": 1,
    "limit": 100,
    "total": 250,
    "has_more": true
  }
}

Inkrementell synkronisering

Efter en lyckad synkronisering sparar du sync_time i webbplatsens databas. Använd värdet som updated_since vid nästa synkronisering.

GET /api/v1/items?updated_since=2026-08-20T10:20:00Z&limit=100&page=1
Authorization: Bearer sima_live_your_api_key_here

Spara det nya sync_time-värdet först efter att alla sidor har hämtats och sparats utan fel.

Backend-exempel: Node.js / Express

Webbläsaren anropar denna route på webbplatsen. Denna route anropar Simaware från backend.

app.get("/api/simaware/items/:artnum", async (req, res) => {
  const artnum = req.params.artnum;

  const response = await fetch(
    `${process.env.SIMAWARE_BASE_URL}/api/v1/items/${encodeURIComponent(artnum)}`,
    {
      headers: {
        Authorization: `Bearer ${process.env.SIMAWARE_API_KEY}`
      }
    }
  );

  const data = await response.json();
  res.status(response.status).json(data);
});

Miljövariabler i webbplatsens backend

SIMAWARE_BASE_URL=https://simaware.se
SIMAWARE_API_KEY=sima_live_your_api_key_here

Frontend-exempel

Denna HTML anropar webbplatsens backend. Den innehåller inte Simaware API-nyckeln.

<h1 id="product">Loading...</h1>
<p>Article: <span id="artnum"></span></p>
<p>Stock: <span id="stock"></span></p>
<p>Price: <span id="price"></span></p>

<script>
async function loadItem() {
  const response = await fetch("/api/simaware/items/12345");
  const result = await response.json();

  if (!response.ok) {
    document.getElementById("product").textContent = "Item not found";
    return;
  }

  const item = result.data;
  document.getElementById("product").textContent = item.product;
  document.getElementById("artnum").textContent = item.artnum;
  document.getElementById("stock").textContent = item.in_stock;
  document.getElementById("price").textContent = item.market_price;
}

loadItem();
</script>

Vanliga fel

HTTP Fel Betydelse
401 authentication_required Bearer-token saknas.
401 invalid_api_key Felaktig, återkallad eller inaktiv API-nyckel.
400 invalid_updated_since Tidsstämpeln updated_since är inte giltig ISO 8601 UTC.
404 item_not_found Artikeln finns inte för företaget som denna API-nyckel tillhör.
429 rate_limit_exceeded För många anrop med denna API-nyckel. Vänta och försök igen enligt Retry-After-headern.