MENU navbar-image

Introduction

REST JSON API for Lagr inventory and warehouse management.

Lagr exposes a versioned REST API at `/api/v1`. All requests and responses use JSON.

**Getting started**

1. `POST /api/v1/auth/login` with `email`, `password`, and `tenant_slug` to obtain a Bearer token.
2. Send `Authorization: Bearer {token}` and `X-Tenant-Slug: {tenant_slug}` on every authenticated request.

Successful responses wrap payloads in `{ "data": ... }`. Errors return `{ "code": "...", "message": "..." }`.

Download the [Postman collection](/developers.postman) or [OpenAPI spec](/developers.openapi) from the links in the sidebar.

**API areas**

| Area | What it covers |
|------|----------------|
| Getting started | Health, login, current user |
| Warehouses | Warehouses and bin/slot locations |
| Catalog | Products, SKUs, categories, VAT, currencies |
| Inventory | On-hand levels, lots, movements, transfers |
| Warehouse operations | Write-offs and stock takes |
| Purchasing | Distributors and purchase orders |
| Sales | Customers and sales orders (pick/ship) |
| Integrations | ERP connections and Tripletex sync |
| Webhooks | Incoming Tripletex events |

Authenticating requests

To authenticate requests, include an Authorization header with the value "Bearer {YOUR_BEARER_TOKEN}".

All authenticated endpoints are marked with a requires authentication badge in the documentation below.

Authenticate with POST /api/v1/auth/login using email, password, and tenant_slug. The response includes a Bearer token.

Send these headers on all other endpoints:

Integration endpoints additionally require the integrations.manage permission for the authenticated user.

Getting started

Health check, authentication, and session context.

Overview

Health check

Returns API and database status. No authentication required.

Example request:
curl --request GET \
    --get "https://api.lagrwms.no/api/v1/health" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.lagrwms.no/api/v1/health"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "status": "ok",
    "database": "ok"
}
 

Request   

GET api/v1/health

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Authentication

Login

Exchange email, password, and tenant slug for a Bearer token.

