API de registro de dispositivos

La API de registro de dispositivos proporciona interfaces de servidor para registrar tokens de dispositivos y obtener registration_id en AppPush.

Obtener registration_id mediante un Token

Esta API permite que un servidor registre usuarios de AppPush mediante FCM Tokens o APNs Device Tokens y obtenga el registration_id generado por EngageLab. Después de obtenerlo, puede utilizar el registration_id para enviar notificaciones a usuarios específicos y para APIs relacionadas con dispositivos, como etiquetas y alias.

Límites de uso

  • Cada solicitud permite registrar entre 1 y 500 Tokens.
  • Una solicitud solo puede contener Tokens de una plataforma: un lote de FCM Tokens o un lote de APNs Device Tokens. No se pueden mezclar Tokens de FCM y APNs en la misma solicitud.
  • Las solicitudes repetidas con la misma aplicación, plataforma y Token son idempotentes. No se crea un usuario duplicado y se devuelve el registration_id existente.
  • Los resultados se devuelven en el mismo orden que los Tokens de la solicitud.

Endpoint

POST /v4/devices/token/registration_id
              
              POST /v4/devices/token/registration_id

            
Este bloque de código se muestra en una ventana flotante

La URL completa se compone de la Base URL del centro de datos de la aplicación y de la ruta anterior. Consulte Descripción general de REST API para conocer las direcciones de los centros de datos y el método de autenticación.

Encabezados de la solicitud

Content-Type: application/json Accept: application/json Authorization: Basic base64_auth_string
              
              Content-Type: application/json
Accept: application/json
Authorization: Basic base64_auth_string

            
Este bloque de código se muestra en una ventana flotante

Parámetros de la solicitud

Nombre Tipo Obligatorio Descripción
platform string Plataforma a la que pertenecen los Tokens. Valores admitidos: android e ios. Utilice android para FCM Tokens.
tokens array<string> Lista de Tokens que se registrarán, con entre 1 y 500 elementos. Todos los Tokens de una solicitud deben pertenecer a la plataforma indicada por platform.
apns_production boolean Obligatorio para iOS Entorno APNs. true indica producción y false indica desarrollo. Las solicitudes de Android no deben incluir este campo.

Reglas de formato de los Tokens

  • FCM Token: Debe ser una cadena no vacía de 400 caracteres como máximo. Solo se permiten caracteres ASCII imprimibles (0x210x7E). No se permiten espacios, saltos de línea ni espacios en blanco iniciales o finales.
  • APNs Device Token: Debe ser una cadena hexadecimal no vacía, con un número par de caracteres y una longitud máxima de 400 caracteres. Solo se permiten 0-9, a-f y A-F. No se permiten espacios, corchetes angulares ni otros separadores.

Esta API solo valida el formato del Token y no puede confirmar si el Token es válido actualmente. La validez se determina mediante el resultado real del envío de FCM o APNs.

Ejemplo de solicitud Android (FCM)

curl -X POST 'https://pushapi-sgp.engagelab.com/v4/devices/token/registration_id' \ -u 'appKey:masterSecret' \ -H 'Content-Type: application/json' \ -H 'Accept: application/json' \ -d '{ "platform": "android", "tokens": [ "fcm_token_1", "fcm_token_2" ] }'
              
              curl -X POST 'https://pushapi-sgp.engagelab.com/v4/devices/token/registration_id' \
  -u 'appKey:masterSecret' \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -d '{
    "platform": "android",
    "tokens": [
      "fcm_token_1",
      "fcm_token_2"
    ]
  }'

            
Este bloque de código se muestra en una ventana flotante

Ejemplo de solicitud iOS (APNs)

curl -X POST 'https://pushapi-sgp.engagelab.com/v4/devices/token/registration_id' \ -u 'appKey:masterSecret' \ -H 'Content-Type: application/json' \ -H 'Accept: application/json' \ -d '{ "platform": "ios", "tokens": [ "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef" ], "apns_production": true }'
              
              curl -X POST 'https://pushapi-sgp.engagelab.com/v4/devices/token/registration_id' \
  -u 'appKey:masterSecret' \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -d '{
    "platform": "ios",
    "tokens": [
      "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"
    ],
    "apns_production": true
  }'

            
Este bloque de código se muestra en una ventana flotante

Parámetros de respuesta

