Skip to content
Syncore

Απόθεμα

Το δικό σου απόθεμα ανά 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.