Documentazione

Consent Solution – Documentazione API HTTP

Le API HTTP della Consent Solution ti permettono di salvare e recuperare le azioni di consenso portate a termine dai tuoi utenti, che di seguito verranno definiti “interessati”.

Headers

Autenticazione

Al fine di poter scrivere tramite le nostre API, forniamo due tipologie di chiavi:

  • Chiave pubblica, comunemente utilizzata dalla libreria Javascript
  • Chiave privata, comunemente utilizzata dall’API HTTP

Tutte le chiamate API, sia tramite HTTP che tramite JS, specificano se sono state autenticate tramite chiave pubblica o privata. Le chiamate effettuate mediante chiave privata sono più affidabili in quanto forniscono maggiore certezza quando è necessario verificare che i dati siano stati realmente inviati dall’utente.

Per le API HTTP, la chiave privata va inviata tramite l’header ApiKey. Le chiavi pubbliche sono accettate solo sull’endpoint POST /public/consent.

Content-Type

Per inviare dati alla nostra API HTTP, è necessario impostare un header content-type uguale ad application/json o x-www-form-urlencoded.

API output

Per impostazione predefinita ogni risposta json viene sottoposta ad escape, causando ad esempio che una “<” diventi un “\u003c”. Per risolvere questo problema, è possibile passare il parametro “unescape_json” a qualsiasi richiesta per fare l’unescape della risposta json.

Attenzione però, perché la risposta risultante potrebbe non essere sicura da incorporare in un documento. Assicurati quindi di fare un nuovo escape ogni volta che la usi nel front-end.

GET /consent?unescape_json=true

PHP:

$req = curl_init();
curl_setopt($req, CURLOPT_URL, 'https://consent.iubenda.com/consent?unescape_json=true');
curl_setopt($req, CURLOPT_RETURNTRANSFER, true);
curl_setopt($req, CURLOPT_HTTPHEADER, array(
    'ApiKey: your-secret-api-key',
    'Content-Type: application/json'
));

$response = curl_exec($req);

cURL:

curl "http://stg-consent.iubenda.com/consent?unescape_json=true" \
     -H 'ApiKey: your-secret-api-key'

Otterrebbe un risultato senza caratteri di escape (non sicuro, quindi assicurati di fare l’escape quando la usi nel front-end)

# GET /consent?unescape_json=true

{
  "id": "32d16262-2e9a-4bad-abcd-5cbb46471047",
  "timestamp": "2018-11-06T08:58:01+00:00",
  "owner": "0",
  "source": "private",
  "subject": {
    "id": "123123",
    "email": "Olga.Mayert@gmail.comTest1",
    "first_name": "Luz",
    "last_name": "Koss",
    "verified": true
  },
  "preferences": {
    "mailing_list": "true",
    "tos_accepted": "false"
  },
  "legal_notices": [],
  "proofs": [
    {
      "form": "<form>",
      "content": "<script>"
    }
  ]
}
# GET /consent

{
  "id": "32d16262-2e9a-4bad-abcd-5cbb46471047",
  "timestamp": "2018-11-06T08:58:01+00:00",
  "owner": "0",
  "source": "private",
  "subject": {
    "id": "123123",
    "email": "Olga.Mayert@gmail.comTest1",
    "first_name": "Luz",
    "last_name": "Koss",
    "verified": true
  },
  "preferences": {
    "mailing_list": "true",
    "tos_accepted": "false"
  },
  "legal_notices": [],
  "proofs": [
    {
      "form": "\u003cform\u003e",
      "content": "\u003cscript\u003e"
    }
  ]
}

Limiti al numero di chiamate

Il numero massimo di chiamate è di 5 per secondo e 10800 per ora. Lato server, se questi limiti vengono oltrepassati riceverai un messaggio 429 Too Many Requests.

Dimensione massima delle chiamate

Per ogni chiamata, è stato impostato un limite massimo pari a 350kb. Lato server, se questi limiti sono oltrepassati riceverai un messaggio 413 Request Entity Too Large.

Consent

CREATE consent

Esempi

POST https://consent.iubenda.com/consent
{
  "subject": {
    "id": "J02eZvKYlo2ClwuJ1",
    "email": "john@example.com",
    "first_name": "John",
    "last_name": "Doe",
    "full_name": "John Doe",
    "verified": false
  },
  "legal_notices": [
    {
      "identifier": "privacy_policy",
      "version": "123"
    },
    {
      "identifier": "terms",
      "version": "123"
    }
  ],
  "proofs": [
    {
      "content": "proof_1",
      "form": "proof form"
    }
  ],
  "preferences": {
    "newsletter": false,
    "privacy_policy": true
  }
}

Questa chiamata creerà un nuovo evento di consenso.

La risposta è la seguente:

200 OK
{
  "id": "de801ca9-abec-45e2-8f7c-729822cfffad",
  "timestamp": "2018-05-04T14:52:26Z",
  "subject_id": "J02eZvKYlo2ClwuJ1"
}

