API λογαριασμού2026-11Προεπισκόπηση

Endpoints webhook

Τα URL στα οποία κάνουμε POST συμβάντα. Τα συμβάντα, τα payloads, η υπογραφή και οι επαναλήψεις είναι στα Webhooks.

Το αντικείμενο Webhook endpoint

idstring
Ξεκινά με we_.
urlstring
Ένα δικό σας https URL που απαντά 2xx.
descriptionstring|null
Για εσάς.
events[]array
Οι τύποι συμβάντων προς αποστολή, ή * για όλους, μαζί με όσους προστεθούν αργότερα: order.created, order.paid, order.bought, order.checked, order.shipped, product.cost_changed, product.out_of_stock, qc.issue.
statusstring
enabled ή disabled (από εσάς, ή από εμάς μετά από πέντε ημέρες όπου απέτυχε κάθε παράδοση· σας στέλνουμε πρώτα email).
api_versionstring
Η έκδοση με την οποία γράφονται τα payloads των συμβάντων· του κλειδιού κατά τη δημιουργία.
secretstring
Το μυστικό υπογραφής. Μόνο στις απαντήσεις δημιουργίας και εναλλαγής.
webhook_endpoint
{
  "id": "we_3d8s",
  "url": "https://acme-goods.com/hooks/ninjabuy",
  "description": "Order sync",
  "events": ["order.shipped", "product.out_of_stock", "qc.issue"],
  "status": "enabled",
  "api_version": "2026-11",
  "created_at": "2026-11-01T08:00:00Z"
}

Δημιουργία endpoint

POST/v1/webhook_endpoints

Επιστρέφει το μυστικό υπογραφής μία φορά: αποθηκεύστε το τώρα. Έως 16 endpoints ανά λογαριασμό.

Scopewebhooks:write

Σώμα

urlstringυποχρεωτικό
Μόνο https.
events[]arrayυποχρεωτικό
Τύποι συμβάντων, ή ["*"].
descriptionstring
Προαιρετικό.

Σφάλματα

ΚατάστασηΤύποςΠότε
400bad-bodyΤο URL δεν είναι https ή ένας τύπος συμβάντος είναι άγνωστος.
409invalid-stateΟ λογαριασμός έχει ήδη 16 endpoints.
curl -X POST "https://www.ninjabuy.com/api/v1/webhook_endpoints" \
  -H "Authorization: Bearer $NINJABUY_API_KEY" \
  -H "NinjaBuy-Version: 2026-11" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://acme-goods.com/hooks/ninjabuy",
    "events": ["order.shipped", "product.out_of_stock", "qc.issue"],
    "description": "Order sync"
  }'
Response 201
HTTP/2 201 Created

{
  "id": "we_3d8s",
  "url": "https://acme-goods.com/hooks/ninjabuy",
  "description": "Order sync",
  "events": ["order.shipped", "product.out_of_stock", "qc.issue"],
  "status": "enabled",
  "api_version": "2026-11",
  "created_at": "2026-11-01T08:00:00Z",
  "secret": "whsec_MfKQ9r8GKYqrTwjUPD8ILPZIo2LaLaSw"
}

Λίστα endpoints

GET/v1/webhook_endpoints

Όλα τα endpoints του λογαριασμού, χωρίς μυστικά.

Scopewebhooks:write

curl "https://www.ninjabuy.com/api/v1/webhook_endpoints" \
  -H "Authorization: Bearer $NINJABUY_API_KEY" \
  -H "NinjaBuy-Version: 2026-11"
Response 200
HTTP/2 200 OK

{
  "data": [
    {
      "id": "we_3d8s",
      "url": "https://acme-goods.com/hooks/ninjabuy",
      "description": "Order sync",
      "events": ["order.shipped", "product.out_of_stock", "qc.issue"],
      "status": "enabled",
      "api_version": "2026-11",
      "created_at": "2026-11-01T08:00:00Z"
    }
  ],
  "has_more": false,
  "cursor": null
}

Ανάκτηση endpoint

GET/v1/webhook_endpoints/{id}

Ένα endpoint, χωρίς το μυστικό του.

Scopewebhooks:write

