<script src="https://<cloudfront>/client-side/xxxx/xxxxxxxxxxxx.js"></script>

necessary
analytics
advertisement
functionality
performance

cc:onFirstConsent { cookie }
cc:onConsent { cookie }
cc:onChange { cookie, changedCategories, changedServices }
cc:onModalShow { modalName }
cc:onModalHide { modalName }
cc:onModalReady { modalName, modal }

{
  "categories": ["necessary", "analytics"],   // categorias aceitas
  "services": {                                // serviços aceitos por categoria
    "necessary": [],
    "analytics": ["google-analytics"]
  },
  "consentId": "8f3c…-uuid",                   // id único do consentimento
  "consentTimestamp": "2026-06-03T12:00:00.000Z",
  "lastConsentTimestamp": "2026-06-03T12:30:00.000Z",
  "revision": 0,
  "data": null,                                // dados customizados (setCookieData)
  "languageCode": "pt"
}

// Carregar o Google Analytics apenas quando "analytics" for aceito
document.addEventListener("cc:onConsent", ({ detail }) => {
  if (detail.cookie.categories.includes("analytics")) {
    carregarGA();
  }
});

// Reagir a mudanças específicas de preferência
document.addEventListener("cc:onChange", ({ detail }) => {
  console.log("Categorias alteradas:", detail.changedCategories);
  console.log("Serviços alterados:", detail.changedServices);
});

acceptedCategory(category) boolean
acceptedService(service, category) boolean
getUserPreferences() object
getCookie(field?, cookieName?) any
validConsent() boolean
validCookie(cookieName) boolean
acceptCategory(categories, excluded?) void
acceptService(service, category) boolean
eraseCookies(cookies, path?, domain?) void
show(createModal?) void
hide() void
showPreferences() void
hidePreferences() void
loadScript(src, attrs?) Promise<boolean>
setCookieData({ value, mode }) boolean
getConfig(field?) any
setLanguage(lang, forceUpdate?) Promise<boolean>

if (CookieConsent.acceptedCategory("analytics")) { /* … */ }

{
  "acceptType": "custom",                       // "all" | "necessary" | "custom"
  "acceptedCategories": ["necessary", "analytics"],
  "rejectedCategories": ["advertisement", "functionality", "performance"],
  "acceptedServices": { "analytics": ["google-analytics"] },
  "rejectedServices": { "advertisement": ["meta-pixel"] }
}

const cookie = CookieConsent.getCookie();            // objeto completo
const id     = CookieConsent.getCookie("consentId"); // string

CookieConsent.acceptCategory("all");                    // aceita todas
CookieConsent.acceptCategory([]);                       // só necessary (rejeita o resto)
CookieConsent.acceptCategory(["analytics"]);            // necessary + analytics
CookieConsent.acceptCategory("all", ["advertisement"]); // todas menos advertisement

const ok = await CookieConsent.loadScript("https://example.com/x.js", { async: "true" });

await CookieConsent.setLanguage("en");

CookieConsent.show(true);        // abre o banner; cria se não existir
CookieConsent.showPreferences(); // abre as preferências (ex.: link "Gerenciar cookies")

<!-- Serviço nomeado dentro da categoria -->
<script
  type="text/plain"
  data-category="advertisement"
  data-service="meta-pixel"
  src="https://connect.facebook.net/...">
</script>

<!-- Código inline também funciona -->
<script type="text/plain" data-category="analytics">
  console.log("só roda após aceite de analytics");
</script>

type="text/plain"
data-category
data-service

<!-- Já entregue neutralizado: data-src preenchido, src ausente -->
<iframe
  data-category="functionality"
  data-src="https://www.youtube.com/embed/VIDEO_ID"></iframe>

cmp-consent-ready
cmp-accept-<categoria>
cmp-accept-<serviceKey>

<button onclick="CookieConsent.showPreferences()">Gerenciar cookies</button>

document.addEventListener("cc:onFirstConsent", ({ detail }) => {
  enviarEventoDeOptIn(detail.cookie.consentId);
});

document.addEventListener("cc:onConsent", () => {
  if (CookieConsent.acceptedService("hotjar", "analytics")) {
    CookieConsent.loadScript("https://static.hotjar.com/c/hotjar-XXXX.js");
  }
});