Il metodo dei consensi ammette i seguenti campi, tutti opzionali. Alcuni campi verrano compilati automaticamente se non viene fornito alcun valore.

timestamp compilato automaticamente (se non fornito) stringa ISO 8601 timestamp del momento in cui è avvenuto il consenso
subject oggetto
    id compilato automaticamente (se non fornito) stringa
    email stringa
    first_name stringa
    last_name stringa
    full_name stringa
    verified boolean campo che segnala se un interessato è verificato o meno, ad esempio attraverso double opt-in
legal_notices array array di oggetti contenenti dati sugli avvisi legali
    identifier stringa privacy_policy, cookie_policy, terms o un identificativo personalizzato
    version compilato automaticamente con il valore dell’ultima versione disponibile (se non fornito) stringa
proofs array array di oggetti contenente dati sulle prove di consenso
    content testo
    form testo
preferences oggetto insieme di coppie chiave-valore relative alle preferenze dell’utente per ogni azione di consenso

GET consent

Esempi

GET https://consent.iubenda.com/consent/:id
200 OK
{
  "id": "de801ca9-abec-45e2-8f7c-729822cfffad",
  "timestamp": "2018-05-04T14:52:26Z",
  "owner": "1234",
  "subject": {
    "id": "J02eZvKYlo2ClwuJ1",
    "email": "subject@example.com",
    "first_name": "John",
    "last_name": "Doe",
    "full_name": "John Doe"
    "verified": false
  },
  "preferences": {
    "privacy_policy": true,
    "newsletter": false
  },
  "legal_notices": [
    {
      "identifier": "privacy_policy",
      "version": "123"
    },
    {
      "identifier": "terms",
      "version": "123"
    }
  ],
  "proofs": [
    {
      "content": "proof_1",
      "form": "proof form"
    }
  ]
}

In aggiunta alle proprietà evidenziate in precedenza:

id Identificativo univoco dello specifico evento di consenso
owner Identificativo univoco del proprietario dell’API
source private public Chiarisce se il consenso è stato inviato con API pubblica o privata

List consent

Esempi

GET https://consent.iubenda.com/consent

Parametri della query accettati:

from_time opzionale stringa Filtra i consensi per timestamp. Restituisce tutti i consensi da quel momento in poi (incluso). Formati accettati: 2018-02-22 00:40:00 UTC, 2018-02-22T00:40:00Z (ISO 8601), 1519260000 (timestamp unix in secondi). Default null
to_time opzionale stringa Filtra i consensi per timestamp. Restituisce tutti i consensi fino a quel momento (incluso). Formati accettati: 2018-02-22 00:40:00 UTC, 2018-02-22T00:40:00Z (ISO 8601), 1519260000 (timestamp unix in secondi). Default null
source opzionale stringa Filtra i consensi per chiave pubblica o privata. Valori possibili: public, private. Default null
subject_id opzionale stringa Filtra per ID dell’interessato. Default null
subject_email_exact opzionale stringa Filtra per email dell’interessato. Deve corrispondere esattamente (distingue tra maiuscole e minuscole). Default null
subject_email opzionale stringa Filtra per email dell’interessato. Cerca di far corrispondere parti dell’email fornita divisa per punti e spazi. Ad esempio “@test.com” restituirà gli interessati con un’email contenente “@test” o “com” (non distingue tra maiuscole e minuscole). Default null
subject_first_name opzionale stringa Filtra per nome dell’interessato. Deve corrispondere esattamente (distingue tra maiuscole e minuscole). Default null
subject_last_name opzionale stringa Filtra per cognome dell’interessato. Deve corrispondere esattamente (distingue tra maiuscole e minuscole). Default null
subject_full_name opzionale stringa Filtra per nome completo dell’interessato. Cerca di far corrispondere parti del nome completo fornito diviso per punti e spazi. Ad esempio “test hello” restituirà tutti gli interessati il cui nome completo contiene “test” o “hello” (non distingue tra maiuscole e minuscole). Default null
subject_verified opzionale stringa Filtra per stato verificato dell’interessato. Valori possibili: true, false. Default null
preference_key opzionale stringa Filtra per i consensi in cui esiste la chiave. Default null
starting_after opzionale stringa (UUID) Cursore che indica dopo quale consenso devono essere restituiti i risultati (cursore escluso). Default null
limit opzionale intero Numero restituito di risultati. Min: 1, Max: 100. Default 10

Ricorda che i risultati sono ordinati di default per timestamp discendente.

Risposta:

