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