Siirry sisältöön

Kieli

Dokumentaation valikko

REST API

Hallitse verkkotunnuksia, skannauksia ja suostumustietueita HTTPS:n yli, vie todisteet suostumuksista ja vastaanota allekirjoitettuja webhookeja.

Päivitetty viimeksi 29. lokakuuta 2026

REST API:n avulla voit automatisoida kaiken, minkä voit tehdä hallintapaneelissa: lisätä verkkotunnuksia, käynnistää skannauksia, hakea ja viedä suostumustietueita sekä vastaanottaa webhookeja, kun jokin muuttuu. API on käytettävissä Pro- ja Enterprise-paketeissa.

Todennus

Luo API-avain kohdassa Settings → API keys. Avaimet on rajattu yhteen työtilaan, ja ne ovat joko vain luku- tai luku- ja kirjoitusoikeudellisia. Lähetä avain bearer-tunnisteena:

curl https://api.cookiesh.eu/v1/domains \
  -H "Authorization: Bearer ck_sk_live_..."

Salaiset avaimet alkavat ck_sk_. Älä koskaan käytä niitä selaimessa suoritettavassa koodissa. Script-tagi tarvitsee vain julkisen sivustotunnisteesi.

Kaikki pyynnöt käyttävät HTTPS:ää ja JSONia. Perus-URL on https://api.cookiesh.eu/v1. Aikaleimat ovat ISO 8601 -merkkijonoja UTC-ajassa.

Päätepisteet

Metodi Polku Kuvaus
GET /domains Listaa työtilan verkkotunnukset
POST /domains Lisää verkkotunnus
GET /domains/{id} Hae verkkotunnus ja sen asetukset
DELETE /domains/{id} Poista verkkotunnus
POST /domains/{id}/scans Käynnistä evästeskannaus
GET /domains/{id}/scans/{scan_id} Hae skannauksen tila ja tulokset
GET /domains/{id}/cookies Listaa luokitellut evästeet ja seurantatyökalut
GET /consents Hae suostumustietueita
GET /consents/{consent_id} Hae yksi suostumustietue ja sen tiivisteketjutodiste
POST /exports Käynnistä suostumustietueiden vienti CSV- tai JSON-muodossa
GET /exports/{id} Hae viennin tila ja latausosoite
DELETE /subjects/{user_id} Poista kaikki käyttäjätunnisteeseen liitetyt suostumustietueet

Esimerkki: hae yhden kävijän suostumustietueet.

curl "https://api.cookiesh.eu/v1/consents?domain_id=dom_29xk&consent_id=cns_8Hq2Lw" \
  -H "Authorization: Bearer ck_sk_live_..."
{
  "data": [
    {
      "id": "cns_8Hq2Lw",
      "domain_id": "dom_29xk",
      "created_at": "2026-10-12T09:41:07Z",
      "region": "DE",
      "method": "banner",
      "banner_version": "v14",
      "categories": { "necessary": true, "preferences": false, "analytics": true, "marketing": false },
      "hash": "9f2c…e71a"
    }
  ],
  "next_cursor": null
}

Sivutus

Listauspäätepisteet palauttavat enintään 100 kohdetta. Voit pyytää vähemmän limit-parametrilla. Jos tuloksia on enemmän, vastauksessa on next_cursor. Välitä se takaisin cursor-parametrina, niin saat seuraavan sivun. Kursorit ovat voimassa 24 tuntia.

Virheet

Virheissä käytetään tavallisia HTTP-tilakoodeja ja yhtenäistä rungon muotoa:

{
  "error": {
    "type": "invalid_request",
    "message": "domain_id is required",
    "request_id": "req_4Kd92"
  }
}
Tila Merkitys
400 Pyyntö on virheellinen. Viesti kertoo syyn.
401 API-avain puuttuu tai on virheellinen.
403 Avain on vain luku -oikeudellinen, tai pakettisi ei sisällä tätä ominaisuutta.
404 Resurssia ei ole tässä työtilassa.
429 Pyyntörajoitus ylittyi. Yritä uudelleen Retry-After-otsakkeen ilmoittaman sekuntimäärän kuluttua.
5xx Meidän päässämme tapahtui virhe. Yritä uudelleen eksponentiaalisesti kasvavin viivein.

Liitä request_id mukaan, kun otat yhteyttä tukeen.

Pyyntörajoitukset

Pro-työtilat voivat tehdä 600 pyyntöä minuutissa ja Enterprise-työtilat 3 000. Jokaisessa vastauksessa on otsakkeet RateLimit-Limit, RateLimit-Remaining ja RateLimit-Reset. Käynnissä olevat viennit eivät kuluta rajaa.

Webhookit

Lisää päätepiste kohdassa Settings → Webhooks ja valitse tapahtumat, jotka haluat vastaanottaa:

Tapahtuma Lähetetään, kun
consent.created Kävijä tallentaa uuden valinnan
consent.updated Kävijä muuttaa aiempaa valintaansa
scan.completed Evästeskannaus valmistuu
scan.new_items Skannaus löytää evästeitä tai seurantatyökaluja, jotka on tarkistettava
usage.threshold Työtila saavuttaa 80 % tai 100 % kuukausittaisista suostumuskirjauksistaan

Jokainen toimitus on POST-pyyntö, jossa on JSON-runko ja Cookiesh-Signature-otsake. Otsakkeessa on aikaleima ja timestamp.body-merkkijonon HMAC-SHA256-allekirjoitus, joka on luotu päätepisteesi allekirjoitusavaimella. Tarkista allekirjoitus ennen kuin luotat sisältöön:

import crypto from 'node:crypto';

export function verify(rawBody: string, header: string, secret: string): boolean {
  const { t, v1 } = Object.fromEntries(header.split(',').map((part) => part.split('=')));
  if (Math.abs(Date.now() / 1000 - Number(t)) > 300) return false; // hylkää vanhat toimitukset
  const expected = crypto.createHmac('sha256', secret).update(`${t}.${rawBody}`).digest('hex');
  return crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(v1));
}

Vastaa 2xx-tilakoodilla 10 sekunnin kuluessa. Epäonnistuneita toimituksia yritetään uudelleen eksponentiaalisesti kasvavin viivein enintään 24 tunnin ajan. Sama tapahtuma voi saapua useammin kuin kerran, joten ohita kaksoiskappaleet tapahtuman id-kentän avulla.