200 OK
[
  {
    "id": "bd25e1fc-da53-4b48-8fef-0ecb6068f666",
    "timestamp": "2018-06-11T15:20:07+00:00",
    "owner": "181789",
    "source": "public",
    "subject": {
      "id": "35d1f4ba-5a52-43d8-9fee-68e356a2a9bd",
      "email": "35d1f4ba_43d8_9fee_5a52_68e356a2a9bd@example.net",
      "first_name": "Filomena",
      "last_name": "Turcotte",
      "full_name": "Filomena Turcotte"
    },
    "preferences": {
      "newsletter": true
    }
  },
  {
    "id": "9b6c3cea-3350-4528-89ad-9148db358e20",
    "timestamp": "2018-06-11T15:20:07+00:00",
    "owner": "678255",
    "source": "private",
    "subject": {
      "id": "d685ed47-bdd8-44c4-92c4-0bbf961f2577",
      "email": "0bbf961f2577_92c4_bdd8_d685ed47_44c4@example.net",
      "first_name": "Rachael",
      "last_name": "Hammes",
      "full_name": "Rachael Hammes"
    },
    "preferences": {
      "newsletter": false
    }
  },
  {
    "id": "9783a523-f35e-4133-9875-0b6aed3bce32",
    "timestamp": "2018-06-11T15:20:07+00:00",
    "owner": "837689",
    "source": "public",
    "subject": {
      "id": "b6a14232-ba1a-4a20-afed-fa93c68eb5aa",
      "email": "afed.b6a14232.fa93c68eb5aa.4a20.ba1a@example.com",
      "first_name": "Oliver",
      "last_name": "Gibson",
      "full_name": "Oliver Gibson"
    },
    "preferences": {}
  },
  {
    "id": "92297398-e1fe-4e95-8f15-35d6dcb42897",
    "timestamp": "2018-06-11T15:20:07+00:00",
    "owner": "802558",
    "source": "private",
    "subject": {
      "id": "da024bf5-e571-499b-b20d-65a41789b5a6",
      "email": "e571_499b_65a41789b5a6_da024bf5_b20d@example.net",
      "first_name": "Ike",
      "last_name": "Miller",
      "full_name": "Ike Miller"
    },
    "preferences": {
      "third_party": true,
      "newsletter": true
    }
  },
  {
    "id": "7bbde760-b859-48bf-8cd3-9b1f035c8ef5",
    "timestamp": "2018-06-11T15:20:07+00:00",
    "owner": "615811",
    "source": "private",
    "subject": {
      "id": "a429fa55-c271-43f2-9ba1-8ce3b48c1093",
      "email": "43f2.a429fa55.8ce3b48c1093.9ba1.c271@example.com",
      "first_name": "Macy",
      "last_name": "Farrell",
      "full_name": "Macy Farrell"
    },
    "preferences": {
      "third_party": true,
      "newsletter": true
    }
  },
  {
    "id": "175aa1a4-b9ee-4278-8074-aa1b1384292a",
    "timestamp": "2018-06-11T15:20:07+00:00",
    "owner": "915663",
    "source": "private",
    "subject": {
      "id": "69753d3f-4048-401e-a3b2-112047b91e67",
      "email": "a3b2.4048.69753d3f.112047b91e67.401e@example.net",
      "first_name": "Kaleigh",
      "last_name": "Schulist",
      "full_name": "Kaleigh Schulist"
    },
    "preferences": {}
  },
  {
    "id": "fe7daa65-3d58-4c75-902f-ca0664442f73",
    "timestamp": "2018-06-11T15:20:06+00:00",
    "owner": "743776",
    "source": "public",
    "subject": {
      "id": "234fde6a-34b0-4371-b0a1-bac3436e6c12",
      "email": "bac3436e6c12.b0a1.4371.234fde6a.34b0@example.org",
      "first_name": "Carson",
      "last_name": "Heidenreich",
      "full_name": "Carson Heidenreich"
    },
    "preferences": {
      "newsletter": false
    }
  }
]

Tieni presente che questo metodo non include le prove e gli avvisi legali del consenso. Devi chiamare GET /consent/:id per ottenere l’evento Consent completo.

Subjects

GET subject

Esempi

GET https://consent.iubenda.com/subjects/:id
200 OK
{
  "id": "J02eZvKYlo2ClwuJ1",
  "email": "john@example.com",
  "first_name": "John",
  "last_name": "Doe",
  "verified": false,
  "timestamp": "2018-05-04T14:52:26Z"
  "preferences": {
    "privacy_policy": {
      "value": true,
      "consent_id": "de801ca9-abec-45e2-8f7c-729822cfffad"
    },
    "newsletter": {
      "value": true,
      "consent_id": "de801ca9-abec-45e2-8f7c-729822cfffad"
    }
  }
}

CREATE subject

Esempi

POST https://consent.iubenda.com/subjects
{
  "id": "J02eZvKYlo2ClwuJ1",
  "email": "john@example.com",
  "first_name": "John",
  "last_name": "Doe",
  "full_name": "John Doe",
  "verified": false
}

Questo metodo crea un nuovo interessato e può essere usato anche da consent. Controlla la documentazione riferita al metodo consent per ulteriori dettagli.