Παράμετροι διαδρομής

idstringυποχρεωτικό
Το id του endpoint.

Σφάλματα

ΚατάστασηΤύποςΠότε
404not-foundΔεν υπάρχει τέτοιο endpoint σε αυτόν τον λογαριασμό.
curl "https://www.ninjabuy.com/api/v1/webhook_endpoints/we_3d8s" \
  -H "Authorization: Bearer $NINJABUY_API_KEY" \
  -H "NinjaBuy-Version: 2026-11"
Response 200
HTTP/2 200 OK

{
  "id": "we_3d8s",
  "url": "https://acme-goods.com/hooks/ninjabuy",
  "description": "Order sync",
  "events": ["order.shipped", "product.out_of_stock", "qc.issue"],
  "status": "enabled",
  "api_version": "2026-11",
  "created_at": "2026-11-01T08:00:00Z"
}

Ενημέρωση endpoint

PATCH/v1/webhook_endpoints/{id}

Αλλάξτε το URL ή τα συμβάντα του, ή απενεργοποιήστε και ενεργοποιήστε το. Η ενεργοποίηση στέλνει ό,τι έχασε τις τελευταίες 3 ημέρες.

Scopewebhooks:write

Παράμετροι διαδρομής

idstringυποχρεωτικό
Το id του endpoint.

Σώμα

urlstring
Μόνο https.
events[]array
Τύποι συμβάντων, ή ["*"].
descriptionstring
Προαιρετικό.
statusstring
Προαιρετικό. enabled ή disabled.

Σφάλματα

ΚατάστασηΤύποςΠότε
404not-foundΔεν υπάρχει τέτοιο endpoint σε αυτόν τον λογαριασμό.
curl -X PATCH "https://www.ninjabuy.com/api/v1/webhook_endpoints/we_3d8s" \
  -H "Authorization: Bearer $NINJABUY_API_KEY" \
  -H "NinjaBuy-Version: 2026-11" \
  -H "Content-Type: application/json" \
  -d '{ "events": ["*"] }'
Response 200
HTTP/2 200 OK

{
  "id": "we_3d8s",
  "url": "https://acme-goods.com/hooks/ninjabuy",
  "description": "Order sync",
  "events": ["*"],
  "status": "enabled",
  "api_version": "2026-11",
  "created_at": "2026-11-01T08:00:00Z"
}

Διαγραφή endpoint

DELETE/v1/webhook_endpoints/{id}

Σταματά αμέσως κάθε παράδοση προς αυτό, μαζί με τις επαναλήψεις.

Scopewebhooks:write

Παράμετροι διαδρομής

idstringυποχρεωτικό
Το id του endpoint.

Σφάλματα

ΚατάστασηΤύποςΠότε
404not-foundΔεν υπάρχει τέτοιο endpoint σε αυτόν τον λογαριασμό.
curl -X DELETE "https://www.ninjabuy.com/api/v1/webhook_endpoints/we_3d8s" \
  -H "Authorization: Bearer $NINJABUY_API_KEY" \
  -H "NinjaBuy-Version: 2026-11"
Response 200
HTTP/2 200 OK

{ "id": "we_3d8s", "deleted": true }

Εναλλαγή μυστικού

POST/v1/webhook_endpoints/{id}/rotate_secret

Επιστρέφει νέο μυστικό. Για 24 ώρες υπογράφουμε και με τα δύο, οπότε η κεφαλίδα webhook-signature φέρει δύο υπογραφές και επαληθεύεται με οποιαδήποτε: εγκαταστήστε το νέο και αφήστε το παλιό να λήξει.

Scopewebhooks:write

Παράμετροι διαδρομής

idstringυποχρεωτικό
Το id του endpoint.

Σφάλματα

ΚατάστασηΤύποςΠότε
404not-foundΔεν υπάρχει τέτοιο endpoint σε αυτόν τον λογαριασμό.
curl -X POST "https://www.ninjabuy.com/api/v1/webhook_endpoints/we_3d8s/rotate_secret" \
  -H "Authorization: Bearer $NINJABUY_API_KEY" \
  -H "NinjaBuy-Version: 2026-11" \
  -H "Idempotency-Key: $(uuidgen)"