Nombre Tipo Descripción
results array<object> Resultado del registro de cada Token, en el mismo orden que tokens en la solicitud.
results[].token string Token de la solicitud.
results[].registration_id string Identificador único de usuario de EngageLab. Se devuelve cuando el Token se registra correctamente.
results[].is_new boolean true indica que se creó un usuario en esta solicitud; false indica que el Token ya estaba registrado y se devolvió el usuario existente.
results[].code integer Código de procesamiento del Token individual. 0 indica éxito y un valor distinto de 0 indica un error.
results[].message string Descripción del error cuando falla el procesamiento de un Token individual. No se devuelve si la operación es correcta.

Códigos de resultado individuales:

Code Descripción
0 El Token se registró correctamente.
21003 El formato del Token no es válido.
27000 Error al consultar, registrar o sincronizar el Token.

Ejemplo de respuesta correcta

En el primer registro, is_new es true:

{ "results": [ { "token": "fcm_token_1", "registration_id": "13065ffa4e1a6cc91c3", "is_new": true, "code": 0 }, { "token": "fcm_token_2", "registration_id": "13065ffa4e1a6cc91c4", "is_new": true, "code": 0 } ] }
              
              {
  "results": [
    {
      "token": "fcm_token_1",
      "registration_id": "13065ffa4e1a6cc91c3",
      "is_new": true,
      "code": 0
    },
    {
      "token": "fcm_token_2",
      "registration_id": "13065ffa4e1a6cc91c4",
      "is_new": true,
      "code": 0
    }
  ]
}

            
Este bloque de código se muestra en una ventana flotante

Si se vuelve a enviar un Token ya registrado, se devuelve el mismo registration_id y is_new es false:

{ "results": [ { "token": "fcm_token_1", "registration_id": "13065ffa4e1a6cc91c3", "is_new": false, "code": 0 } ] }
              
              {
  "results": [
    {
      "token": "fcm_token_1",
      "registration_id": "13065ffa4e1a6cc91c3",
      "is_new": false,
      "code": 0
    }
  ]
}

            
Este bloque de código se muestra en una ventana flotante

Ejemplo de error de un Token individual

Si un Token de un lote tiene un formato no válido o no se puede registrar, ese elemento devuelve un error mediante code y message, mientras que los demás Tokens pueden procesarse normalmente. En el siguiente ejemplo, el Token vacío no supera la validación de formato:

{ "results": [ { "token": "fcm_token_1", "registration_id": "13065ffa4e1a6cc91c3", "is_new": false, "code": 0 }, { "token": "", "is_new": false, "code": 21003, "message": "invalid fcm token format" } ] }
              
              {
  "results": [
    {
      "token": "fcm_token_1",
      "registration_id": "13065ffa4e1a6cc91c3",
      "is_new": false,
      "code": 0
    },
    {
      "token": "",
      "is_new": false,
      "code": 21003,
      "message": "invalid fcm token format"
    }
  ]
}

            
Este bloque de código se muestra en una ventana flotante

Ejemplo de solicitud fallida

Si los parámetros generales de la solicitud no son válidos, la API devuelve HTTP 400. Por ejemplo, una solicitud de iOS sin apns_production devuelve:

{ "error": { "code": 21003, "message": "apns_production is required for ios" } }
              
              {
  "error": {
    "code": 21003,
    "message": "apns_production is required for ios"
  }
}

            
Este bloque de código se muestra en una ventana flotante

Errores frecuentes de solicitud:

  • platform no es android ni ios;
  • tokens está vacío o contiene más de 500 elementos;
  • una solicitud de Android incluye apns_production;
  • una solicitud de iOS no incluye apns_production.

Respuestas de la API

Códigos de estado HTTP

Consulte Código de estado HTTP.

Códigos de error

La siguiente tabla muestra los códigos de error a nivel de solicitud. En una solicitud por lotes, el error de un Token individual se devuelve mediante results[].code y results[].message y no afecta al procesamiento de los demás Tokens.

Code Descripción Detalles HTTP Status Code
0 success La solicitud se procesó correctamente. Consulte results para conocer el resultado de cada Token. 200
21003 Parameter value is invalid platform, tokens o apns_production no es válido. 400
21004 basic auth failed El Master Secret es incorrecto. 401
21008 app_key is not a 24 size string La longitud del AppKey no es válida. 400
23010 Rate limit exceeded for the API El AppKey actual ha superado el límite de frecuencia de la API. 400
27000 Server inner err Error interno del servidor. Inténtelo de nuevo más tarde. 500
27001 app_key does not exist or basic info is invalid No se proporcionó Basic Auth, el AppKey no existe o la información de autenticación de la aplicación no es válida. 401
27002 parameter is invalid Falta el cuerpo de la solicitud, el formato JSON no es válido o un parámetro tiene un tipo incorrecto. 400
Icon Solid Transparent White Qiyu
Contacto