id compilato automaticamente (se non fornito) stringa
email opzionale stringa
first_name opzionale stringa
last_name opzionale stringa
full_name opzionale stringa
verified opzionale boolean campo che segnala se un interessato è verificato o meno, ad esempio attraverso double opt-in
In arrivo a breve
custom_attributes opzionale oggetto insieme di coppie chiave-valore contenenti attributi custom

La risposta è la seguente:

200 OK
{
  "id": "J02eZvKYlo2ClwuJ1",
  "timestamp": "2018-05-04T14:52:26Z"
}

UPDATE subject

Esempi

PATCH https://consent.iubenda.com/subjects/:id
{
  "first_name": "Mary",
  "verified": true
}

Questa chiamata aggiorna un interessato esistente.

La risposta è la seguente:

200 OK
{
  "id": "testsubject",
  "created_at": "2018-05-04T14:52:26Z"
}

Legal Notice

Ottieni la versione dell’avviso legale

Esempi

GET /legal_notices/:identifier/:version

Risposta:

# GET /legal_notices/privacy_policy/1
# 200 OK
{
    "identifier": "privacy_policy",
    "content": "legal text",
    "timestamp": "2018-05-16T13:55:57Z",
    "version": 1
}

Ottieni tutte le versioni degli avvisi legali

Esempi

GET /legal_notices/:identifier

Parametri della query accettati:

Nome Valore Descrizione
limit opzionale numero Limita il numero dei risultati. Default 10
starting_after opzionale numero Paginazione con cursore. Default null

Questo metodo supporta la paginazione con cursore tramite il parametro starting_after. Quest’ultimo prende la versione di un avviso legale esistente e restituisce gli oggetti in ordine inverso.

# 200 OK
[
    {
        "identifier": "privacy_policy",
        "timestamp": "2018-05-16T13:55:57Z",
        "version": 3
    },
    {
        "identifier": "privacy_policy",
        "timestamp": "2018-03-16T13:55:57Z",
        "version": 2
    },
    {
        "identifier": "privacy_policy",
        "timestamp": "2018-01-16T13:55:57Z",
        "version": 1
    }
]

Note: questo metodo si limita ai metadati e non include il contenuto dell’avviso legale. Devi chiamare GET /legal_notices/:identifier/:version per ottenere il documento completo.

Se usi iubenda per i tuoi documenti legali, aggiorneremo automaticamente i contenuti del metodo legal_notices ogni volta che i tuoi documenti legali vengono cambiati. Puoi scoprire di più su questa funzionalità qui.

Crea una Legal Notice

Esempi

POST /legal_notices
{
    "identifier": "privacy_policy",
    "content": "privacy policy content",
    "timestamp": "2018-05-16T13:55:57Z"
}

Con contenuti multi-lingua

POST /legal_notices
{
    "identifier": "privacy_policy",
    "content": {
        "en": "privacy policy content",
        "it": "contenuto della privacy policy"
    },
    "timestamp": "2018-05-16T13:55:57Z"
}

Risposta:

# 200 OK
{
    "identifier": "privacy_policy",
    "timestamp": "2018-05-16T13:55:57Z",
    "version": 1
}

Crea più Legal Notice

POST /legal_notices
[
    {
        "identifier": "privacy_policy",
        "content": "privacy policy content",
        "timestamp": "2018-05-16T13:55:57Z"
    },
        {
        "identifier": "cookie_policy",
        "content": "cookie policy content",
        "timestamp": "2018-05-16T13:55:57Z"
    }
]

Risposta:

# 200 OK
[
    {
        "identifier": "privacy_policy",
        "timestamp": "2018-05-16T13:55:57Z",
        "version": 1
    },
    {
        "identifier": "cookie_policy",
        "timestamp": "2018-05-16T13:55:57Z",
        "version": 1
    }
]

Esempi


consent

POST /consent

$ curl https://consent.iubenda.com/consent \
  -X POST \
  -H "ApiKey: your-private-api-key" \
  -H "Content-Type: application/json" \
  -d  '{ "subject": { "id": "J02eZvKYlo2ClwuJ1", "email": "subject@example.com" }, "preferences": { "newsletter": true }, "legal_notices": [{ "identifier": "privacy_policy" }], "proofs": [{ "content": "proof_content", "form": "proof_form" }] }'

Risposta

{
  "id": "1dbbc6f8-6a57-4407-b687-d6e6f818742f",
  "timestamp": "2018-06-06T09:48:44.265Z",
  "subject_id": "J02eZvKYlo2ClwuJ1"
}

GET /consent

$ curl https://consent.iubenda.com/consent/ \
  -H "ApiKey: your-private-api-key"

Risposta

