Passa al contenuto principale

Integrazione dell'archivio consensi tramite REST API


In questa sezione è mostrata l'integrazione e consultazione dell'archivio consensi, necessario per poter memorizzare delle prove del consenso al trattamento dei dati personali che gli utenti possono aver prestato consapevolmente navigando sul tuo sito web.

Questa documentazione descrive gli endpoint per la gestione dei consensi all'interno dei webspace. L'URL base dell'API è

https://api.avacy.eu/:team/v2

Crea un nuovo consenso per uno specifico spazio web

POST /webspaces/:id/consents

Parametri di route

id (integer, obbligatorio): l'identificativo dello spazio web su cui viene creato il consenso.

Parametri nella richiesta (formato JSON):

identifier (stringa, obbligatorio): Il tipo di identificatore utilizzato per il soggetto (ad esempio, email, userID).

subject (oggetto, obbligatorio): Dettagli del soggetto che fornisce il consenso. Deve includere l'identifier specificato sopra.

ip_address (stringa, obbligatorio): L'indirizzo IP del soggetto che fornisce il consenso.

proofs (array, facoltativo): Un array di prove che supportano il consenso.

legal_notices (array, facoltativo): Un elenco di avvisi legali a cui l'utente sta acconsentendo.

preferences (oggetto, obbligatorio): Un oggetto contenente le preferenze del soggetto riguardo al consenso.

Esempio:

{
  "identifier":  "email",
  "subject":  {
    "email":  "utente@example.com",
    "name":  "Mario Rossi"
  },
  "ip_address":  "192.168.0.1",
  "proofs":  "very-long-encoded-string",
  "legal_notices":  ["privacy_policy",  "terms_of_service"],
  "preferences":  {
    "newsletter":  true,
    "promotions":  false
  }
}

Risposta di Successo

Codice: 201 Created

{
  "data":  {
    "id":  123,
    "ip_address":  "192.168.0.1",
    "subject_id":  "utente@example.com",
    "proofs":  [
      {
        "type":  "screenshot",
        "value":  "stringabase64"
      }
    ],
    "legal_notices":  ["privacy_policy",  "terms_of_service"],
    "consent_data":  "{\"newsletter\": true, \"promotions\": false}",
    "subject_data":  "{\"email\": \"utente@example.com\", \"name\": \"Mario Rossi\"}"
  }
}

Risposta di Errore

Codice: 400 Bad Request se i campi richiesti sono mancanti o non validi.

Codice: 404 Not Found se il webspace con l'ID specificato non esiste.

Leggere i consensi su uno spazio web

GET /webspaces/:id/consents

Parametri di route

id (integer, obbligatorio): l'identificativo dello spazio web da cui leggere i consensi.

Parametri in query string

limit (integer, facoltativo): Il numero massimo di consensi da restituire. Il valore predefinito è 15.

orderBy (stringa, facoltativo): Campo su cui ordinare i risultati. Il valore predefinito è id.

orderType (stringa, facoltativo): Tipo di ordinamento, può essere asc o desc. Il valore predefinito è asc.

page (integer, facoltativo): Numero di pagina per la paginazione.

startdate (data, facoltativo): Data di inizio per filtrare i consensi in base alla data di creazione.

enddate (data, facoltativo): Data di fine per filtrare i consensi in base alla data di creazione.

subject_id: l'identificativo del soggetto di cui si vuole leggere i consensi.

Esempio di richiesta:

/v2/webspaces/1/consents?limit=10&orderBy=created_at&orderType=desc&startdate=2023-01-01&enddate=2023-12-31&subject_id=utente@example.com

Risposta di Successo

Codice: 200 OK

{
  "data":  [
    {
      "id":  123,
      "ip_address":  "192.168.0.1",
      "subject_id":  "utente@example.com",
      "created_at":  "2023-01-15T10:00:00Z",
      "legal_notices":  ["privacy_policy",  "terms_of_service"],
      "consent_data":  "{\"newsletter\": true, \"promotions\": false}",
      "subject_data":  "{\"email\": \"utente@example.com\", \"name\": \"Mario Rossi\"}"
    },
    {
      "id":  124,
      "ip_address":  "192.168.0.2",
      "subject_id":  "altroutente@example.com",
      "created_at":  "2023-02-10T12:30:00Z",
      "legal_notices":  ["terms_of_service"],
      "consent_data":  "{\"newsletter\": false, \"promotions\": true}",
      "subject_data":  "{\"email\": \"altroutente@example.com\", \"name\": \"Giovanna Bianchi\"}"
    }
  ],
  "meta":  {
    "current_page":  1,
    "per_page":  10,
    "total":  2
  }
}

Risposta di Errore

Codice: 400 Bad Request se i parametri della query sono non validi.

Codice: 404 Not Found se non vengono trovati consensi che corrispondono ai criteri.