Build hooky (auto-rebuild)
Build-time obsah se „zapeče“ do statiky při buildu → po publikaci v adminu se web musí přebudovat. Contenta to udělá za tebe přes build hook.
Nastavení
Sekce “Nastavení”- Ve svém deployi vytvoř deploy hook URL (Cloudflare Pages → Settings → Builds & deployments → Deploy hooks; nebo vlastní CI).
- V adminu nastav webu
buildWebhookUrl(+ volitelněbuildWebhookSecret):
PATCH https://api.contenta.cz/api/v1/admin/sites/muj-web{ "buildWebhookUrl": "https://…", "buildWebhookSecret": "(volitelné)" }Co Contenta pošle
Sekce “Co Contenta pošle”Při publikaci/změně obsahu (i naplánovaném zveřejnění) POST na tu URL:
{ "event": "article.publish | article.update | article.unpublish | site.invalidate", "siteSlug": "muj-web", "entityType": "Post", "entityId": "…", "reason": "…", "ts": "ISO" }Cloudflare deploy hook tělo ani podpis neověřuje → funguje napříč účty. Fire-and-forget (doručení negarantované; případně si přidej retry).
Ověření podpisu (jen vlastní CI)
Sekce “Ověření podpisu (jen vlastní CI)”Pokud místo CF deploy hooku použiješ vlastní endpoint a nastavíš buildWebhookSecret, přijde hlavička
X-Contenta-Signature: sha256=<hmac>:
import { createHmac, timingSafeEqual } from "crypto";const expected = "sha256=" + createHmac("sha256", SECRET).update(rawBody).digest("hex");const ok = timingSafeEqual(Buffer.from(req.headers["x-contenta-signature"]), Buffer.from(expected));