[
  {
    "id": "b04c4b2b-80b7-439f-8997-ade3d35cbb95",
    "timestamp": "2018-06-04T08:11:34.000+00:00",
    "owner": "521686",
    "source": "private",
    "subject": {
      "id": "0e371678-634a-4016-83ce-9b7c36f828e6",
      "email": "83ce_634a_4016_9b7c36f828e6_0e371678@example.com",
      "first_name": "Kianna",
      "last_name": "Fahey",
      "full_name": "Kianna Fahey",
      "verified": false
    },
    "preferences": {
      "newsletter": false
    }
  },
  {
    "id": "ee6644ea-08e9-4aaa-a7a9-18602731a123",
    "timestamp": "2018-06-04T08:11:33.000+00:00",
    "owner": "681109",
    "source": "public",
    "subject": {
      "id": "8c6d1b71-0908-4604-948f-2f706500b5b1",
      "email": "0908.8c6d1b71.2f706500b5b1.4604.948f@example.org",
      "first_name": "Eleanora",
      "last_name": "Adams",
      "full_name": "Eleanora Adams",
      "verified": false
    },
    "preferences": {
      "newsletter": true
    }
  },
  {
    "id": "e7a9f5db-481e-4c80-ac7d-a35e35d37f98",
    "timestamp": "2018-06-04T08:11:33.000+00:00",
    "owner": "178473",
    "source": "private",
    "subject": {
      "id": "d084ab70-0460-4523-94b2-44841055b49c",
      "email": "94b2_4523_44841055b49c_0460_d084ab70@example.com",
      "first_name": "Abbie",
      "last_name": "Heidenreich",
      "full_name": "Abbie Heidenreich",
      "verified": false
    },
    "preferences": {
      "third_party": true
    }
  },
  {
    "id": "e3481085-296c-4b11-a999-73d5d1309128",
    "timestamp": "2018-06-04T08:11:33.000+00:00",
    "owner": "393753",
    "source": "private",
    "subject": {
      "id": "be8ca546-150d-4a6e-b2ac-ef76fb8a279e",
      "email": "b2ac_ef76fb8a279e_150d_4a6e_be8ca546@example.net",
      "first_name": "Grace",
      "last_name": "Dooley",
      "full_name": "Grace Dooley",
      "verified": false
    },
    "preferences": {
      "another_preference_key": false,
      "newsletter": false
    }
  },
  {
    "id": "e1be0320-a854-4b01-a468-49b1752ee4f3",
    "timestamp": "2018-06-04T08:11:33.000+00:00",
    "owner": "629879",
    "source": "public",
    "subject": {
      "id": "f8878254-c7ae-4169-b474-19e90d7b2f4f",
      "email": "f8878254_b474_19e90d7b2f4f_4169_c7ae@example.net",
      "first_name": "Providenci",
      "last_name": "Kulas",
      "full_name": "Providenci Kulas",
      "verified": false
    },
    "preferences": {
      "newsletter": false,
      "random_preference_key": true,
      "third_party": true,
      "another_preference_key": false
    }
  },
  {
    "id": "cbe2bba8-d31d-4a27-9e2d-b38de4f22a68",
    "timestamp": "2018-06-04T08:11:33.000+00:00",
    "owner": "989797",
    "source": "public",
    "subject": {
      "id": "6387dc5d-d474-4da8-8c40-8b197dee8d7c",
      "email": "6387dc5d.4da8.d474.8c40.8b197dee8d7c@example.com",
      "first_name": "Alan",
      "last_name": "Rutherford",
      "full_name": "Alan Rutherford",
      "verified": false
    },
    "preferences": {
      "newsletter": true,
      "random_preference_key": true
    }
  },
  {
    "id": "ca429c28-e1cd-4b95-87ae-48adb8fe56bb",
    "timestamp": "2018-06-04T08:11:33.000+00:00",
    "owner": "885846",
    "source": "public",
    "subject": {
      "id": "b2ad578d-0aa9-4bd5-becd-e2e7a2019e7a",
      "email": "b2ad578d.becd.e2e7a2019e7a.0aa9.4bd5@example.net",
      "first_name": "Ruby",
      "last_name": "Lemke",
      "full_name": "Ruby Lemke",
      "verified": false
    },
    "preferences": {
      "third_party": true,
      "random_preference_key": false
    }
  },
  {
    "id": "bf12770e-840a-40cd-ab79-5d88576b6b73",
    "timestamp": "2018-06-04T08:11:33.000+00:00",
    "owner": "369168",
    "source": "public",
    "subject": {
      "id": "d4f24d92-56c2-4372-8696-fec829da5ccc",
      "email": "fec829da5ccc.8696.4372.56c2.d4f24d92@example.com",
      "first_name": "Hank",
      "last_name": "Klein",
      "full_name": "Hank Klein",
      "verified": false
    },
    "preferences": {
      "newsletter": false
    }
  },
  {
    "id": "b489e2d4-2fc6-44e1-ba54-e5f81000d30a",
    "timestamp": "2018-06-04T08:11:33.000+00:00",
    "owner": "781022",
    "source": "public",
    "subject": {
      "id": "38bc623f-b386-4b66-8ee6-5e7d91c19800",
      "email": "38bc623f.8ee6.4b66.5e7d91c19800.b386@example.net",
      "first_name": "Kamren",
      "last_name": "Pacocha",
      "full_name": "Kamren Pacocha",
      "verified": false
    },
    "preferences": {
      "newsletter": true
    }
  },
  {
    "id": "b2ec7aa8-35e7-470c-8b51-bd39fa686a3a",
    "timestamp": "2018-06-04T08:11:33.000+00:00",
    "owner": "527898",
    "source": "public",
    "subject": {
      "id": "0cc94c66-d9eb-4ace-af3d-1d48fba265f9",
      "email": "1d48fba265f9_4ace_af3d_d9eb_0cc94c66@example.net",
      "first_name": "Maryjane",
      "last_name": "Wiegand",
      "full_name": "Maryjane Wiegand",
      "verified": false
    },
    "preferences": {
      "newsletter": true
    }
  }
]

