Referencia de API de GDPR

Aprenda a utilizar la API Singular para dar soporte a las solicitudes GDPR.

 

Puntos finales GDPR

Punto final Método URL Descripción
Discovery GET https://gdpr.singular.net/gdpr/discovery Devuelve todos los tipos de solicitud admitidos actualmente que Singular puede procesar a través de la API GDPR.
Requests POST https://gdpr.singular.net/gdpr/requests Utilice este punto final para enviar nuevas solicitudes GDPR, enviadas a través de una solicitud HTTP POST especificando los ID de dispositivo de los sujetos de datos solicitados.
Status GET https://gdpr.singular.net/gdpr/requests/request_id Devuelve el estado actual de una solicitud enviada previamente, identificada por su ID de solicitud.
Cancellation DELETE https://gdpr.singular.net/gdpr/requests/request_id Utilice este punto final para cancelar una solicitud anterior. Esto es posible siempre que la solicitud se encuentre en estado "pendiente".

Punto final de descubrimiento

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

Uso

El punto final OpenGDPR Discovery devuelve todos los tipos de solicitud admitidos actualmente que Singular puede procesar a través de la API GDPR.

Ejemplo de consulta

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

Ejemplo de salida

{
    "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"
    ]
  }

Punto final de solicitudes

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

Uso

El punto final OpenGDPR Requests gestiona nuevas solicitudes GDPR, enviadas a través de una solicitud HTTP POST mientras se especifican los ID de dispositivo para los sujetos de datos solicitados.

Solicitudes admitidas

El endpoint OpenGDPR Requests admite los siguientes tipos de solicitudes, correspondientes a diferentes derechos GDPR:

  • `erasure` - solicitudes de eliminación de datos como parte del artículo 17 del GDPR, Derecho a la eliminación
  • `access` - solicitudes de acceso a los datos en virtud del artículo 15 del RGPD, Derecho de acceso.

ID compatibles

El punto final OpenGDPR Requests admite los siguientes tipos de ID:

  • `android_advertising_id` - solicitudes realizadas proporcionando el ID de publicidad de Google, también conocido como GAID o AIFA
  • `android_id` - solicitudes realizadas proporcionando el ID de Android, también conocido como ANDI
  • `ios_advertising_id` - solicitudes realizadas proporcionando IDFA, que es el ID de publicidad de iOS. Tenga en cuenta que las solicitudes de dispositivos"limit-ad-trackingor ATT AuthorizationStatusdenied" que contengan IDFA a cero ("00000000-0000-0000-0000-000000000000") se ignorarán y la API no devolverá ningún error. En su lugar, debe utilizarse `ios_vendor_id`.
  • `ios_vendor_id` - solicitudes realizadas proporcionando IDFV, que es el ID de iOS para proveedores
  • `user_id` - solicitudes realizadas proporcionando el ID de usuario personalizado

Ejemplo 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 de consulta

Parámetro Formato Descripción Ejemplo
subject_request_id String UUIDv4 cadena  
subject_request_type String Valor de cadena que representa el tipo de solicitud OpenGDPR. Singular admite actualmente los valores "borrado", "portabilidad", "acceso"  
subject_identities Array Una lista de objetos de identidad que describen el tipo, valor y formato de cada ID de dispositivo para el que se realiza la solicitud. Una solicitud puede contener hasta 100 identificadores de dispositivo.
[
  {
    "identity_type":
"android_advertising_id", "identity_value":
"38400-8cf0-11bd-b23e-1000d", "identity_format": "raw" } ]
submitted_time   RFC 3339 cadena de fecha que representa la hora de la solicitud original por parte del interesado 2010-05-25T10:00:00Z
property_id String El par [platform]:[longname] para especificar la aplicación pertinente. iOS:com.myapp.xyz

Ejemplo de salida

{
    "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"
  }

Estado del punto final

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

Uso

Devuelve el estado actual de una solicitud enviada previamente, identificada por su ID de solicitud.

Ejemplo 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)

Ejemplo de salida

{
      "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"
  }

Punto final de cancelación

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

Uso

Utilice este punto final para cancelar una solicitud anterior. Esto es posible siempre que la solicitud se encuentre en estado "pendiente".

Ejemplo 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.delete(url+subject_request_id, headers=headers)
  print(response.text)

Ejemplo de salida

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