Referência da API do GDPR

Saiba como usar a API da Singular para dar suporte a solicitações de GDPR.

 

Pontos de extremidade do GDPR

Ponto de extremidade Método URL Descrição
Discovery GET https://gdpr.singular.net/gdpr/discovery Retorna todos os tipos de solicitação atualmente suportados que a Singular pode processar por meio da API do GDPR.
Requests POST https://gdpr.singular.net/gdpr/requests Use esse endpoint para enviar novas solicitações de GDPR, enviadas por meio de uma solicitação HTTP POST, especificando as IDs de dispositivo para os titulares de dados solicitados.
Status GET https://gdpr.singular.net/gdpr/requests/request_id Retorna o status atual de uma solicitação enviada anteriormente, identificada por sua ID de solicitação.
Cancellation DELETE https://gdpr.singular.net/gdpr/requests/request_id Use esse ponto de extremidade para cancelar uma solicitação anterior. Isso é possível desde que a solicitação esteja no status "pendente".

Ponto de extremidade de descoberta

GET https://gdpr.singular.net/api/gdpr/discovery

Uso

O ponto de extremidade OpenGDPR Discovery retorna todos os tipos de solicitação atualmente suportados que a Singular pode processar por meio da API do GDPR.

Exemplo de consulta

import requests
  response = requests.get("https://gdpr.singular.net/api/gdpr/discovery")
  print(response.text)

Exemplo de saída

{
    "api_version": "0.1.4",
    "supported_identities": [
      {"identity_format": "raw","identity_type": "android_advertising_id"},
      {"identity_format": "raw","identity_type": "android_id"},
      {"identity_format": "raw","identity_type": "ios_advertising_id"},
      {"identity_format": "raw","identity_type": "ios_vendor_id"},
      {"identity_format": "raw","identity_type": "user_id"}
    ],
    "supported_subject_request_types": [
        "erasure",
        "access"
    ]
  }

Ponto de extremidade Requests (Solicitações)

POST https://gdpr.singular.net/api/gdpr/requests

Uso

O endpoint OpenGDPR Requests lida com novas solicitações GDPR, enviadas por meio de uma solicitação HTTP POST, especificando as IDs de dispositivo para os titulares dos dados solicitados.

Solicitações compatíveis

O ponto de extremidade OpenGDPR Requests suporta os seguintes tipos de solicitações, correspondentes a diferentes direitos do GDPR:

  • `erasure` - suporte a solicitações de usuários para exclusão de dados como parte do Artigo 17 do GDPR, Direito de exclusão
  • `access` - suporte a solicitações de usuários para acesso a dados como parte do Artigo 15 do GDPR, Direito de acesso

IDs compatíveis

O ponto de extremidade OpenGDPR Requests é compatível com os seguintes tipos de IDs:

  • `android_advertising_id` - solicitações feitas por meio do fornecimento da ID de publicidade do Google, também conhecida como GAID ou AIFA
  • `android_id` - solicitações feitas com o fornecimento do Android ID, também conhecido como ANDI
  • `ios_advertising_id` - solicitações feitas com o fornecimento do IDFA, que é o ID de publicidade do iOS. Observe que as solicitações de dispositivos"limit-ad-trackingou ATT AuthorizationStatusdenied" que contenham IDFAs zerados ("00000000-0000-0000-0000-000000000000") serão ignoradas e a API não retornará com erro.
  • `ios_vendor_id` - solicitações feitas com o fornecimento do IDFV, que é o ID do iOS para fornecedores
  • `user_id` - solicitações feitas com o fornecimento do ID de usuário personalizado

Exemplo de consulta

import requests
  
  url = "https://gdpr.singular.net/api/gdpr/requests"
  
  payload = {
    "subject_request_id": "1c8b23f4-12eb-4fe8-af1c-0f72807dfec2",
    "subject_request_type": "access",
    "submitted_time": "2018-05-25T10:00:00Z",
    "subject_identities": [
      {
        "identity_type": "android_advertising_id",
        "identity_value": "38400000-8cf0-11bd-b23e-10b96e40000d",
        "identity_format": "raw"
      }
    ],
    "property_id": "Android:com.myapp.xyz",
  }
  
  headers = {
    "content-type": "application/json",
    "Authorization": "[API_KEY]"
  }
  
  response = requests.post(url, json=payload, headers=headers)
  print(response.text)

Parâmetros da consulta

Parâmetro Formato Descriçãodo parâmetro Exemplo
subject_request_id String Cadeia de caracteres UUIDv4  
subject_request_type String Valor de cadeia de caracteres que representa o tipo de solicitação OpenGDPR. Atualmente, a Singular suporta os valores: "erasure" (apagamento), "portability" (portabilidade), "access" (acesso)  
subject_identities Array Uma lista de objetos de identidade que descreve o tipo, o valor e o formato de cada ID de dispositivo para o qual a solicitação deve ser atendida. Uma solicitação pode conter até 100 IDs de dispositivos.
[
  {
    "identity_type":
"android_advertising_id", "identity_value":
"38400-8cf0-11bd-b23e-1000d", "identity_format": "raw" } ]
submitted_time   Cadeia de datas RFC 3339 que representa a hora da solicitação original pelo titular dos dados 2010-05-25T10:00:00Z
property_id String O par [platform]:[longname] para especificar o aplicativo relevante. iOS:com.myapp.xyz

Exemplo de saída

{
    "controller_id":"example_controller_id",
    "received_time":"2018-05-25T10:00:01Z",
    "expected_completion_time": "2018-06-24T10:00:01Z",
    "encoded_request":"<BASE64 ENCODED REQUEST>",
    "subject_request_id":"1c8b23f4-12eb-4fe8-af1c-0f72807dfec2",
    "results_url": "https://url-to-results-in-json-format",
    "api_version": "0.1.4"
  }

Ponto de extremidade de status

GET https://gdpr.singular.net/api/gdpr/requests/<REQUEST_ID>

Uso

Retorna o status atual de uma solicitação enviada anteriormente, identificada por sua ID de solicitação.

Exemplo de consulta

import requests
  url = "https://gdpr.singular.net/api/gdpr/requests/"
  subject_request_id = "1c8b23f4-12eb-4fe8-af1c-0f72807dfec2"
  headers = {"Authorization": "<API KEY>"}
  response = requests.get(url+subject_request_id, headers=headers)
  print(response.text)

Exemplo de saída

{
      "controller_id": "example_controller_id",
      "request_status": "completed",
      "expected_completion_time": "2018-06-24T10:00:01Z",
      "subject_request_id": "1c8b23f4-12eb-4fe8-af1c-0f72807dfec2",
      "api_version": "0.1.4"
  }

Ponto de extremidade de cancelamento

DELETE https://gdpr.singular.net/gdpr/requests/<REQUEST_ID>

Utilização

Use esse ponto de extremidade para cancelar uma solicitação anterior. Isso é possível desde que a solicitação esteja no status "pendente".

Consulta de amostra

import requests
  url = "https://gdpr.singular.net/api/gdpr/requests/"
  subject_request_id = "1c8b23f4-12eb-4fe8-af1c-0f72807dfec2"
  headers = {"Authorization": "<API KEY>"}
  response = requests.delete(url+subject_request_id, headers=headers)
  print(response.text)

Exemplo de saída

{
    "controller_id":"example_controller_id",
    "subject_request_id":"1c8b23f4-12eb-4fe8-af1c-0f72807dfec2",
    "received_time":"2018-05-25T10:00:01Z",
    "api_version":"0.1"
  }