/api/healthPublikHealth check
Publik readiness. Ingen API-nyckel.
Request
Ingen request body
Response
Tjänsten är uppe
{
"ok": true,
"service": "pulpo-core",
"product": "PIM/DAM",
"version": "0.1.0"
}PIM / DAM · API Reference
Core exponerar katalog, media, kategorier, brands, etiketter och rabatter. Shoppar använder shallow/full-produkter; Hold synkar via sync-vy.
{
"ok": false,
"error": "Validation failed",
"issues": [
{
"path": [
"sku"
],
"message": "Required"
}
]
}/api/healthPublikPublik readiness. Ingen API-nyckel.
Ingen request body
Tjänsten är uppe
{
"ok": true,
"service": "pulpo-core",
"product": "PIM/DAM",
"version": "0.1.0"
}/api/productsAuthReturnerar ProductShallow[]. Innehåller inte lång description, attributes eller full variants[].
| Namn | In | Typ | Beskrivning |
|---|---|---|---|
published | query | 1 | Endast published (butik) |
categoryId | query | string | Filtrera på kategori |
brandId | query | string | Filtrera på varumärke |
labelId | query | string | Filtrera på etikett |
q | query | string | Sök SKU / namn / streckkod / brand |
sync | query | 1 | Hold sync-rader (annan payload) |
sku | query | string | Full produkt + variant via SKU |
Ingen request body
Shallow-lista
{
"ok": true,
"tenantId": "trirebels",
"view": "shallow",
"products": [
{
"id": "prd_demo1",
"sku": "DEMO-1",
"name": "Demo-produkt",
"type": "simple",
"status": "published",
"brand": "Trirebels",
"brandId": "brd_trirebels",
"priceOre": 29900,
"priceInclOre": 37375,
"vatRatePercent": 25,
"currency": "SEK",
"categoryIds": [
"cat_apparel"
],
"labelIds": [],
"labels": [],
"primaryAssetId": "ast_…",
"updatedAt": "2026-09-01T12:00:00.000Z"
}
]
}/api/products/:idAuthHela produkten inkl. priceInclOre på produkt och varianter.
| Namn | In | Typ | Beskrivning |
|---|---|---|---|
id* | path | string | Produkt-id |
Ingen request body
Full produkt
{
"ok": true,
"tenantId": "trirebels",
"view": "full",
"product": {
"id": "prd_demo1",
"sku": "DEMO-1",
"name": "Demo-produkt",
"description": "Längre produkttext…",
"type": "simple",
"status": "published",
"brandId": "brd_trirebels",
"priceOre": 29900,
"priceInclOre": 37375,
"vatRatePercent": 25,
"attributes": [
{
"key": "material",
"value": "Polyester"
}
],
"variants": []
}
}/api/productsAuthpriceOre är exkl. moms.
| Fält | Typ | Beskrivning |
|---|---|---|
sku* | string | Unik SKU |
name* | string | Visningsnamn |
brandId | string | Varumärkes-id |
status | draft | published | archived | Publiceringsstatus |
type | simple | variable | Produkttyp |
priceOre | number | Pris exkl. moms i öre |
vatRatePercent | number | Momssats |
{
"sku": "DEMO-4",
"name": "Ny produkt",
"brandId": "brd_trirebels",
"status": "draft",
"type": "simple",
"priceOre": 19900,
"vatRatePercent": 25
}Skapad
{
"ok": true,
"product": {
"id": "prd_new",
"sku": "DEMO-4",
"name": "Ny produkt",
"status": "draft",
"priceOre": 19900,
"priceInclOre": 24875
}
}/api/discounts/lookupAuthCore applicerar inte rabatten på en korg — shop/Flow använder effect + appliesTo.
| Namn | In | Typ | Beskrivning |
|---|---|---|---|
code* | query | string | Rabattkod |
Ingen request body
Träff och giltig nu
{
"ok": true,
"match": true,
"code": "SOMMAR25",
"inEffect": true,
"reasons": [],
"stackable": false,
"effect": {
"kind": "percent",
"percent": 15
},
"appliesTo": {
"kind": "brands",
"label": "Varumärken",
"all": false,
"brandIds": [
"brd_…"
]
}
}/api/categoriesAuth| Namn | In | Typ | Beskrivning |
|---|---|---|---|
roots | query | 1 | Endast huvudkategorier |
parentId | query | string | Direkta barn till parent |
Ingen request body
Kategorilista
{
"ok": true,
"view": "roots",
"categories": [
{
"id": "cat_apparel",
"name": "Apparel",
"slug": "apparel",
"parentId": null
}
]
}/api/assetsAuthRegistrera metadata + URL. Filuppladdning sker primärt via admin UI.
{
"title": "Hero",
"filename": "hero.jpg",
"url": "/media/ab/cd/hero-….jpg",
"mimeType": "image/jpeg",
"kind": "image"
}Asset registrerad
{
"ok": true,
"asset": {
"id": "ast_…",
"title": "Hero",
"url": "/media/ab/cd/hero-….jpg",
"kind": "image"
}
}