Sari la conținut

Produse

Produse din catalog. Fiecare produs identifică un SKU care poate fi stocat, pickat și expediat.

Identificator

Tabela de produse folosește product_id ca cheie primară (nu id). Valoarea pe care o pui în {id} din cale este product_id, iar răspunsurile și referințele din alte resurse (stoc, linii de comandă) folosesc tot product_id.

Endpoint-uri

MetodăCaleDescriere
GET/api/v1/productsListă paginată; filtre status, sku, barcode, seller_id, search.
GET/api/v1/products/{id}Citește un produs (cu furnizorul și stocul pe locații).
POST/api/v1/productsCreează un produs.
PUT/api/v1/products/{id}Actualizează un produs (parțial).
DELETE/api/v1/products/{id}Șterge un produs (doar dacă nu mai are stoc).

Filtre la listare

ParametruTipNote
statusenumactive | inactive.
skustringPotrivire exactă pe SKU.
barcodestringPotrivire exactă pe cod de bare.
seller_idintegerFiltrează după furnizor.
searchstringCaută în name, sku, barcode.
per_pageintegerImplicit 50.

Schema unui produs

Câmpuri acceptate la POST / PUT. La POST, sku și name sunt obligatorii; restul sunt opționale. La PUT, toate sunt opționale (trimite doar câmpurile pe care vrei să le schimbi).

CâmpTipNote
skustring ≤ 50Obligatoriu la POST. Unic per tenant.
namestring ≤ 255Obligatoriu la POST.
descriptiontext
categorystring ≤ 100
unit_of_measurestring ≤ 20ex. bucata, kg.
min_stock_levelinteger ≥ 0Pragul sub care produsul declanșează alerte de stoc redus.
pricenumeric ≥ 0Preț în moneda de bază (RON).
price_eurnumeric ≥ 0Preț în EUR.
weightnumeric ≥ 0Greutate unitară.
dimensionsstring ≤ 100Text liber (ex. 20x15x10 cm).
barcodestring ≤ 50
seller_idintegerTrebuie să existe în furnizori (sellers.id).
statusenumactive | inactive. Implicit active.

Exemplu — creare produs

bash
curl -X POST https://tenant.notsowms.ro/api/v1/products \
  -H "Authorization: Bearer tenant.7c4a8d09ca3762af61e59520943dc26494f8941b" \
  -H "Content-Type: application/json" \
  -d '{
    "sku": "BRK-PAD-001",
    "name": "Plăcuțe frână față",
    "category": "Frânare",
    "unit_of_measure": "set",
    "min_stock_level": 5,
    "price": 149.90,
    "barcode": "5941234567890"
  }'

Răspuns 201:

json
{
  "data": {
    "product_id": 812,
    "sku": "BRK-PAD-001",
    "name": "Plăcuțe frână față",
    "category": "Frânare",
    "unit_of_measure": "set",
    "min_stock_level": 5,
    "price": "149.90",
    "barcode": "5941234567890",
    "status": "active",
    "created_at": "2026-06-11T08:42:11.000000Z",
    "updated_at": "2026-06-11T08:42:11.000000Z"
  }
}

GET /api/v1/products/{id} întoarce în plus furnizorul (seller) și stocul pe locații (inventory_items cu locația aferentă).

Ștergere

bash
curl -X DELETE https://tenant.notsowms.ro/api/v1/products/812 \
  -H "Authorization: Bearer tenant.7c4a8d09ca3762af61e59520943dc26494f8941b"

Dacă produsul mai are stoc (orice rând de inventar cu quantity > 0), ștergerea este refuzată cu 422:

json
{ "error": "Cannot delete product with active inventory." }

Golește stocul (vezi stocuri) înainte de a șterge.

Documentație API notso WMS