GET /consent/:id

$ curl https://consent.iubenda.com/consent/1dbbc6f8-6a57-4407-b687-d6e6f818742f \
  -H "ApiKey: your-private-api-key"

Risposta

{
  "id": "1dbbc6f8-6a57-4407-b687-d6e6f818742f",
  "timestamp": "2018-06-06T09:48:44.000+00:00",
  "owner": "123",
  "source": "public",
  "subject": {
    "id": "J02eZvKYlo2ClwuJ1",
    "email": "subject@example.com"
  },
  "preferences": {
    "newsletter": "true"
  },
  "legal_notices": [
    {
      "identifier": "privacy_policy",
      "version": "latest"
    }
  ],
  "proofs": [
    {
      "form": "proof_form",
      "content": "proof_content"
    }
  ]
}

POST /consent

$consent_data = array(
    "subject" => array(
        "id" => "J02eZvKYlo2ClwuJ1",
        "email" => "subject@example.com"
    ),
    "legal_notices" => array(
        array(
            "identifier" => "newsletter"
        ),
        array(
            "identifier" => "privacy_policy"
        )
    ),
    "proofs" => array(
        array(
            "content" => "proof_content",
            "form" => "proof_form"
        )
    ),
    "preferences" => array(
        "newsletter" => true,
        "privacy_policy" => true
    )
);

$req = curl_init();
curl_setopt($req, CURLOPT_URL, 'https://consent.iubenda.com/consent');
curl_setopt($req, CURLOPT_RETURNTRANSFER, true);
curl_setopt($req, CURLOPT_HTTPHEADER, array(
    'ApiKey: your-secret-api-key',
    'Content-Type: application/json'
));
curl_setopt($req, CURLOPT_POST, true);
curl_setopt($req, CURLOPT_POSTFIELDS, json_encode($consent_data));

$response = curl_exec($req);

Risposta

{
  "id": "7abe5f70-22e4-4181-878c-9f931034fab5",
  "timestamp": "2018-06-08T08:25:30.395Z",
  "subject_id": "J02eZvKYlo2ClwuJ1"
}

GET /consent

$req = curl_init();
curl_setopt($req, CURLOPT_URL, 'https://consent.iubenda.com/consent');
curl_setopt($req, CURLOPT_RETURNTRANSFER, true);
curl_setopt($req, CURLOPT_HTTPHEADER, array(
    'ApiKey: your-secret-api-key',
    'Content-Type: application/json'
));

$response = curl_exec($req);

Risposta

 
[
  {
    "id": "b04c4b2b-80b7-439f-8997-ade3d35cbb95",
    "timestamp": "2018-06-04T08:11:34.000+00:00",
    "owner": "521686",
    "source": "private",
    "subject": {
      "id": "0e371678-634a-4016-83ce-9b7c36f828e6",
      "email": "83ce_634a_4016_9b7c36f828e6_0e371678@example.com",
      "first_name": "Kianna",
      "last_name": "Fahey",
      "full_name": "Kianna Fahey",
      "verified": false
    },
    "preferences": {
      "newsletter": false
    }
  }
]

GET /consent/:id

$req = curl_init();
curl_setopt($req, CURLOPT_RETURNTRANSFER, true);
curl_setopt($req, CURLOPT_URL, 'https://consent.iubenda.com/consent/7abe5f70-22e4-4181-878c-9f931034fab5');
curl_setopt($req, CURLOPT_HTTPHEADER, array(
    'ApiKey: your-secret-api-key',
    'Content-Type: application/json'
));

$response = curl_exec($req);

Risposta