Example request:
curl --request POST \
    "https://api.lagrwms.no/api/v1/auth/login" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"email\": \"user@example.com\",
    \"password\": \"|]|{+-\",
    \"tenant_slug\": \"demo\"
}"
const url = new URL(
    "https://api.lagrwms.no/api/v1/auth/login"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "email": "user@example.com",
    "password": "|]|{+-",
    "tenant_slug": "demo"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/v1/auth/login

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

email   string     

User email. Example: user@example.com

password   string     

User password. Example: |]|{+-

tenant_slug   string     

Tenant slug. Example: demo

Session

Get current user

requires authentication

Example request:
curl --request GET \
    --get "https://api.lagrwms.no/api/v1/me" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.lagrwms.no/api/v1/me"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request   

GET api/v1/me

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

Warehouses

Physical warehouses that hold stock.

List warehouses

requires authentication

Example request:
curl --request GET \
    --get "https://api.lagrwms.no/api/v1/warehouses" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.lagrwms.no/api/v1/warehouses"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request   

GET api/v1/warehouses

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

Create warehouses

requires authentication

Example request:
curl --request POST \
    "https://api.lagrwms.no/api/v1/warehouses" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"code\": \"n\",
    \"status\": \"inactive\",
    \"timezone\": \"Antarctica\\/Rothera\"
}"
const url = new URL(
    "https://api.lagrwms.no/api/v1/warehouses"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "code": "n",
    "status": "inactive",
    "timezone": "Antarctica\/Rothera"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/v1/warehouses

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

name   string     

Must not be greater than 255 characters. Example: b

code   string     

Must not be greater than 64 characters. Example: n

status   string  optional    

Example: inactive

Must be one of:
  • active
  • inactive
timezone   string  optional    

Must not be greater than 64 characters. Example: Antarctica/Rothera

settings   object  optional    

Get warehouses

requires authentication

Example request:
curl --request GET \
    --get "https://api.lagrwms.no/api/v1/warehouses/architecto" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.lagrwms.no/api/v1/warehouses/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request   

GET api/v1/warehouses/{warehouseId}

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

warehouseId   string     

Example: architecto

Locations

Bins, slots, and areas inside a warehouse.

List locations

requires authentication

Example request:
curl --request GET \
    --get "https://api.lagrwms.no/api/v1/warehouses/architecto/locations" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.lagrwms.no/api/v1/warehouses/architecto/locations"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request   

GET api/v1/warehouses/{warehouseId}/locations

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

warehouseId   string     

Example: architecto

Create locations

requires authentication

Example request:
curl --request POST \
    "https://api.lagrwms.no/api/v1/warehouses/architecto/locations" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"code\": \"n\",
    \"kind\": \"area\",
    \"parent_id\": 16,
    \"status\": \"inactive\"
}"
const url = new URL(
    "https://api.lagrwms.no/api/v1/warehouses/architecto/locations"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "code": "n",
    "kind": "area",
    "parent_id": 16,
    "status": "inactive"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/v1/warehouses/{warehouseId}/locations

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

warehouseId   string     

Example: architecto

Body Parameters

name   string     

Must not be greater than 255 characters. Example: b

code   string     

Must not be greater than 64 characters. Example: n

kind   string  optional    

Example: area

Must be one of:
  • area
  • location
  • slot
parent_id   integer  optional    

Example: 16

status   string  optional    

Example: inactive

Must be one of:
  • active
  • inactive
settings   object  optional    

Get locations

requires authentication

Example request:
curl --request GET \
    --get "https://api.lagrwms.no/api/v1/warehouses/architecto/locations/architecto" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.lagrwms.no/api/v1/warehouses/architecto/locations/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request   

GET api/v1/warehouses/{warehouseId}/locations/{locationId}

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

warehouseId   string     

Example: architecto

locationId   string     

Example: architecto

Catalog

Product master data and relationships.

Products

List products

requires authentication

Example request:
curl --request GET \
    --get "https://api.lagrwms.no/api/v1/products" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.lagrwms.no/api/v1/products"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request   

GET api/v1/products

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

Create products

requires authentication

Example request:
curl --request POST \
    "https://api.lagrwms.no/api/v1/products" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"code\": \"n\",
    \"category_id\": 16,
    \"vat_type_id\": 16,
    \"status\": \"inactive\",
    \"description\": \"Et animi quos velit et fugiat.\",
    \"external_id\": \"d\",
    \"source_system\": \"l\"
}"
const url = new URL(
    "https://api.lagrwms.no/api/v1/products"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "code": "n",
    "category_id": 16,
    "vat_type_id": 16,
    "status": "inactive",
    "description": "Et animi quos velit et fugiat.",
    "external_id": "d",
    "source_system": "l"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/v1/products

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

name   string     

Must not be greater than 255 characters. Example: b

code   string     

Must not be greater than 64 characters. Example: n

category_id   integer  optional    

Example: 16

vat_type_id   integer  optional    

Example: 16

status   string  optional    

Example: inactive

Must be one of:
  • active
  • inactive
description   string  optional    

Must not be greater than 500 characters. Example: Et animi quos velit et fugiat.

external_id   string  optional    

Must not be greater than 255 characters. Example: d

source_system   string  optional    

Must not be greater than 64 characters. Example: l

settings   object  optional    

Get products

requires authentication

Example request:
curl --request GET \
    --get "https://api.lagrwms.no/api/v1/products/architecto" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.lagrwms.no/api/v1/products/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request   

GET api/v1/products/{productId}

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

productId   string     

Example: architecto

Update products

requires authentication

Example request:
curl --request PUT \
    "https://api.lagrwms.no/api/v1/products/architecto" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"category_id\": 16,
    \"vat_type_id\": 16,
    \"status\": \"inactive\",
    \"description\": \"Et animi quos velit et fugiat.\"
}"
const url = new URL(
    "https://api.lagrwms.no/api/v1/products/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "category_id": 16,
    "vat_type_id": 16,
    "status": "inactive",
    "description": "Et animi quos velit et fugiat."
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PUT api/v1/products/{productId}

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

productId   string     

Example: architecto

Body Parameters

name   string  optional    

Must not be greater than 255 characters. Example: b

category_id   integer  optional    

Example: 16

vat_type_id   integer  optional    

Example: 16

status   string  optional    

Example: inactive

Must be one of:
  • active
  • inactive
description   string  optional    

Must not be greater than 500 characters. Example: Et animi quos velit et fugiat.

Add product relationship

requires authentication

Example request:
curl --request POST \
    "https://api.lagrwms.no/api/v1/products/architecto/relationships" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"related_product_id\": 16,
    \"relationship_type\": \"architecto\"
}"
const url = new URL(
    "https://api.lagrwms.no/api/v1/products/architecto/relationships"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "related_product_id": 16,
    "relationship_type": "architecto"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/v1/products/{productId}/relationships

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

productId   string     

Example: architecto

Body Parameters

related_product_id   integer     

Example: 16

relationship_type   string  optional    

Example: architecto

Remove product relationship

requires authentication

Example request:
curl --request DELETE \
    "https://api.lagrwms.no/api/v1/products/architecto/relationships/architecto" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.lagrwms.no/api/v1/products/architecto/relationships/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request   

DELETE api/v1/products/{productId}/relationships/{relatedProductId}

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

productId   string     

Example: architecto

relatedProductId   string     

Example: architecto

SKUs

List SKUs

requires authentication

Example request:
curl --request GET \
    --get "https://api.lagrwms.no/api/v1/products/architecto/skus" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.lagrwms.no/api/v1/products/architecto/skus"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request   

GET api/v1/products/{productId}/skus

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

productId   string     

Example: architecto

Create SKUs

requires authentication

Example request:
curl --request POST \
    "https://api.lagrwms.no/api/v1/products/architecto/skus" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"code\": \"b\",
    \"manufacturer_code\": \"n\",
    \"barcode\": \"g\",
    \"barcodes\": [
        \"z\"
    ],
    \"status\": \"active\",
    \"external_id\": \"m\",
    \"source_system\": \"i\",
    \"distributor_codes\": [
        {
            \"distributor_id\": 16,
            \"item_code\": \"n\"
        }
    ]
}"
const url = new URL(
    "https://api.lagrwms.no/api/v1/products/architecto/skus"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "code": "b",
    "manufacturer_code": "n",
    "barcode": "g",
    "barcodes": [
        "z"
    ],
    "status": "active",
    "external_id": "m",
    "source_system": "i",
    "distributor_codes": [
        {
            "distributor_id": 16,
            "item_code": "n"
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/v1/products/{productId}/skus

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

productId   string     

Example: architecto

Body Parameters

code   string     

Must not be greater than 64 characters. Example: b

manufacturer_code   string  optional    

Must not be greater than 128 characters. Example: n

barcode   string  optional    

Must not be greater than 128 characters. Example: g

barcodes   string[]  optional    

Must not be greater than 128 characters.

distributor_codes   object[]  optional    
distributor_id   integer  optional    

This field is required when distributor_codes is present. Example: 16

item_code   string  optional    

This field is required when distributor_codes is present. Must not be greater than 128 characters. Example: n

status   string  optional    

Example: active

Must be one of:
  • active
  • inactive
external_id   string  optional    

Must not be greater than 255 characters. Example: m

source_system   string  optional    

Must not be greater than 64 characters. Example: i

settings   object  optional    

Get SKUs

requires authentication

Example request:
curl --request GET \
    --get "https://api.lagrwms.no/api/v1/products/architecto/skus/architecto" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.lagrwms.no/api/v1/products/architecto/skus/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request   

GET api/v1/products/{productId}/skus/{skuId}

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

productId   string     

Example: architecto

skuId   string     

Example: architecto

Categories

List categories

requires authentication

Example request:
curl --request GET \
    --get "https://api.lagrwms.no/api/v1/categories" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"parent_id\": 16
}"
const url = new URL(
    "https://api.lagrwms.no/api/v1/categories"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "parent_id": 16
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request   

GET api/v1/categories

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

parent_id   integer  optional    

Example: 16

Create categories

requires authentication

Example request:
curl --request POST \
    "https://api.lagrwms.no/api/v1/categories" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"code\": \"n\",
    \"parent_id\": 16,
    \"department_id\": 16,
    \"status\": \"active\",
    \"tracking_rules\": {
        \"serial\": \"architecto\",
        \"imei\": \"architecto\",
        \"fifo\": true
    }
}"
const url = new URL(
    "https://api.lagrwms.no/api/v1/categories"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "code": "n",
    "parent_id": 16,
    "department_id": 16,
    "status": "active",
    "tracking_rules": {
        "serial": "architecto",
        "imei": "architecto",
        "fifo": true
    }
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/v1/categories

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

name   string     

Must not be greater than 255 characters. Example: b

code   string     

Must not be greater than 64 characters. Example: n

parent_id   integer  optional    

Example: 16

department_id   integer  optional    

Example: 16

status   string  optional    

Example: active

Must be one of:
  • active
  • inactive
tracking_rules   object  optional    
serial   string  optional    

Example: architecto

imei   string  optional    

Example: architecto

fifo   boolean  optional    

Example: true

settings   object  optional    

Get categories

requires authentication

Example request:
curl --request GET \
    --get "https://api.lagrwms.no/api/v1/categories/architecto" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.lagrwms.no/api/v1/categories/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request   

GET api/v1/categories/{categoryId}

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

categoryId   string     

Example: architecto

VAT types

List VAT types

requires authentication

Example request:
curl --request GET \
    --get "https://api.lagrwms.no/api/v1/vat-types" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"direction\": \"inbound\"
}"
const url = new URL(
    "https://api.lagrwms.no/api/v1/vat-types"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "direction": "inbound"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request   

GET api/v1/vat-types

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

direction   string  optional    

Example: inbound

Must be one of:
  • inbound
  • outbound

Create VAT types

requires authentication

Example request:
curl --request POST \
    "https://api.lagrwms.no/api/v1/vat-types" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"code\": \"bngzmiyvdljnikhw\",
    \"name\": \"a\",
    \"direction\": \"outbound\",
    \"basis_percentage\": 50,
    \"tax_percentage\": 62,
    \"status\": \"active\",
    \"tripletex_id\": 16,
    \"source_system\": \"n\"
}"
const url = new URL(
    "https://api.lagrwms.no/api/v1/vat-types"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "code": "bngzmiyvdljnikhw",
    "name": "a",
    "direction": "outbound",
    "basis_percentage": 50,
    "tax_percentage": 62,
    "status": "active",
    "tripletex_id": 16,
    "source_system": "n"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/v1/vat-types

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

code   string     

Must not be greater than 16 characters. Example: bngzmiyvdljnikhw

name   string     

Must not be greater than 255 characters. Example: a

direction   string     

Example: outbound

Must be one of:
  • inbound
  • outbound
basis_percentage   number  optional    

Must be at least 0. Example: 50

tax_percentage   number  optional    

Must be at least 0. Example: 62

status   string  optional    

Example: active

Must be one of:
  • active
  • inactive
tripletex_id   integer  optional    

Example: 16

source_system   string  optional    

Must not be greater than 64 characters. Example: n

Seed default VAT types

requires authentication

Example request:
curl --request POST \
    "https://api.lagrwms.no/api/v1/vat-types/seed-defaults" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.lagrwms.no/api/v1/vat-types/seed-defaults"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request   

POST api/v1/vat-types/seed-defaults

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get VAT types

requires authentication

Example request:
curl --request GET \
    --get "https://api.lagrwms.no/api/v1/vat-types/architecto" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.lagrwms.no/api/v1/vat-types/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request   

GET api/v1/vat-types/{vatTypeId}

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

vatTypeId   string     

Example: architecto

Currencies

List currencies

requires authentication

Example request:
curl --request GET \
    --get "https://api.lagrwms.no/api/v1/currencies" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.lagrwms.no/api/v1/currencies"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request   

GET api/v1/currencies

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

List exchange rates

requires authentication

Example request:
curl --request GET \
    --get "https://api.lagrwms.no/api/v1/exchange-rates" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"currency\": \"bng\",
    \"limit\": 16
}"
const url = new URL(
    "https://api.lagrwms.no/api/v1/exchange-rates"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "currency": "bng",
    "limit": 16
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request   

GET api/v1/exchange-rates

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

currency   string  optional    

Must be 3 characters. Example: bng

limit   integer  optional    

Must be at least 1. Must not be greater than 100. Example: 16

Get latest exchange rate

requires authentication

Example request:
curl --request GET \
    --get "https://api.lagrwms.no/api/v1/exchange-rates/latest" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"currency\": \"bng\",
    \"date\": \"2026-07-10T21:07:01\"
}"
const url = new URL(
    "https://api.lagrwms.no/api/v1/exchange-rates/latest"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "currency": "bng",
    "date": "2026-07-10T21:07:01"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request   

GET api/v1/exchange-rates/latest

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

currency   string     

Must be 3 characters. Example: bng

date   string  optional    

Must be a valid date. Example: 2026-07-10T21:07:01

Sync exchange rates

requires authentication

Example request:
curl --request POST \
    "https://api.lagrwms.no/api/v1/exchange-rates/sync" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"currencies\": [
        \"bng\"
    ],
    \"observations\": 16
}"
const url = new URL(
    "https://api.lagrwms.no/api/v1/exchange-rates/sync"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "currencies": [
        "bng"
    ],
    "observations": 16
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/v1/exchange-rates/sync

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

currencies   string[]  optional    

Must be 3 characters.

observations   integer  optional    

Must be at least 1. Must not be greater than 120. Example: 16

Inventory

On-hand, reserved, and available quantities per SKU and location.

Levels

List inventory levels

requires authentication

Example request:
curl --request GET \
    --get "https://api.lagrwms.no/api/v1/inventory" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"sku_id\": 16,
    \"location_id\": 16
}"
const url = new URL(
    "https://api.lagrwms.no/api/v1/inventory"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "sku_id": 16,
    "location_id": 16
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request   

GET api/v1/inventory

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

sku_id   integer  optional    

Example: 16

location_id   integer  optional    

Example: 16

Lots

List inventory lots

requires authentication

Example request:
curl --request GET \
    --get "https://api.lagrwms.no/api/v1/inventory-lots" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"sku_id\": 16,
    \"location_id\": 16
}"
const url = new URL(
    "https://api.lagrwms.no/api/v1/inventory-lots"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "sku_id": 16,
    "location_id": 16
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request   

GET api/v1/inventory-lots

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

sku_id   integer  optional    

Example: 16

location_id   integer  optional    

Example: 16

Tracked units

List tracked units

requires authentication

Example request:
curl --request GET \
    --get "https://api.lagrwms.no/api/v1/tracked-units" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"sku_id\": 16,
    \"location_id\": 16
}"
const url = new URL(
    "https://api.lagrwms.no/api/v1/tracked-units"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "sku_id": 16,
    "location_id": 16
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request   

GET api/v1/tracked-units

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

sku_id   integer  optional    

Example: 16

location_id   integer  optional    

Example: 16

Movements

List stock movements

requires authentication

Example request:
curl --request GET \
    --get "https://api.lagrwms.no/api/v1/stock-movements" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"sku_id\": 16,
    \"location_id\": 16
}"
const url = new URL(
    "https://api.lagrwms.no/api/v1/stock-movements"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "sku_id": 16,
    "location_id": 16
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request   

GET api/v1/stock-movements

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

sku_id   integer  optional    

Example: 16

location_id   integer  optional    

Example: 16

Create stock movements

requires authentication

Example request:
curl --request POST \
    "https://api.lagrwms.no/api/v1/stock-movements" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"sku_id\": 16,
    \"location_id\": 16,
    \"movement_type\": \"adjust\",
    \"quantity_delta\": \"architecto\",
    \"unit_cost\": 39,
    \"tracked_unit_ids\": [
        16
    ],
    \"note\": \"architecto\",
    \"source_document_type\": \"n\",
    \"source_document_id\": 16,
    \"source_system\": \"n\",
    \"units\": [
        {
            \"serial_number\": \"g\",
            \"imei\": \"z\",
            \"unit_cost\": 77
        }
    ]
}"
const url = new URL(
    "https://api.lagrwms.no/api/v1/stock-movements"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "sku_id": 16,
    "location_id": 16,
    "movement_type": "adjust",
    "quantity_delta": "architecto",
    "unit_cost": 39,
    "tracked_unit_ids": [
        16
    ],
    "note": "architecto",
    "source_document_type": "n",
    "source_document_id": 16,
    "source_system": "n",
    "units": [
        {
            "serial_number": "g",
            "imei": "z",
            "unit_cost": 77
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/v1/stock-movements

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

sku_id   integer     

Example: 16

location_id   integer     

Example: 16

movement_type   string     

Example: adjust

Must be one of:
  • receive
  • pick
  • ship
  • write_off
  • adjust
  • reserve
  • release_reservation
quantity_delta   string     

Example: architecto

unit_cost   number  optional    

Must be at least 0. Example: 39

units   object[]  optional    
serial_number   string  optional    

Must not be greater than 128 characters. Example: g

imei   string  optional    

Must not be greater than 32 characters. Example: z

unit_cost   number  optional    

Must be at least 0. Example: 77

tracked_unit_ids   integer[]  optional    
note   string  optional    

Example: architecto

source_document_type   string  optional    

Must not be greater than 64 characters. Example: n

source_document_id   integer  optional    

Example: 16

source_system   string  optional    

Must not be greater than 64 characters. Example: n

metadata   object  optional    

Transfers

Create stock transfers

requires authentication

Example request:
curl --request POST \
    "https://api.lagrwms.no/api/v1/stock-transfers" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"sku_id\": 16,
    \"from_location_id\": 16,
    \"to_location_id\": 16,
    \"quantity\": \"architecto\",
    \"note\": \"architecto\"
}"
const url = new URL(
    "https://api.lagrwms.no/api/v1/stock-transfers"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "sku_id": 16,
    "from_location_id": 16,
    "to_location_id": 16,
    "quantity": "architecto",
    "note": "architecto"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/v1/stock-transfers

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

sku_id   integer     

Example: 16

from_location_id   integer     

Example: 16

to_location_id   integer     

The value and from_location_id must be different. Example: 16

quantity   string     

Example: architecto

note   string  optional    

Example: architecto

metadata   object  optional    

Warehouse operations

Shrinkage, damage, and valuation adjustments.

Write-offs

List write-off

requires authentication

Example request:
curl --request GET \
    --get "https://api.lagrwms.no/api/v1/write-offs" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.lagrwms.no/api/v1/write-offs"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request   

GET api/v1/write-offs

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

Create write-off

requires authentication

Example request:
curl --request POST \
    "https://api.lagrwms.no/api/v1/write-offs" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"warehouse_id\": 16,
    \"type\": \"architecto\",
    \"reason_code\": \"architecto\",
    \"notes\": \"architecto\",
    \"lines\": [
        {
            \"sku_id\": 16,
            \"location_id\": 16,
            \"quantity\": \"architecto\",
            \"new_unit_cost\": 39,
            \"tracked_unit_ids\": [
                16
            ],
            \"notes\": \"architecto\"
        }
    ]
}"
const url = new URL(
    "https://api.lagrwms.no/api/v1/write-offs"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "warehouse_id": 16,
    "type": "architecto",
    "reason_code": "architecto",
    "notes": "architecto",
    "lines": [
        {
            "sku_id": 16,
            "location_id": 16,
            "quantity": "architecto",
            "new_unit_cost": 39,
            "tracked_unit_ids": [
                16
            ],
            "notes": "architecto"
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/v1/write-offs

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

warehouse_id   integer     

Example: 16

type   string  optional    

Example: architecto

reason_code   string  optional    

Example: architecto

notes   string  optional    

Example: architecto

lines   object[]     

Must have at least 1 items.

sku_id   integer     

Example: 16

location_id   integer     

Example: 16

quantity   string     

Example: architecto

new_unit_cost   number  optional    

Must be at least 0. Example: 39

tracked_unit_ids   integer[]  optional    
notes   string  optional    

Example: architecto

Get write-off

requires authentication

Example request:
curl --request GET \
    --get "https://api.lagrwms.no/api/v1/write-offs/architecto" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.lagrwms.no/api/v1/write-offs/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request   

GET api/v1/write-offs/{writeOffId}

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

writeOffId   string     

Example: architecto

Complete write-off

requires authentication

Example request:
curl --request POST \
    "https://api.lagrwms.no/api/v1/write-offs/architecto/complete" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.lagrwms.no/api/v1/write-offs/architecto/complete"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request   

POST api/v1/write-offs/{writeOffId}/complete

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

writeOffId   string     

Example: architecto

Cancel write-off

requires authentication

Example request:
curl --request POST \
    "https://api.lagrwms.no/api/v1/write-offs/architecto/cancel" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.lagrwms.no/api/v1/write-offs/architecto/cancel"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request   

POST api/v1/write-offs/{writeOffId}/cancel

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

writeOffId   string     

Example: architecto

Stock takes

List stock take

requires authentication

Example request:
curl --request GET \
    --get "https://api.lagrwms.no/api/v1/stock-takes" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.lagrwms.no/api/v1/stock-takes"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request   

GET api/v1/stock-takes

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

Create stock take

requires authentication

Example request:
curl --request POST \
    "https://api.lagrwms.no/api/v1/stock-takes" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"warehouse_id\": 16,
    \"type\": \"architecto\",
    \"scope\": \"architecto\",
    \"category_ids\": [
        16
    ],
    \"notes\": \"architecto\",
    \"assigned_user_id\": 16,
    \"lines\": [
        {
            \"sku_id\": 16,
            \"location_id\": 16,
            \"notes\": \"architecto\"
        }
    ]
}"
const url = new URL(
    "https://api.lagrwms.no/api/v1/stock-takes"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "warehouse_id": 16,
    "type": "architecto",
    "scope": "architecto",
    "category_ids": [
        16
    ],
    "notes": "architecto",
    "assigned_user_id": 16,
    "lines": [
        {
            "sku_id": 16,
            "location_id": 16,
            "notes": "architecto"
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/v1/stock-takes

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

warehouse_id   integer     

Example: 16

type   string  optional    

Example: architecto

scope   string  optional    

Example: architecto

category_ids   integer[]  optional    
notes   string  optional    

Example: architecto

assigned_user_id   integer  optional    

Example: 16

lines   object[]  optional    

Must have at least 1 items.

sku_id   integer  optional    

This field is required when lines is present. Example: 16

location_id   integer  optional    

This field is required when lines is present. Example: 16

notes   string  optional    

Example: architecto

Get stock take

requires authentication

Example request:
curl --request GET \
    --get "https://api.lagrwms.no/api/v1/stock-takes/architecto" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.lagrwms.no/api/v1/stock-takes/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request   

GET api/v1/stock-takes/{stockTakeId}

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

stockTakeId   string     

Example: architecto

Start stock take

requires authentication

Example request:
curl --request POST \
    "https://api.lagrwms.no/api/v1/stock-takes/architecto/start" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.lagrwms.no/api/v1/stock-takes/architecto/start"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request   

POST api/v1/stock-takes/{stockTakeId}/start

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

stockTakeId   string     

Example: architecto

Scan during stock take

requires authentication

Example request:
curl --request POST \
    "https://api.lagrwms.no/api/v1/stock-takes/architecto/scan" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"scan\": \"b\",
    \"location_id\": 16,
    \"increment\": true
}"
const url = new URL(
    "https://api.lagrwms.no/api/v1/stock-takes/architecto/scan"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "scan": "b",
    "location_id": 16,
    "increment": true
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/v1/stock-takes/{stockTakeId}/scan

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

stockTakeId   string     

Example: architecto

Body Parameters

scan   string     

Must not be greater than 128 characters. Example: b

location_id   integer  optional    

Example: 16

increment   boolean  optional    

Example: true

Record stock take count

requires authentication

Example request:
curl --request POST \
    "https://api.lagrwms.no/api/v1/stock-takes/architecto/lines/architecto/count" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"counted_quantity\": \"architecto\",
    \"notes\": \"architecto\"
}"
const url = new URL(
    "https://api.lagrwms.no/api/v1/stock-takes/architecto/lines/architecto/count"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "counted_quantity": "architecto",
    "notes": "architecto"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/v1/stock-takes/{stockTakeId}/lines/{lineId}/count

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

stockTakeId   string     

Example: architecto

lineId   string     

Example: architecto

Body Parameters

counted_quantity   string     

Example: architecto

notes   string  optional    

Example: architecto

Complete stock take

requires authentication

Example request:
curl --request POST \
    "https://api.lagrwms.no/api/v1/stock-takes/architecto/complete" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.lagrwms.no/api/v1/stock-takes/architecto/complete"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request   

POST api/v1/stock-takes/{stockTakeId}/complete

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

stockTakeId   string     

Example: architecto

Cancel stock take

requires authentication

Example request:
curl --request POST \
    "https://api.lagrwms.no/api/v1/stock-takes/architecto/cancel" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.lagrwms.no/api/v1/stock-takes/architecto/cancel"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request   

POST api/v1/stock-takes/{stockTakeId}/cancel

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

stockTakeId   string     

Example: architecto

Purchasing

Suppliers and inbound purchase orders.

Distributors

List distributors

requires authentication

Example request:
curl --request GET \
    --get "https://api.lagrwms.no/api/v1/distributors" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.lagrwms.no/api/v1/distributors"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request   

GET api/v1/distributors

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

Create distributors

requires authentication

Example request:
curl --request POST \
    "https://api.lagrwms.no/api/v1/distributors" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"distributor_number\": \"n\",
    \"address_line1\": \"g\",
    \"address_line2\": \"z\",
    \"postal_code\": \"m\",
    \"city\": \"i\",
    \"country\": \"yv\",
    \"phone\": \"d\",
    \"contact_email\": \"jermaine.tillman@example.org\",
    \"organization_number\": \"h\",
    \"website\": \"w\",
    \"notes\": \"architecto\",
    \"status\": \"inactive\",
    \"default_currency\": \"ngz\"
}"
const url = new URL(
    "https://api.lagrwms.no/api/v1/distributors"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "distributor_number": "n",
    "address_line1": "g",
    "address_line2": "z",
    "postal_code": "m",
    "city": "i",
    "country": "yv",
    "phone": "d",
    "contact_email": "jermaine.tillman@example.org",
    "organization_number": "h",
    "website": "w",
    "notes": "architecto",
    "status": "inactive",
    "default_currency": "ngz"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/v1/distributors

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

name   string     

Must not be greater than 255 characters. Example: b

distributor_number   string  optional    

Must not be greater than 32 characters. Example: n

address_line1   string  optional    

Must not be greater than 255 characters. Example: g

address_line2   string  optional    

Must not be greater than 255 characters. Example: z

postal_code   string  optional    

Must not be greater than 32 characters. Example: m

city   string  optional    

Must not be greater than 255 characters. Example: i

country   string  optional    

Must be 2 characters. Example: yv

phone   string  optional    

Must not be greater than 64 characters. Example: d

contact_email   string  optional    

Must be a valid email address. Must not be greater than 255 characters. Example: jermaine.tillman@example.org

organization_number   string  optional    

Must not be greater than 32 characters. Example: h

website   string  optional    

Must not be greater than 255 characters. Example: w

notes   string  optional    

Example: architecto

status   string  optional    

Example: inactive

Must be one of:
  • active
  • inactive
default_currency   string  optional    

Must be 3 characters. Example: ngz

Get distributors

requires authentication

Example request:
curl --request GET \
    --get "https://api.lagrwms.no/api/v1/distributors/architecto" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.lagrwms.no/api/v1/distributors/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request   

GET api/v1/distributors/{distributorId}

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

distributorId   string     

Example: architecto

Purchase orders

List purchase order

requires authentication

Example request:
curl --request GET \
    --get "https://api.lagrwms.no/api/v1/purchase-orders" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.lagrwms.no/api/v1/purchase-orders"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request   

GET api/v1/purchase-orders

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

Create purchase order

requires authentication

Example request:
curl --request POST \
    "https://api.lagrwms.no/api/v1/purchase-orders" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"warehouse_id\": 16,
    \"distributor_id\": 16,
    \"vendor_name\": \"n\",
    \"reference\": \"g\",
    \"expected_at\": \"2026-07-10T21:07:01\",
    \"notes\": \"architecto\",
    \"currency_code\": \"ngz\",
    \"lines\": [
        {
            \"sku_id\": 16,
            \"quantity_ordered\": \"architecto\",
            \"unit_cost\": 39
        }
    ]
}"
const url = new URL(
    "https://api.lagrwms.no/api/v1/purchase-orders"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "warehouse_id": 16,
    "distributor_id": 16,
    "vendor_name": "n",
    "reference": "g",
    "expected_at": "2026-07-10T21:07:01",
    "notes": "architecto",
    "currency_code": "ngz",
    "lines": [
        {
            "sku_id": 16,
            "quantity_ordered": "architecto",
            "unit_cost": 39
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/v1/purchase-orders

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

warehouse_id   integer     

Example: 16

distributor_id   integer  optional    

Example: 16

vendor_name   string  optional    

Must not be greater than 255 characters. Example: n

reference   string  optional    

Must not be greater than 255 characters. Example: g

expected_at   string  optional    

Must be a valid date. Example: 2026-07-10T21:07:01

notes   string  optional    

Example: architecto

currency_code   string  optional    

Must be 3 characters. Example: ngz

lines   object[]     

Must have at least 1 items.

sku_id   integer     

Example: 16

quantity_ordered   string     

Example: architecto

unit_cost   number  optional    

Must be at least 0. Example: 39

Get purchase order

requires authentication

Example request:
curl --request GET \
    --get "https://api.lagrwms.no/api/v1/purchase-orders/architecto" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.lagrwms.no/api/v1/purchase-orders/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request   

GET api/v1/purchase-orders/{purchaseOrderId}

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

purchaseOrderId   string     

Example: architecto

Submit purchase order

requires authentication

Example request:
curl --request POST \
    "https://api.lagrwms.no/api/v1/purchase-orders/architecto/submit" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.lagrwms.no/api/v1/purchase-orders/architecto/submit"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request   

POST api/v1/purchase-orders/{purchaseOrderId}/submit

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

purchaseOrderId   string     

Example: architecto

Cancel purchase order

requires authentication

Example request:
curl --request POST \
    "https://api.lagrwms.no/api/v1/purchase-orders/architecto/cancel" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.lagrwms.no/api/v1/purchase-orders/architecto/cancel"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request   

POST api/v1/purchase-orders/{purchaseOrderId}/cancel

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

purchaseOrderId   string     

Example: architecto

Receive purchase order line

requires authentication

Example request:
curl --request POST \
    "https://api.lagrwms.no/api/v1/purchase-orders/architecto/lines/architecto/receive" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"location_id\": 16,
    \"quantity\": \"architecto\",
    \"unit_cost\": 39,
    \"note\": \"architecto\",
    \"units\": [
        {
            \"serial_number\": \"n\",
            \"imei\": \"g\"
        }
    ]
}"
const url = new URL(
    "https://api.lagrwms.no/api/v1/purchase-orders/architecto/lines/architecto/receive"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "location_id": 16,
    "quantity": "architecto",
    "unit_cost": 39,
    "note": "architecto",
    "units": [
        {
            "serial_number": "n",
            "imei": "g"
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/v1/purchase-orders/{purchaseOrderId}/lines/{lineId}/receive

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

purchaseOrderId   string     

Example: architecto

lineId   string     

Example: architecto

Body Parameters

location_id   integer     

Example: 16

quantity   string     

Example: architecto

unit_cost   number  optional    

Must be at least 0. Example: 39

units   object[]  optional    
serial_number   string  optional    

Must not be greater than 128 characters. Example: n

imei   string  optional    

Must not be greater than 32 characters. Example: g

note   string  optional    

Example: architecto

Sales

Customers and outbound sales order fulfillment.

Customers

List customers

requires authentication

Example request:
curl --request GET \
    --get "https://api.lagrwms.no/api/v1/customers" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.lagrwms.no/api/v1/customers"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request   

GET api/v1/customers

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

Create customers

requires authentication

Example request:
curl --request POST \
    "https://api.lagrwms.no/api/v1/customers" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"customer_number\": \"n\",
    \"address_line1\": \"g\",
    \"address_line2\": \"z\",
    \"postal_code\": \"m\",
    \"city\": \"i\",
    \"country\": \"yv\",
    \"phone\": \"d\",
    \"email\": \"jermaine.tillman@example.org\",
    \"organization_number\": \"h\",
    \"status\": \"inactive\"
}"
const url = new URL(
    "https://api.lagrwms.no/api/v1/customers"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "customer_number": "n",
    "address_line1": "g",
    "address_line2": "z",
    "postal_code": "m",
    "city": "i",
    "country": "yv",
    "phone": "d",
    "email": "jermaine.tillman@example.org",
    "organization_number": "h",
    "status": "inactive"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/v1/customers

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

name   string     

Must not be greater than 255 characters. Example: b

customer_number   string  optional    

Must not be greater than 32 characters. Example: n

address_line1   string  optional    

Must not be greater than 255 characters. Example: g

address_line2   string  optional    

Must not be greater than 255 characters. Example: z

postal_code   string  optional    

Must not be greater than 32 characters. Example: m

city   string  optional    

Must not be greater than 255 characters. Example: i

country   string  optional    

Must be 2 characters. Example: yv

phone   string  optional    

Must not be greater than 64 characters. Example: d

email   string  optional    

Must be a valid email address. Must not be greater than 255 characters. Example: jermaine.tillman@example.org

organization_number   string  optional    

Must not be greater than 32 characters. Example: h

status   string  optional    

Example: inactive

Must be one of:
  • active
  • inactive

Get customers

requires authentication

Example request:
curl --request GET \
    --get "https://api.lagrwms.no/api/v1/customers/architecto" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.lagrwms.no/api/v1/customers/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request   

GET api/v1/customers/{customerId}

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

customerId   string     

Example: architecto

Update customers

requires authentication

Example request:
curl --request PUT \
    "https://api.lagrwms.no/api/v1/customers/architecto" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"address_line1\": \"n\",
    \"address_line2\": \"g\",
    \"postal_code\": \"z\",
    \"city\": \"m\",
    \"country\": \"iy\",
    \"phone\": \"v\",
    \"email\": \"jdach@example.org\",
    \"organization_number\": \"i\",
    \"status\": \"active\"
}"
const url = new URL(
    "https://api.lagrwms.no/api/v1/customers/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "address_line1": "n",
    "address_line2": "g",
    "postal_code": "z",
    "city": "m",
    "country": "iy",
    "phone": "v",
    "email": "jdach@example.org",
    "organization_number": "i",
    "status": "active"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PUT api/v1/customers/{customerId}

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

customerId   string     

Example: architecto

Body Parameters

name   string  optional    

Must not be greater than 255 characters. Example: b

address_line1   string  optional    

Must not be greater than 255 characters. Example: n

address_line2   string  optional    

Must not be greater than 255 characters. Example: g

postal_code   string  optional    

Must not be greater than 32 characters. Example: z

city   string  optional    

Must not be greater than 255 characters. Example: m

country   string  optional    

Must be 2 characters. Example: iy

phone   string  optional    

Must not be greater than 64 characters. Example: v

email   string  optional    

Must be a valid email address. Must not be greater than 255 characters. Example: jdach@example.org

organization_number   string  optional    

Must not be greater than 32 characters. Example: i

status   string  optional    

Example: active

Must be one of:
  • active
  • inactive

Sales orders

List sales order

requires authentication

Example request:
curl --request GET \
    --get "https://api.lagrwms.no/api/v1/sales-orders" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.lagrwms.no/api/v1/sales-orders"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request   

GET api/v1/sales-orders

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

Create sales order

requires authentication

Example request:
curl --request POST \
    "https://api.lagrwms.no/api/v1/sales-orders" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"warehouse_id\": 16,
    \"customer_name\": \"n\",
    \"reference\": \"g\",
    \"notes\": \"architecto\",
    \"lines\": [
        {
            \"sku_id\": 16,
            \"quantity_ordered\": \"architecto\"
        }
    ]
}"
const url = new URL(
    "https://api.lagrwms.no/api/v1/sales-orders"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "warehouse_id": 16,
    "customer_name": "n",
    "reference": "g",
    "notes": "architecto",
    "lines": [
        {
            "sku_id": 16,
            "quantity_ordered": "architecto"
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/v1/sales-orders

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

warehouse_id   integer     

Example: 16

customer_name   string     

Must not be greater than 255 characters. Example: n

reference   string  optional    

Must not be greater than 255 characters. Example: g

notes   string  optional    

Example: architecto

lines   object[]     

Must have at least 1 items.

sku_id   integer     

Example: 16

quantity_ordered   string     

Example: architecto

Get sales order

requires authentication

Example request:
curl --request GET \
    --get "https://api.lagrwms.no/api/v1/sales-orders/architecto" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.lagrwms.no/api/v1/sales-orders/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request   

GET api/v1/sales-orders/{salesOrderId}

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

salesOrderId   string     

Example: architecto

Confirm and reserve sales order

requires authentication

Example request:
curl --request POST \
    "https://api.lagrwms.no/api/v1/sales-orders/architecto/confirm" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"allocations\": [
        {
            \"line_id\": 16,
            \"location_id\": 16,
            \"quantity\": \"architecto\"
        }
    ]
}"
const url = new URL(
    "https://api.lagrwms.no/api/v1/sales-orders/architecto/confirm"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "allocations": [
        {
            "line_id": 16,
            "location_id": 16,
            "quantity": "architecto"
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/v1/sales-orders/{salesOrderId}/confirm

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

salesOrderId   string     

Example: architecto

Body Parameters

allocations   object[]     

Must have at least 1 items.

line_id   integer     

Example: 16

location_id   integer     

Example: 16

quantity   string     

Example: architecto

Cancel sales order

requires authentication

Example request:
curl --request POST \
    "https://api.lagrwms.no/api/v1/sales-orders/architecto/cancel" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.lagrwms.no/api/v1/sales-orders/architecto/cancel"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request   

POST api/v1/sales-orders/{salesOrderId}/cancel

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

salesOrderId   string     

Example: architecto

Pick allocated stock

requires authentication

Example request:
curl --request POST \
    "https://api.lagrwms.no/api/v1/sales-orders/architecto/allocations/architecto/pick" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"quantity\": \"architecto\",
    \"note\": \"architecto\"
}"
const url = new URL(
    "https://api.lagrwms.no/api/v1/sales-orders/architecto/allocations/architecto/pick"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "quantity": "architecto",
    "note": "architecto"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/v1/sales-orders/{salesOrderId}/allocations/{allocationId}/pick

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

salesOrderId   string     

Example: architecto

allocationId   string     

Example: architecto

Body Parameters

quantity   string     

Example: architecto

note   string  optional    

Example: architecto

Ship picked stock

requires authentication

Example request:
curl --request POST \
    "https://api.lagrwms.no/api/v1/sales-orders/architecto/allocations/architecto/ship" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"quantity\": \"architecto\",
    \"tracked_unit_ids\": [
        16
    ],
    \"note\": \"architecto\"
}"
const url = new URL(
    "https://api.lagrwms.no/api/v1/sales-orders/architecto/allocations/architecto/ship"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "quantity": "architecto",
    "tracked_unit_ids": [
        16
    ],
    "note": "architecto"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/v1/sales-orders/{salesOrderId}/allocations/{allocationId}/ship

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

salesOrderId   string     

Example: architecto

allocationId   string     

Example: architecto

Body Parameters

quantity   string     

Example: architecto

tracked_unit_ids   integer[]  optional    
note   string  optional    

Example: architecto

Integrations

ERP connections, credentials, and Tripletex sync actions. Requires integrations.manage.

Tripletex sync

Tripletex webhook guide

requires authentication

Example request:
curl --request GET \
    --get "https://api.lagrwms.no/api/v1/integrations/tripletex/webhook-guide" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.lagrwms.no/api/v1/integrations/tripletex/webhook-guide"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request   

GET api/v1/integrations/tripletex/webhook-guide

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

Sync products from Tripletex

requires authentication

Example request:
curl --request POST \
    "https://api.lagrwms.no/api/v1/integrations/tripletex/sync-products" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"connection_id\": 16
}"
const url = new URL(
    "https://api.lagrwms.no/api/v1/integrations/tripletex/sync-products"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "connection_id": 16
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/v1/integrations/tripletex/sync-products

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

connection_id   integer  optional    

Example: 16

Inbound sync (all entities)

requires authentication

Example request:
curl --request POST \
    "https://api.lagrwms.no/api/v1/integrations/tripletex/sync-all" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.lagrwms.no/api/v1/integrations/tripletex/sync-all"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request   

POST api/v1/integrations/tripletex/sync-all

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

Two-way reconciliation

requires authentication

Example request:
curl --request POST \
    "https://api.lagrwms.no/api/v1/integrations/tripletex/reconcile" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.lagrwms.no/api/v1/integrations/tripletex/reconcile"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request   

POST api/v1/integrations/tripletex/reconcile

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

Push products to Tripletex

requires authentication

Example request:
curl --request POST \
    "https://api.lagrwms.no/api/v1/integrations/tripletex/push-products" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"connection_id\": 16,
    \"product_id\": 16
}"
const url = new URL(
    "https://api.lagrwms.no/api/v1/integrations/tripletex/push-products"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "connection_id": 16,
    "product_id": 16
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/v1/integrations/tripletex/push-products

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

connection_id   integer  optional    

Example: 16

product_id   integer  optional    

Example: 16

Sync sales orders from Tripletex

requires authentication

Example request:
curl --request POST \
    "https://api.lagrwms.no/api/v1/integrations/tripletex/sync-orders" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"connection_id\": 16
}"
const url = new URL(
    "https://api.lagrwms.no/api/v1/integrations/tripletex/sync-orders"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "connection_id": 16
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/v1/integrations/tripletex/sync-orders

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

connection_id   integer  optional    

Example: 16

Sync suppliers from Tripletex

requires authentication

Example request:
curl --request POST \
    "https://api.lagrwms.no/api/v1/integrations/tripletex/sync-suppliers" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"connection_id\": 16
}"
const url = new URL(
    "https://api.lagrwms.no/api/v1/integrations/tripletex/sync-suppliers"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "connection_id": 16
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/v1/integrations/tripletex/sync-suppliers

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

connection_id   integer  optional    

Example: 16

Sync customers from Tripletex

requires authentication

Example request:
curl --request POST \
    "https://api.lagrwms.no/api/v1/integrations/tripletex/sync-customers" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"connection_id\": 16
}"
const url = new URL(
    "https://api.lagrwms.no/api/v1/integrations/tripletex/sync-customers"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "connection_id": 16
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/v1/integrations/tripletex/sync-customers

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

connection_id   integer  optional    

Example: 16

Sync Employees

requires authentication

Example request:
curl --request POST \
    "https://api.lagrwms.no/api/v1/integrations/tripletex/sync-employees" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"connection_id\": 16
}"
const url = new URL(
    "https://api.lagrwms.no/api/v1/integrations/tripletex/sync-employees"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "connection_id": 16
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/v1/integrations/tripletex/sync-employees

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

connection_id   integer  optional    

Example: 16

List webhook events

requires authentication

Example request:
curl --request GET \
    --get "https://api.lagrwms.no/api/v1/integrations/webhook-events" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"connection_id\": 16,
    \"status\": \"n\",
    \"event\": \"g\",
    \"per_page\": 16
}"
const url = new URL(
    "https://api.lagrwms.no/api/v1/integrations/webhook-events"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "connection_id": 16,
    "status": "n",
    "event": "g",
    "per_page": 16
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request   

GET api/v1/integrations/webhook-events

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

connection_id   integer  optional    

Example: 16

status   string  optional    

Must not be greater than 32 characters. Example: n

event   string  optional    

Must not be greater than 128 characters. Example: g

per_page   integer  optional    

Must be at least 1. Must not be greater than 100. Example: 16

List webhook subscriptions

requires authentication

Example request:
curl --request GET \
    --get "https://api.lagrwms.no/api/v1/integrations/tripletex/webhook-subscriptions" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.lagrwms.no/api/v1/integrations/tripletex/webhook-subscriptions"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request   

GET api/v1/integrations/tripletex/webhook-subscriptions

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

Update webhook subscriptions

requires authentication

Example request:
curl --request PUT \
    "https://api.lagrwms.no/api/v1/integrations/tripletex/webhook-subscriptions" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"connection_id\": 16,
    \"events\": [
        \"architecto\"
    ]
}"
const url = new URL(
    "https://api.lagrwms.no/api/v1/integrations/tripletex/webhook-subscriptions"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "connection_id": 16,
    "events": [
        "architecto"
    ]
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PUT api/v1/integrations/tripletex/webhook-subscriptions

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

connection_id   integer  optional    

Example: 16

events   string[]  optional    

Connections

List integration connection

requires authentication

Example request:
curl --request GET \
    --get "https://api.lagrwms.no/api/v1/integrations" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.lagrwms.no/api/v1/integrations"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request   

GET api/v1/integrations

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

Create integration connection

requires authentication

Example request:
curl --request POST \
    "https://api.lagrwms.no/api/v1/integrations" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"provider\": \"n\",
    \"status\": \"inactive\"
}"
const url = new URL(
    "https://api.lagrwms.no/api/v1/integrations"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "provider": "n",
    "status": "inactive"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/v1/integrations

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

name   string     

Must not be greater than 255 characters. Example: b

provider   string     

Must not be greater than 64 characters. Example: n

status   string  optional    

Example: inactive

Must be one of:
  • active
  • inactive
  • error
credentials   object  optional    
settings   object  optional    

Get integration connection

requires authentication

Example request:
curl --request GET \
    --get "https://api.lagrwms.no/api/v1/integrations/architecto" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.lagrwms.no/api/v1/integrations/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request   

GET api/v1/integrations/{connectionId}

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

connectionId   string     

Example: architecto

Update integration connection

requires authentication

Example request:
curl --request PUT \
    "https://api.lagrwms.no/api/v1/integrations/architecto" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"status\": \"error\"
}"
const url = new URL(
    "https://api.lagrwms.no/api/v1/integrations/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "status": "error"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PUT api/v1/integrations/{connectionId}

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

connectionId   string     

Example: architecto

Body Parameters

name   string  optional    

Must not be greater than 255 characters. Example: b

status   string  optional    

Example: error

Must be one of:
  • active
  • inactive
  • error
credentials   object  optional    
settings   object  optional    

Test integration connection

requires authentication

Example request:
curl --request POST \
    "https://api.lagrwms.no/api/v1/integrations/architecto/test" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.lagrwms.no/api/v1/integrations/architecto/test"
);

const headers = {
    "Authorization": "Bearer {YOUR_BEARER_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request   

POST api/v1/integrations/{connectionId}/test

Headers

Authorization        

Example: Bearer {YOUR_BEARER_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

connectionId   string     

Example: architecto

Webhooks

Incoming events from Tripletex (Bearer secret, not user token).

Tripletex webhook receiver

Inbound events from Tripletex. Authenticated via webhook signature middleware, not Bearer tokens.

Example request:
curl --request POST \
    "https://api.lagrwms.no/api/v1/webhooks/tripletex/demo" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.lagrwms.no/api/v1/webhooks/tripletex/demo"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request   

POST api/v1/webhooks/tripletex/{tenantSlug}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

tenantSlug   string     

Tenant slug configured for the webhook. Example: demo