Referencia de la API del punto final de EVENT
Caso de uso de servidor a servidor
La API EVENT permite el seguimiento de eventos en sus aplicaciones. Cuando su aplicación envía datos específicos del dispositivo a su servidor, que a su vez los transmite a los servidores de Singular, la plataforma procesa esta información para: Event Attribution, y App Revenue Metrics. Estos datos procesados rellenan automáticamente sus informes, registros de exportación y postbacks configurados, proporcionando análisis completos para sus campañas de marketing.
La API REST de Singular permite la integración directa de servidor a servidor como alternativa al SDK. Mientras que el SDK recopila automáticamente los datos del dispositivo y de la aplicación, el enfoque S2S requiere que usted:
- Recopilar los datos necesarios de su aplicación
- Reenvíe estos datos a su servidor
- Actualizar/obtener detalles del dispositivo del gráfico del dispositivo
- Enviar el evento a Singular a través de REST API
Puntos clave
- Flexibilidad: Control total sobre la recopilación y transmisión de datos
- Paridad de funciones: Soporta todas las funcionalidades del SDK cuando se proporcionan los datos adecuados
- Ruta de integración: Cliente → Su servidor → API singular
- Procesamiento en tiempo real: Una solicitud cada vez, sin procesamiento por lotes
- Flujo de datos secuencial: Los eventos deben procesarse en orden cronológico
- Deduplicación de datos: Singular no deduplica los datos recibidos. Se recomienda enviar una (1) solicitud con éxito y guardar los registros en caso de que deba repetirse una solicitud.
- Validación de datos: Los datos a nivel de dispositivo son permanentes y no pueden borrarse una vez introducidos. Realice una validación exhaustiva de los datos antes de enviarlos a Singular para garantizar su exactitud.
Requisitos previos
- Debe establecerse una sesión antes de recibir cualquier seguimiento de eventos.
- Un orden de sesión no válido provocará incoherencias en los datos.
Cómo empezar
La documentación del endpoint EVENT proporciona:
- Parámetros obligatorios
- Parámetros opcionales
- Ejemplos de solicitud
- Códigos de respuesta y errores
- Pruebas de eventos
Este enfoque del lado del servidor le ofrece un mayor control sobre su integración al tiempo que mantiene todas las capacidades del SDK.
Informes de Eventos
Singular puede recopilar datos sobre eventos dentro de la aplicación para ayudar a analizar el rendimiento de sus campañas de marketing. Los eventos pueden incluir cualquier interacción del usuario, desde inicios de sesión y registros hasta subidas de nivel en una aplicación de juegos.
Antes de implementar una integración SDK/S2S con Singular, debe tener una lista de los eventos que su organización desea rastrear (consulte Definición de eventos dentro de la aplicación).
El nombre del evento que incluya en la llamada es la forma en que se identificará el evento en los informes, exportaciones y devoluciones de Singular.
Notas:
- Singular recomienda pasar eventos utilizando la convención de nomenclatura de eventos y atributos estándar de Singular. El uso de eventos estándar agiliza la asignación y la compatibilidad con los eventos estándar de sus socios en las integraciones.
- Recomendamos encarecidamente pasar los nombres de eventos y otros atributos en inglés para que sean compatibles con cualquier socio de terceros y soluciones de análisis que desee utilizar.
Importante:
- Los nombres de eventos están limitados a 32 caracteres ASCII. Para caracteres no ASCII, el límite es de 32 bytes una vez convertidos a UTF-8.
- Los atributos y valores de los eventos están limitados a 500 caracteres ASCII.
Punto final de la API de eventos
Método HTTP y punto final de evento
GET https://s2s.singular.net/api/v1/evt
Parámetros obligatorios
En la siguiente tabla se enumeran los parámetros obligatorios que admite este punto final. Todos los parámetros enumerados son parámetros de consulta.
GET /api/v1/evt?param1=value1¶m2=value2
- Todos los parámetros obligatorios deben incluirse en las solicitudes de la API de eventos.
- Los parámetros deben seguir el formato y los tipos de datos especificados
Parámetros obligatorios | |
---|---|
Clave API | |
Parámetro | Descripción |
|
El parámetro a especifica la clave Singular SDK Key. Obtenga la clave SDK en la interfaz de Singular, en Herramientas de desarrollo del menú principal. Nota: No utilice la clave API de generación de informes, ya que se rechazarán los datos. Valor de ejemplo:
|
Parámetros del identificador del dispositivo | |
Parámetro | Descripción |
Plataformas soportadas:
|
El parámetro idfa especifica el Identificador para Anunciantes (IDFA) que ayuda a los anunciantes a rastrear y atribuir las acciones de los usuarios (por ejemplo, clics en anuncios, instalaciones de aplicaciones) a campañas específicas, lo que permite una orientación precisa de los anuncios y la optimización de las campañas. A partir de iOS 14.5, los usuarios deben optar por el marco App Tracking Transparency (ATT) para que las aplicaciones puedan acceder al IDFA. Si los usuarios no optan por el IDFA, este no estará disponible, lo que limitará las capacidades de seguimiento.
Valor de ejemplo:
|
Parámetro | Descripción |
Plataformas soportadas:
|
El parámetro idfv especifica el Identificador de Vendedores (IDFV), un identificador único asignado por Apple a un dispositivo, que es específico de un vendedor o desarrollador concreto. Permanece constante en todas las aplicaciones del mismo proveedor en un dispositivo determinado, lo que permite al proveedor realizar un seguimiento del comportamiento y las interacciones del usuario en todo su ecosistema de aplicaciones sin identificar al usuario personalmente.
Valor de ejemplo:
|
Parámetro | Descripción |
Plataformas soportadas:
|
El parámetro aifa especifica el identificador de publicidad de Google (GAID), también conocido como AIFA en singular o Android Advertising ID (AAID). Este identificador es un identificador único y reajustable por el usuario asignado a los dispositivos Android. Ayuda a los anunciantes y a los desarrolladores de aplicaciones a rastrear y atribuir las acciones de los usuarios (por ejemplo, clics en anuncios, instalaciones de aplicaciones) en las aplicaciones a campañas específicas, lo que permite una orientación precisa de los anuncios y la optimización de las campañas, al tiempo que se mantiene la privacidad del usuario.
Valor de ejemplo:
|
Parámetro | Descripción |
Plataformas soportadas:
|
El parámetro asid especifica el Android App Set ID. El ASID permite a los desarrolladores realizar un seguimiento de los usuarios en sus propias aplicaciones respetando su privacidad. Es especialmente útil para el análisis y la prevención del fraude, pero no puede utilizarse con fines publicitarios, como anuncios personalizados o mediciones.
Valor de ejemplo:
|
Parámetro | Descripción |
Plataformas soportadas:
|
El parámetro amid especifica que el ID de publicidad es un identificador único y reajustable por el usuario que ayuda a proteger su privacidad. Si recopilas información sobre el comportamiento de un usuario para mostrar anuncios basados en intereses o para generar análisis, debes utilizar el ID de publicidad; no se puede utilizar ningún otro identificador o método de seguimiento. Los usuarios pueden restablecer el identificador de publicidad o excluirse totalmente de los anuncios basados en intereses.
Valor de ejemplo:
|
Parámetro | Descripción |
Plataformas soportadas:
|
El parámetro oaid especifica Open Advertising Identifier (OAID). El OAID es un identificador único y anónimo utilizado con fines publicitarios en dispositivos Android, especialmente los fabricados en China. Fue introducido por la Mobile Security Alliance (MSA) como alternativa al identificador de publicidad de Google (GAID) para dispositivos en los que los servicios de Google Play no están disponibles o no son compatibles, como en el mercado chino. El OAID se utiliza principalmente para la atribución de publicidad y el seguimiento de usuarios en entornos en los que los servicios de Google Play están restringidos, lo que permite a los anunciantes y desarrolladores rastrear el comportamiento de los usuarios manteniendo el anonimato. El OAID está disponible en la mayoría de los dispositivos Android fabricados en China, incluidos los de marcas como Huawei, Xiaomi y otras. Se puede acceder a él mediante el SDK MSA o Huawei Mobile Services (HMS).
Valor de ejemplo:
|
Parámetro | Descripción |
Plataformas soportadas:
|
El parámetro andi especifica el ID de Android, que es un identificador único de 64 bits generado por el sistema operativo Android cuando se configura un dispositivo por primera vez. Está diseñado para ser persistente durante toda la vida útil del dispositivo, pero puede restablecerse en determinadas condiciones, como un restablecimiento de fábrica. El Android ID es único para cada dispositivo y, a partir de Android 8.0 (Oreo), tiene un alcance por app y por usuario. Esto significa que diferentes aplicaciones en el mismo dispositivo recibirán diferentes Android ID a menos que compartan la misma clave de firma. El Android ID permanece constante a menos que el dispositivo se restablezca de fábrica o si se desinstala y se vuelve a instalar una aplicación tras una actualización OTA (over-the-air).
Valor de ejemplo:
|
Parámetro | Descripción |
Plataformas soportadas:
|
El parámetro sdid especifica el ID del Dispositivo Singular.
Valor de ejemplo:
|
Parámetro | Descripción |
Plataformas soportadas:
|
El parámetro sing está restringido a clientes Enterprise y especifica un identificador definido por el Cliente. Sólo se utiliza en usos especiales en los que el resto de identificadores no están disponibles. El ingeniero de soluciones de Singular debe habilitar este identificador para cada aplicación. Valor de ejemplo:
|
Parámetros del dispositivo | |
Parámetro | Descripción |
|
El parámetro p especifica la plataforma de la App. La siguiente lista contiene los valores permitidos del parámetro que distinguen entre mayúsculas y minúsculas :
Valor de ejemplo:
|
Parámetro | Descripción |
|
El parámetro ip especifica la dirección IP pública (IPV4) del dispositivo. No se admite IPV6. Valor de ejemplo:
|
Parámetro | Descripción |
|
El parámetro ve especifica la versión del sistema operativo del dispositivo en el momento del evento. Valor de ejemplo:
|
Parámetro | Descripción |
Plataformas soportadas:
|
El parámetro ma especifica la Marca del hardware del dispositivo, normalmente el nombre de cara al consumidor. Este parámetro debe utilizarse con el parámetro model. Cómo recuperar la marca del dispositivo Ejemplos:
|
Parámetro | Descripción |
Plataformas soportadas:
|
El parámetro mo especifica el Modelo del hardware del dispositivo. Este parámetro debe utilizarse con el parámetro make. Cómo recuperar el modelo del dispositivo Ejemplos:
|
Parámetro | Descripción |
Plataformas soportadas:
|
El parámetro lc especifica la etiqueta de configuración regional IETF para el dispositivo, utilizando un código de idioma y país de dos letras separado por un guión bajo. Cómo recuperar la configuración regional del dispositivo Valor de ejemplo:
|
Parámetro | Descripción |
Plataformas soportadas:
|
El parámetro bd especifica la Build del dispositivo, codificada mediante URL. Cómo recuperar la Build del dispositivo Valor de ejemplo:
|
Parámetros de aplicación | |
Parámetro | Descripción |
|
El parámetro i especifica el identificador de la aplicación. Este es el nombre del paquete para Android o el ID del paquete para iOS o de su aplicación. los valores de los parámetros distinguen entre mayúsculas y minúsculas :
Valor de ejemplo:
|
Parámetro | Descripción |
Plataformas soportadas:
|
El parámetro att_authorization_status especifica el código de estado de App Tracking Transparency(ATT). A partir de iOS 14.5, se requiere el indicador App Tracking Transparency (ATT) para acceder al identificador IDFA. Nota: Incluso si no implementa el prompt ATT, requerimos que pase el estado de autorización ATT con el valor'0', indicando "indeterminado". Los valores soportados son:
Ejemplos:
|
Parámetros de evento | |
Parámetro | Descripción |
|
El parámetro n especifica el Nombre del evento que se está rastreando.
Valor de ejemplo:
|
Cuerpo de la petición
No proporcione un cuerpo de petición cuando llame a este método. La petición debe enviarse utilizando el método GET con parámetros de consulta.
Ejemplos de solicitud
Los siguientes ejemplos de código pueden no representar todos los parámetros soportados. Cuando implemente la petición asegúrese de incluir todos los parámetros requeridos como se indica arriba, y valide que se están pasando los valores correctos antes de enviar datos desde una instancia de producción. Se recomienda utilizar un único parámetro `i` (identificador de aplicación) para el desarrollo y las pruebas.
PYTHON
import requests
params = {
'a': 'sdk_key_here',
'p': 'Android',
'i': 'com.singular.app',
'ip': '10.1.2.3',
've': '9.2',
'ma': 'samsung',
'mo': 'SM-G935F',
'lc': 'en_US',
'bd': 'Build/13D15',
'aifa': '8ecd7512-2864-440c-93f3-a3cabe62525b',
'asid': 'edee92a2-7b2f-45f4-a509-840f170fc6d9',
'n': 'sng_add_to_cart'
}
response = requests.get('https://s2s.singular.net/api/v1/evt', params=params)
print(response.json())
CURL
curl -G "https://s2s.singular.net/api/v1/evt" \
--data-urlencode "a=sdk_key_here" \
--data-urlencode "p=Android" \
--data-urlencode "i=com.singular.app" \
--data-urlencode "ip=10.1.2.3" \
--data-urlencode "ve=9.2" \
--data-urlencode "ma=samsung" \
--data-urlencode "mo=SM-G935F" \
--data-urlencode "lc=en_US" \
--data-urlencode "bd=Build/13D15" \
--data-urlencode "aifa=8ecd7512-2864-440c-93f3-a3cabe62525b" \
--data-urlencode "asid=edee92a2-7b2f-45f4-a509-840f170fc6d9" \
--data-urlencode "n=sng_add_to_cart"
HTTP
GET /api/v1/evt
?a=sdk_key_here
&p=Android
&i=com.singular.app
&ip=10.1.2.3
&ve=9.2
&ma=samsung
&mo=SM-G935F
&lc=en_US
&bd=Build%2F13D15
&aifa=8ecd7512-2864-440c-93f3-a3cabe62525b
&asid=edee92a2-7b2f-45f4-a509-840f170fc6d9
&n=sng_add_to_cart HTTP/1.1
Host: s2s.singular.net
Accept: application/json
JAVA Ejemplo
// Base URL
String baseUrl = "https://s2s.singular.net/api/v1/evt";
// Parameters
Map < String, String > params = new HashMap < > ();
params.put("a", "sdk_key_here");
params.put("p", "Android");
params.put("i", "com.singular.app");
params.put("ip", "10.1.2.3");
params.put("ve", "9.2");
params.put("ma", "samsung");
params.put("mo", "SM-G935F");
params.put("lc", "en_US");
params.put("bd", "Build/13D15");
params.put("aifa", "8ecd7512-2864-440c-93f3-a3cabe62525b");
params.put("asid", "edee92a2-7b2f-45f4-a509-840f170fc6d9");
params.put("n", "sng_add_to_cart");
// Build URL with encoded parameters
StringBuilder urlBuilder = new StringBuilder(baseUrl);
urlBuilder.append('?');
for (Map.Entry < String, String > entry: params.entrySet()) {
if (urlBuilder.length() > baseUrl.length() + 1) {
urlBuilder.append('&');
}
urlBuilder.append(URLEncoder.encode(entry.getKey(), StandardCharsets.UTF_8))
.append('=')
.append(URLEncoder.encode(entry.getValue(), StandardCharsets.UTF_8));
}
// Create connection
URL url = new URL(urlBuilder.toString());
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setRequestProperty("Accept", "application/json");
// Get response
int responseCode = conn.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(conn.getInputStream())
);
String inputLine;
StringBuilder response = new StringBuilder();
while ((inputLine = in .readLine()) != null) {
response.append(inputLine);
} in .close();
// Check application-level status
System.out.println("HTTP Status Code: " + responseCode);
System.out.println("Response: " + response.toString());
// Disconnect
conn.disconnect();
Parámetros opcionales
En la siguiente tabla se enumeran los parámetros opcionales que admite este endpoint. Todos los parámetros enumerados son parámetros de consulta.
Parámetros opcionales | |
---|---|
Parámetros de marca de tiempo | |
Parámetro | Descripción |
|
El parámetro utime especifica la hora del evento en tiempo UNIX de 10 dígitos.
Valor de ejemplo:
|
Parámetro | Descripción |
|
El parámetro umilisec especifica el Tiempo del evento en milisegundos 13 dígitos de tiempo UNIX.
Valor de ejemplo:
|
Parámetros de Dispositivo y Red | |
Parámetro | Descripción |
|
El parámetro global_properties acepta un objeto JSON codificado en URL que contiene hasta 5 pares clave-valor. Cada clave y valor puede tener una longitud máxima de 200 caracteres.
El objeto JSON debe ser
Valor de ejemplo:
|
Parámetro | Descripción |
|
El parámetro use_ip indica a Singular que extraiga la dirección IP de la solicitud HTTP en lugar del parámetro 'ip'. Pase'true' para utilizar esta función.
Valor de ejemplo:
|
Parámetro | Descripción |
|
El parámetro country debe contener el código de país de dos letras ISO 3166-1 alpha-2 del usuario en el momento de la ejecución del evento. Este parámetro sólo es necesario cuando
Valor de ejemplo:
|
Parámetros de evento | |
Parámetro | Descripción |
|
El parámetro e especifica atributos de evento personalizados en formato JSON.
Valor de ejemplo:
|
Parámetros de ingresos | |
Parámetro | Descripción |
|
El parámetro is_revenue_event especifica si el evento es un evento de ingresos.
Valor de ejemplo:
|
Parámetro | Descripción |
|
El parámetro amt especifica el importe en divisa.
Valor de ejemplo:
|
Parámetro | Descripción |
|
El parámetro cur especifica el código de moneda ISO 4217 de tres letras en mayúsculas.
Valor de ejemplo:
|
Parámetro | Descripción |
Plataformas soportadas:
|
El parámetro purchase_receipt especifica el recibo recibido de una compra. Consulte las instrucciones a continuación sobre cómo recuperarlo desde Android, iOS
Ejemplo (iOS):
Ejemplo (Android):
|
Parámetro | Descripción |
Plataformas soportadas:
|
El parámetro receipt_signature especifica la firma utilizada para firmar el recibo de compra
Valor de ejemplo:
|
Parámetro | Descripción |
|
El parámetro purchase_product_id especifica el identificador SKU del producto
Valor de ejemplo:
|
Parámetro | Descripción |
|
El parámetro purchase_transaction_id especifica el identificador de la transacción
Ejemplo (iOS):
Ejemplo (Android):
|
Privacidad de datos | |
Parámetro | Descripción |
|
El parámetro data_sharing_options especifica el consentimiento del usuario final para compartir información. Si se establece, este valor debe persistir y pasarse en cada solicitud posterior de "SESSION" y "EVENT" para el usuario.
El valor debe ser una cadena JSON codificada en URL.
Valor de ejemplo:
|
Soporte entre dispositivos | |
Parámetro | Descripción |
|
El parámetro custom_user_id especifica su ID de usuario interno.
Valor de ejemplo:
|
Soporte SkAdNetwork iOS | |
Parámetro | Descripción |
Plataformas soportadas:
|
El parámetro skan_conversion_value especifica el último valor de conversión de SKAdNetwork en el momento de esta notificación de evento(más información sobre la implementación de SKAdNetwork).
Valor de ejemplo:
|
Parámetro | Descripción |
Plataformas soportadas:
|
El parámetro skan_first_call_timestamp especifica la marca de tiempo Unix de la primera llamada a la API SkAdNetwork subyacente(más información sobre la implementación de SKAdNetwork).
Valor de ejemplo:
|
Parámetro | Descripción |
Plataformas soportadas:
|
El parámetro skan_last_call_timestamp especifica la marca de tiempo Unix de la última llamada a la API SkAdNetwork subyacente en el momento de esta notificación de evento(más información sobre la implementación de SKAdNetwork).
Valor de ejemplo:
|
Prueba de eventos
Tras la integración de servidor a servidor, es esencial verificar que Singular recibe datos antes de poner en marcha una instancia de producción. Consulte nuestra guía de pruebas para obtener más detalles. A grandes rasgos, deben seguirse los siguientes pasos:
- Obtenga el ID de publicidad de su dispositivo de prueba y añádalo a la consola de Singular SDK.
- Abra la consola de Singular SDK y añada el identificador del dispositivo para empezar a capturar datos.
- Anule el identificador de la App con un identificador de App de desarrollo(com.singular.app.dev) para mantener los datos y eventos de prueba separados de los datos de producción.
- Cree o abra la aplicación desde un estado finalizado
- Compruebe que la apertura de la aplicación se envía al servidor con todos los puntos de datos de Singular necesarios.
- Compruebe que el servidor envía la notificación de sesión al punto final"launch" de Singular con todos los datos necesarios.
- Después de unos segundos, el evento de sesión debe aparecer en la consola de Singular SDK.
- Proceda a activar un evento en la aplicación.
- Compruebe que el evento se envía al servidor con todos los datos necesarios de Singular.
- Compruebe que su servidor envía la notificación de evento al punto final'evt' de Singular con todos los datos necesarios.
- Después de unos segundos, el evento debería aparecer en la consola de Singular SDK.
- Repita la prueba para validar que todos los eventos se envían según lo previsto y con los valores esperados.
- Confirme que el Evento de Sesión se produce al Abrir la Aplicación o en Primer Plano y antes de que se reciba el Evento.
- Confirme que los puntos de datos requeridos por el Evento, coinciden con los puntos de datos de la Sesión.
Si usted ve sus Eventos en la Consola SDK, ¡usted ha completado una prueba de extremo a extremo del manejo de Eventos!