Aller au contenu principal
Connexion
Apus Platform
Sommaire de la documentation
products

Products

The product catalog — items you buy, make, stock or sell — plus categories, units of measure and price lists. Master data shared by inventory, sales, purchasing and finance. Keep an external PIM or POS in sync with these endpoints.

GET/v1/productsScope: products:read

List products

Returns a cursor-paginated list of products. Use updated_since for incremental sync.

Query parameters
limitoptionalintegerPage size, 1–200 (default 50).
cursoroptionalstringPagination cursor from a previous response.
updated_sinceoptionalstringRFC 3339 timestamp; return items changed after it.
categoryoptionalstringFilter by category code.
activeoptionalbooleanFilter by active status.
Request
curl "https://api.apusplatform.com/v1/products" \
  -H "Authorization: Bearer $APUS_TOKEN"
Response
{
  "data": [
    {
      "id": "prd_1a2b",
      "sku": "STEEL-BRKT-08",
      "name": "Steel bracket 8mm",
      "unit": "pcs",
      "category": "raw-material",
      "price": {
        "amount": 12500,
        "currency": "VND"
      },
      "active": true,
      "updated_at": "2026-07-12T04:20:11Z"
    }
  ],
  "has_more": true,
  "next_cursor": "crsr_9a10"
}
POST/v1/productsScope: products:write

Create a product

Creates a product. sku must be unique.

Body
skurequiredstringUnique stock-keeping unit.
namerequiredstringDisplay name.
unitrequiredstringUnit of measure, e.g. pcs, kg.
categoryoptionalstringCategory code.
priceoptionalobject{ amount (minor units), currency }.
Request
curl -X POST "https://api.apusplatform.com/v1/products" \
  -H "Authorization: Bearer $APUS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "sku": "STEEL-BRKT-08",
    "name": "Steel bracket 8mm",
    "unit": "pcs",
    "category": "raw-material",
    "price": {
      "amount": 12500,
      "currency": "VND"
    }
  }'
Response
{
  "id": "prd_1a2b",
  "sku": "STEEL-BRKT-08",
  "created_at": "2026-07-20T02:10:00Z"
}
GET/v1/products/{id}Scope: products:read

Retrieve a product

Returns a single product by its id, or by sku (prefix the value with sku_).

Path parameters
idrequiredstringProduct id.
Request
curl "https://api.apusplatform.com/v1/products/prd_1a2b" \
  -H "Authorization: Bearer $APUS_TOKEN"
Response
{
  "id": "prd_1a2b",
  "sku": "STEEL-BRKT-08",
  "name": "Steel bracket 8mm",
  "unit": "pcs",
  "category": "raw-material",
  "price": {
    "amount": 12500,
    "currency": "VND"
  },
  "active": true,
  "updated_at": "2026-07-12T04:20:11Z"
}
PATCH/v1/products/{id}Scope: products:write

Update a product

Updates mutable fields of a product. Only supplied fields change.

Path parameters
idrequiredstringProduct id.
Body
nameoptionalstringDisplay name.
categoryoptionalstringCategory code.
priceoptionalobject{ amount (minor units), currency }.
activeoptionalbooleanActivate or archive the product.
Request
curl -X PATCH "https://api.apusplatform.com/v1/products/prd_1a2b" \
  -H "Authorization: Bearer $APUS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "price": {
      "amount": 13000,
      "currency": "VND"
    }
  }'
Response
{
  "id": "prd_1a2b",
  "sku": "STEEL-BRKT-08",
  "updated_at": "2026-07-20T02:12:00Z"
}
DELETE/v1/products/{id}Scope: products:write

Archive a product

Archives a product (soft delete). It stays referenced by historical documents.

Path parameters
idrequiredstringProduct id.
Request
curl -X DELETE "https://api.apusplatform.com/v1/products/{id}" \
  -H "Authorization: Bearer $APUS_TOKEN"
Response
HTTP/1.1 204 No Content
GET/v1/products/product-categoriesScope: products:read

List categories

Returns the product category tree.

No parameters.

Request
curl "https://api.apusplatform.com/v1/products/product-categories" \
  -H "Authorization: Bearer $APUS_TOKEN"
Response
{
  "data": [
    {
      "code": "raw-material",
      "name": "Raw material",
      "parent": null
    },
    {
      "code": "finished-good",
      "name": "Finished good",
      "parent": null
    }
  ]
}
POST/v1/products/product-categoriesScope: products:write

Create a category

Creates a product category, optionally nested under a parent.

Body
coderequiredstringUnique category code.
namerequiredstringDisplay name.
parentoptionalstringParent category code.
Request
curl -X POST "https://api.apusplatform.com/v1/products/product-categories" \
  -H "Authorization: Bearer $APUS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "code": "fasteners",
    "name": "Fasteners",
    "parent": "raw-material"
  }'
Response
{
  "code": "fasteners",
  "name": "Fasteners",
  "parent": "raw-material"
}
GET/v1/products/unitsScope: products:read

List units of measure

Returns configured units of measure and their conversion factors.

No parameters.

Request
curl "https://api.apusplatform.com/v1/products/units" \
  -H "Authorization: Bearer $APUS_TOKEN"
Response
{
  "data": [
    {
      "code": "pcs",
      "name": "Pieces",
      "base": "pcs",
      "factor": 1
    },
    {
      "code": "box",
      "name": "Box (12)",
      "base": "pcs",
      "factor": 12
    }
  ]
}
GET/v1/products/price-listsScope: products:read

List price lists

Returns price lists (e.g. retail, wholesale, per-customer).

Query parameters
currencyoptionalstringFilter by currency.
Request
curl "https://api.apusplatform.com/v1/products/price-lists" \
  -H "Authorization: Bearer $APUS_TOKEN"
Response
{
  "data": [
    {
      "id": "pl_retail",
      "name": "Retail",
      "currency": "VND",
      "active": true
    }
  ]
}
GET/v1/products/price-lists/{id}Scope: products:read

Retrieve a price list

Returns a price list with its per-SKU prices.

Path parameters
idrequiredstringPrice list id.
Request
curl "https://api.apusplatform.com/v1/products/price-lists/pl_retail" \
  -H "Authorization: Bearer $APUS_TOKEN"
Response
{
  "id": "pl_retail",
  "name": "Retail",
  "currency": "VND",
  "items": [
    {
      "sku": "STEEL-BRKT-08",
      "price": {
        "amount": 15000,
        "currency": "VND"
      }
    }
  ]
}

Prêt à intégrer ?

Créez un client API dans la Console de compte pour obtenir vos identifiants, ou échangez avec un ingénieur d'intégration sur votre cas d'usage.

noindex