Response 200
HTTP/2 200 OK

{
  "id": "we_3d8s",
  "secret": "whsec_C2FVsBQIhrscChlQIMV+b5sSYspob7oD",
  "previous_expires_at": "2026-11-05T09:30:00Z"
}

Αποστολή δοκιμαστικού συμβάντος

POST/v1/webhook_endpoints/{id}/test

Στέλνει ένα δείγμα ενός τύπου συμβάντος, υπογεγραμμένο όπως κάθε άλλο, με test: true. Επιστρέφει πώς απάντησε το endpoint σας.

Scopewebhooks:write

Παράμετροι διαδρομής

idstringυποχρεωτικό
Το id του endpoint.

Σώμα

typestringυποχρεωτικό
Ένας τύπος συμβάντος.

Σφάλματα

ΚατάστασηΤύποςΠότε
404not-foundΔεν υπάρχει τέτοιο endpoint σε αυτόν τον λογαριασμό.
curl -X POST "https://www.ninjabuy.com/api/v1/webhook_endpoints/we_3d8s/test" \
  -H "Authorization: Bearer $NINJABUY_API_KEY" \
  -H "NinjaBuy-Version: 2026-11" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{ "type": "qc.issue" }'
Response 200
HTTP/2 200 OK

{
  "delivery": "dlv_0k2p",
  "event": "evt_test_6c3h",
  "response_status": 200,
  "duration_ms": 182
}

Λίστα παραδόσεων

GET/v1/webhook_endpoints/{id}/deliveries

Κάθε προσπάθεια των τελευταίων 30 ημερών, οι νεότερες πρώτα: τι στείλαμε, τι απαντήσατε και πότε ξαναδοκιμάζουμε.

Scopewebhooks:write

Παράμετροι διαδρομής

idstringυποχρεωτικό
Το id του endpoint.

Παράμετροι ερωτήματος

statusstring
Προαιρετικό. succeeded, retrying ή failed.
eventstring
Προαιρετικό. Ένα id συμβάντος.
limit, cursor
Pagination

Σφάλματα

ΚατάστασηΤύποςΠότε
404not-foundΔεν υπάρχει τέτοιο endpoint σε αυτόν τον λογαριασμό.
curl "https://www.ninjabuy.com/api/v1/webhook_endpoints/we_3d8s/deliveries?status=retrying" \
  -H "Authorization: Bearer $NINJABUY_API_KEY" \
  -H "NinjaBuy-Version: 2026-11"
Response 200
HTTP/2 200 OK

{
  "data": [
    {
      "id": "dlv_0k3a",
      "event": "evt_4m2x",
      "type": "order.shipped",
      "status": "retrying",
      "attempts": 3,
      "last_response_status": 502,
      "next_attempt_at": "2026-11-03T08:35:00Z"
    }
  ],
  "has_more": false,
  "cursor": null
}

Νέα αποστολή παράδοσης

POST/v1/webhook_endpoints/{id}/deliveries/{delivery}/retry

Στέλνει το συμβάν τώρα, με το ίδιο webhook-id, όποια κι αν είναι η κατάστασή του. Οι ήδη προγραμματισμένες επαναλήψεις συνεχίζονται.

Scopewebhooks:write

Παράμετροι διαδρομής

idstringυποχρεωτικό
Το id του endpoint.
deliverystringυποχρεωτικό
Ένα id παράδοσης.

Σφάλματα

ΚατάστασηΤύποςΠότε
404not-foundΔεν υπάρχει τέτοιο endpoint σε αυτόν τον λογαριασμό.
curl -X POST "https://www.ninjabuy.com/api/v1/webhook_endpoints/we_3d8s/deliveries/dlv_0k3a/retry" \
  -H "Authorization: Bearer $NINJABUY_API_KEY" \
  -H "NinjaBuy-Version: 2026-11" \
  -H "Idempotency-Key: $(uuidgen)"
Response 202
HTTP/2 202 Accepted

{
  "delivery": "dlv_0k3a",
  "status": "retrying",
  "next_attempt_at": "2026-11-03T08:01:10Z"
}