{
  "id": "7abe5f70-22e4-4181-878c-9f931034fab5",
  "timestamp": "2018-06-08T08:25:30.000+00:00",
  "owner": "123",
  "source": "private",
  "subject": {
    "id": "J02eZvKYlo2ClwuJ1",
    "email": "subject@example.com"
  },
  "preferences": {
    "newsletter": true,
    "privacy_policy": true
  },
  "legal_notices": [
    {
      "identifier": "newsletter",
      "version": "1.0"
    },
    {
      "identifier": "privacy_policy",
      "version": "1.0"
    }
  ],
  "proofs": [
    {
      "form": "proof_form",
      "content": "proof_content"
    }
  ]
}


subject

POST /subject

$ curl https://consent.iubenda.com/subjects \
  -X POST \
  -H "ApiKey: your-private-api-key" \
  -H "Content-Type: application/json" \
  -d '{ "email": "john@example.com", "first_name": "John", "last_name": "Doe" }'

Risposta

{
  "id": "9f5a50f6-052c-4595-8bc4-760dc05d86ba",
  "timestamp": "2018-06-06T11:05:41.600Z"
}

GET /subject/:id

$ curl https://consent.iubenda.com/subjects/9f5a50f6-052c-4595-8bc4-760dc05d86ba \
  -H "ApiKey: your-private-api-key"

Risposta

{
  "id": "9f5a50f6-052c-4595-8bc4-760dc05d86ba",
  "owner_id": "123",
  "email": "john@example.com",
  "first_name": "John",
  "last_name": "Doe",
  "full_name": null,
  "preferences": null,
  "verified": false,
  "timestamp": "2018-06-06T11:05:41+00:00"
}

PATCH /subject/:id

$ curl https://consent.iubenda.com/subjects/9f5a50f6-052c-4595-8bc4-760dc05d86ba \
  -X PATCH \
  -H "ApiKey: your-private-api-key" \
  -H "Content-Type: application/json" \
  -d '{ "email": "mary@example.com", "first_name": "Mary", "last_name": "Doe" }'

Risposta

{
  "id": "9f5a50f6-052c-4595-8bc4-760dc05d86ba",
  "timestamp": "2018-06-06T11:05:41.000+00:00"
}

POST /subject

$subject_data = array(
    "email" => "subject@example.com",
    "first_name" => "John",
    "last_name" => "Doe"
);

$req = curl_init();
curl_setopt($req, CURLOPT_URL, 'https://consent.iubenda.com/subjects');
curl_setopt($req, CURLOPT_RETURNTRANSFER, true);
curl_setopt($req, CURLOPT_HTTPHEADER, array(
    'ApiKey: your-secret-api-key',
    'Content-Type: application/json'
));
curl_setopt($req, CURLOPT_POST, true);
curl_setopt($req, CURLOPT_POSTFIELDS, json_encode($subject_data));

$response = curl_exec($req);

Risposta

{
  "id": "df39c1bf-5f27-4c3a-bf94-64360cc7e4f8",
  "timestamp": "2018-06-11T08:57:13.662Z"
}

GET /subject/:id

$req = curl_init();
curl_setopt($req, CURLOPT_RETURNTRANSFER, true);
curl_setopt($req, CURLOPT_URL, 'https://consent.iubenda.com/subjects/df39c1bf-5f27-4c3a-bf94-64360cc7e4f8');
curl_setopt($req, CURLOPT_HTTPHEADER, array(
    'ApiKey: your-secret-api-key',
    'Content-Type: application/json'
));

$response = curl_exec($req);

Risposta

{
  "id": "df39c1bf-5f27-4c3a-bf94-64360cc7e4f8",
  "owner_id": "123",
  "email": "subject@example.com",
  "first_name": "John",
  "last_name": "Doe",
  "full_name": null,
  "preferences": null,
  "verified": false,
  "timestamp": "2018-06-11T08:57:13+00:00"
}

PATCH /subject/:id

$subject_data = array(
    "first_name" => "Mary"
);

$req = curl_init();
curl_setopt($req, CURLOPT_URL, 'https://consent.iubenda.com/subjects/df39c1bf-5f27-4c3a-bf94-64360cc7e4f8');
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'PATCH');
curl_setopt($req, CURLOPT_RETURNTRANSFER, true);
curl_setopt($req, CURLOPT_HTTPHEADER, array(
    'ApiKey: your-secret-api-key',
    'Content-Type: application/json'
));
curl_setopt($req, CURLOPT_POSTFIELDS, json_encode($subject_data));

$response = curl_exec($req);

Risposta

{
  "id": "df39c1bf-5f27-4c3a-bf94-64360cc7e4f8",
  "timestamp": "2018-06-11T08:57:13.000+00:00"
}


legal_notices

POST /legal_notices

$ curl https://consent.iubenda.com/legal_notices \
  -X POST \
  -H "ApiKey: your-private-api-key" \
  -H "Content-Type: application/json" \
  -d '{ "identifier": "privacy_policy", "content": "privacy policy legal text" }'

Risposta

