hosting
POST /v1/site-events/ingest
Receive a site's report about its own changes (signed webhook).
توثيقِ شناخت
یہ اینڈ پوائنٹ عوامی ہے۔ یہ کوئی اسناد اور کوئی تنظیم نہیں لیتا — یہ وہ ہے جسے ہماری اپنی مارکیٹنگ سائٹ اور AI کے جواب دینے والے انجن پڑھتے ہیں۔
یہ اینڈ پوائنٹ کوئی آرگنائزیشن آئی ڈی نہیں لیتا۔ آپ کی کلید پہلے ہی اس آرگنائزیشن کی شناخت کرتی ہے جس سے یہ تعلق رکھتی ہے، اور اس کا جواب اسی کے مطابق محدود ہوتا ہے۔
آزمائیں
کوئی بھی چیز جو زاویہ دار قوسین میں ہو اسے اپنی اقدار سے بدلیں، اور کلیدی پلیس ہولڈر کو اپنے ڈیش بورڈ کی کسی کلید سے بدلیں۔
curl -X POST https://api.zinndigital.com/v1/site-events/ingest \
-H "Content-Type: application/json" \
-d '{ "site": <string> }'لاگ ان ہیں؟ آپ کے ڈیش بورڈ میں موجود API کنسول آپ کی حقیقی تنظیم کی آئی ڈی اور آپ کی اپنی کلید خود بخود پُر کر دیتا ہے، اور لائیو API پر درخواست چلاتا ہے تاکہ آپ اصل ردعمل دیکھ سکیں۔ اس اینڈ پوائنٹ کو API کنسول میں کھولیں
تفصیلات
What a site's Zinn® plugin POSTs when something changed on it — a plugin activated or deactivated, core or a theme updated, a theme switched — plus the PHP version it is running. Machine-to-machine; there is no principal. WordPress is talking, not a person, so there is no session, no API key and no organisation header. Authentication is an HMAC-SHA256 over "<timestamp>\n<body>" in X-Zinn-Cache-Signature (sha256=<hex>), with X-Zinn-Cache-Timestamp carrying the unix seconds — the same scheme the plugin already uses for its cache-purge mirror. The secret is derived, never stored. The engine resolves site to a hosted site by primary domain, derives that site's webhook secret from the platform master key, and compares in constant time. The organisation comes from the resolved site: a valid signature proves the sender holds that site's secret and proves nothing whatsoever about any other tenant. Every refusal is uninformative on purpose. An unknown hostname is a bare 404 and a bad signature a bare 401, because a chattier answer would tell anyone who can guess a hostname which domains this platform hosts. Idempotent. WordPress fires some of these hooks more than once per change and the POST is fire-and-forget, so a duplicate delivery is accepted with stored: 0 rather than refused — replay safety lives in the database.
پیرامیٹرز
| نام | قسم | لازمی | یہ کیا ہے |
|---|---|---|---|
X-Zinn-Cache-Timestamp (header) | string | ہاں | Unix seconds. Signed as part of the material, which is what makes the replay window meaningful — a signature over the body alone could be replayed for ever with a fresh header. |
X-Zinn-Cache-Signature (header) | string | ہاں | sha256=<hex>. |
درخواست کا باڈی
| نام | قسم | لازمی | یہ کیا ہے |
|---|---|---|---|
site | string | ہاں | The site's own home_url(). An untrusted claim — it selects which site's derived secret the signature is checked against, and nothing more. The organisation is taken from the… |
php_version | string | نہیں | The PHP version the site is running. The engine raises a php_version_changed event when it differs from the last one reported — a change is detectable by comparison rather… |
events | object[] | نہیں | A batch. WordPress bulk-updating 40 plugins fires one upgrader_process_complete describing all of them, so a batch is the normal case, not the edge case. deploy is rejected… |
جواب
| نام | قسم | لازمی | یہ کیا ہے |
|---|---|---|---|
accepted | boolean | ہاں | — |
stored | integer | ہاں | How many rows were new. A duplicate delivery is accepted with 0 rather than refused: WordPress fires some of these hooks more than once per change and the POST is… |
وہ خرابیان جو یہ اینڈ پوائنٹ واپس کر سکتا ہے
401 · 404 · 422 · 503