Απόθεμα
Το δικό σου απόθεμα ανά SKU (ξεχωριστό από το απόθεμα του προμηθευτή). Κάθε αλλαγή καταγράφεται ως κίνηση αποθέματος και στέλνει webhook stock.changed — και stock.low όταν πέσει στο όριο χαμηλού αποθέματος.
| Endpoint | Ability |
|---|---|
GET /inventory |
inventory:read |
PUT /inventory/{sku} |
inventory:write |
POST /inventory/bulk |
inventory:write |
Λίστα
curl -s "https://app.syncore.gr/api/v1/inventory?search=ABC" -H "Authorization: Bearer $SYNCORE_TOKEN"
{
"data": [
{ "product_id": 1201, "sku": "ABC-1001", "name": "Παράδειγμα προϊόντος", "quantity": 12, "reserved": 2, "last_sync_at": "2026-10-29T10:00:00+02:00" }
],
"meta": { "current_page": 1, "per_page": 25, "total": 1, "last_page": 1 }
}
reserved είναι τα τεμάχια δεσμευμένα σε ανοιχτές παραγγελίες.
Ένα SKU
curl -s -X PUT "https://app.syncore.gr/api/v1/inventory/ABC-1001" \
-H "Authorization: Bearer $SYNCORE_TOKEN" \
-H "Content-Type: application/json" \
-d '{"quantity": 40, "notes": "Παραλαβή από αποθήκη"}'
quantity υποχρεωτικό (ακέραιος ≥ 0), notes προαιρετικό. Απαντά με τη νέα γραμμή αποθέματος· 404 αν το SKU δεν είναι στον κατάλογό σου.
Μαζικά (έως 500)
curl -s -X POST "https://app.syncore.gr/api/v1/inventory/bulk" \
-H "Authorization: Bearer $SYNCORE_TOKEN" \
-H "Content-Type: application/json" \
-d '{"items": [{"sku": "ABC-1001", "quantity": 40}, {"sku": "ABC-1002", "quantity": 0}, {"sku": "NOPE-1", "quantity": 3}]}'
{
"data": {
"updated": ["ABC-1001", "ABC-1002"],
"failed": [],
"not_found": ["NOPE-1"]
}
}
Το αίτημα δεν αποτυγχάνει ολόκληρο για ένα άγνωστο SKU: έλεγξε τις λίστες failed και not_found.