{
  "identifier": "privacy_policy",
  "version": 1,
  "timestamp": "2018-06-06T15:56:10.090Z"
}

GET /legal_notices/:identifier/:version

$ curl https://consent.iubenda.com/legal_notices/privacy_policy/1 \
  -H "ApiKey: your-private-api-key"

Risposta

{
  "identifier": "privacy_policy",
  "version": 1,
  "timestamp": "2018-06-06T15:56:10.000+00:00",
  "content": "privacy policy legal text"
}

GET /legal_notices/:identifier

$ curl https://consent.iubenda.com/legal_notices/privacy_policy \
  -H "ApiKey: your-private-api-key"

Risposta

[
  {
    "identifier": "privacy_policy",
    "version": 1,
    "timestamp": "2018-06-06T15:56:10.000+00:00"
  }
]

Con parametri limit e starting_after (paginazione):

$ curl https://consent.iubenda.com/legal_notices/privacy_policy?limit=20&starting_after=3 \
  -H "ApiKey: your-private-api-key" \
  -G

Risposta

[
  {
    "identifier": "privacy_policy",
    "version": 2,
    "timestamp": "2018-06-06T15:56:10.000+00:00"
  },
  {
    "identifier": "privacy_policy",
    "version": 1,
    "timestamp": "2018-06-06T15:56:10.000+00:00"
  }
]

POST /legal_notices

$legal_notice_data = array(
    "identifier" => "privacy_policy",
    "content" => "privacy policy legal text"
);

$req = curl_init();
curl_setopt($req, CURLOPT_URL, 'https://consent.iubenda.com/legal_notices');
curl_setopt($req, CURLOPT_RETURNTRANSFER, true);
curl_setopt($req, CURLOPT_HTTPHEADER, array(
    'ApiKey: your-secret-api-key',
    'Content-Type: application/json'
));
curl_setopt($req, CURLOPT_POST, true);
curl_setopt($req, CURLOPT_POSTFIELDS, json_encode($legal_notice_data));

$response = curl_exec($req);

Risposta

{
  "identifier": "privacy_policy",
  "version": 1,
  "timestamp": "2018-06-11T10:26:00.413Z"
}

GET /legal_notices/:identifier/:version

$req = curl_init();
curl_setopt($req, CURLOPT_RETURNTRANSFER, true);
curl_setopt($req, CURLOPT_URL, 'https://consent.iubenda.com/legal_notices/privacy_policy/1');
curl_setopt($req, CURLOPT_HTTPHEADER, array(
    'ApiKey: your-secret-api-key',
    'Content-Type: application/json'
));

$response = curl_exec($req);

Risposta

{
  "identifier": "privacy_policy",
  "version": 1,
  "timestamp": "2018-06-11T10:26:00.000+00:00",
  "content": "privacy policy legal text"
}

GET /legal_notices/:identifier

$req = curl_init();
curl_setopt($req, CURLOPT_RETURNTRANSFER, true);
curl_setopt($req, CURLOPT_URL, 'https://consent.iubenda.com/legal_notices/privacy_policy');
curl_setopt($req, CURLOPT_HTTPHEADER, array(
    'ApiKey: your-secret-api-key',
    'Content-Type: application/json'
));

$response = curl_exec($req);

Risposta

[
  {
    "identifier": "privacy_policy",
    "version": 5,
    "timestamp": "2018-06-11T10:35:17.000+00:00"
  },
  {
    "identifier": "privacy_policy",
    "version": 4,
    "timestamp": "2018-06-11T10:35:16.000+00:00"
  },
  {
    "identifier": "privacy_policy",
    "version": 3,
    "timestamp": "2018-06-11T10:35:15.000+00:00"
  },
  {
    "identifier": "privacy_policy",
    "version": 2,
    "timestamp": "2018-06-11T10:35:13.000+00:00"
  },
  {
    "identifier": "privacy_policy",
    "version": 1,
    "timestamp": "2018-06-11T10:26:00.000+00:00"
  }
]

Con parametri limit e starting_after (paginazione):

$req = curl_init();
curl_setopt($req, CURLOPT_RETURNTRANSFER, true);
curl_setopt($req, CURLOPT_URL, 'https://consent.iubenda.com/legal_notices/privacy_policy?limit=3&starting_after=4');
curl_setopt($req, CURLOPT_HTTPHEADER, array(
    'ApiKey: your-secret-api-key',
    'Content-Type: application/json'
));

$response = curl_exec($req);

Risposta

[
  {
    "identifier": "privacy_policy",
    "version": 3,
    "timestamp": "2018-06-11T10:35:15.000+00:00"
  },
  {
    "identifier": "privacy_policy",
    "version": 2,
    "timestamp": "2018-06-11T10:35:13.000+00:00"
  },
  {
    "identifier": "privacy_policy",
    "version": 1,
    "timestamp": "2018-06-11T10:26:00.000+00:00"
  }
]