Template API Interface - Streamline Your Messaging Solution
Crear plantilla
Endpoint
POST https://otp.api.engagelab.cc/v1/template-configs
Autenticación
Utilizar HTTP Basic Authentication añadiendo Authorization en el encabezado HTTP:
Authorization: Basic ${base64_auth_string}
El valor base64_auth_string se genera de la siguiente manera: base64(dev_key:dev_secret)
Ejemplo de solicitud
Encabezado de solicitud
POST /v1/messages HTTP/1.1
Content-Type: application/json
Authorization: Basic amlndWFuZ2RldjpkZXZfc2VjcmV0
Cuerpo de la solicitud
{
"template_id": "test-template-1", // ID de plantilla personalizada, único dentro de la aplicación
"description": "Test Template 1", // Descripción de la plantilla
"send_channel_strategy": "whatsapp|sms", // Estrategia de entrega de la plantilla; admite cuatro tipos: whatsapp/sms/voice/email. Utilizar | para indicar la estrategia de reserva (fallback) en orden
"brand_name": "Brand Name", // Nombre de marca; se utiliza como firma en el contenido de la plantilla para algunos países/regiones (p. ej., obligatorio para canales SMS en determinados países/regiones)
"verify_code_config": { // Configuración del código de verificación; obligatoria cuando la plantilla incluye tipo de código de verificación
"verify_code_type": 1, // Tipo de código de verificación, rango [1,7]
"verify_code_len": 6, // Longitud del código de verificación, rango [4,10]
"verify_code_ttl": 1 // Periodo de validez del código de verificación, rango [1,10]. Nota: Cuando la estrategia incluye whatsapp, el valor solo puede ser 1, 5 o 10
},
"whatsapp_config": { // Configuración de la estrategia de WhatsApp; efectiva cuando la estrategia de entrega incluye WhatsApp
"template_type": 1, // Tipo de plantilla de WhatsApp; actualmente solo admite la plantilla predeterminada, valor fijo 1
"template_default_config": { // Configuración de la plantilla predeterminada de WhatsApp; efectiva para el tipo de plantilla predeterminada
"contain_security": false, // Indica si se incluyen recordatorios de seguridad
"contain_expire": false // Indica si se incluye contenido de caducidad
}
},
"sms_config": { // Configuración de la estrategia de SMS; efectiva cuando la estrategia de entrega incluye SMS
"template_type": 2, // Tipo de plantilla SMS; valores: 1-Plantilla predeterminada/2-Plantilla personalizada
"template_default_config": { // Configuración de la plantilla predeterminada de SMS; efectiva para el tipo de plantilla predeterminada
"contain_security": false, // Indica si se incluyen recordatorios de seguridad
"contain_expire": false // Indica si se incluye contenido de caducidad
},
"template_custom_config": { // Configuración de plantilla personalizada de SMS; efectiva para el tipo de plantilla personalizada
"custom_sub_type": "authentication", // Tipo de plantilla personalizada; valores: authentication-Código de verificación/marketing-Marketing/utility-Notificación
"custom_content": "xxx", // Contenido de plantilla personalizada. Nota: Para el tipo authentication, debe incluir la variable {{code}}
"custom_country_codes": "HK,PH" // Países/regiones de destino para la plantilla personalizada; se utiliza como referencia durante la revisión de la plantilla. Completar según sea necesario; de lo contrario, puede afectar a la entrega
}
},
"voice_config": { // Configuración de la estrategia de voz; efectiva cuando la estrategia de entrega incluye Voice
"template_type": 1, // Tipo de plantilla de voz; actualmente solo admite la plantilla predeterminada, valor fijo 1
"template_default_config": { // Configuración de la plantilla predeterminada de voz; efectiva para el tipo de plantilla predeterminada
"contain_security": false, // Indica si se incluyen recordatorios de seguridad
"contain_expire": false // Indica si se incluye contenido de caducidad
}
},
"email_config": { // Configuración de la estrategia de correo electrónico; efectiva cuando la estrategia de entrega incluye Email
"template_name": "Email Template Name", // Nombre de la plantilla de correo electrónico
"template_custom_configs": [{ // Configuración de plantilla personalizada de correo electrónico; nota: es un array de objetos, que se diferencian principalmente por idioma
"language": "default", // Idioma; default es el predeterminado. El contenido de la plantilla se puede asociar según el parámetro language durante la entrega
"pre_from_name": "test", // Nombre del remitente predefinido
"pre_from_mail": "test@test.com", // Correo del remitente predefinido
"pre_subject": "test", // Asunto del correo predefinido
"template_content": "Preset email template content, required. Custom variables like {{self}}, verification code is {{code}}", // Contenido del correo electrónico; admite HTML. Las variables deben ir entre llaves dobles {{}}
"pre_param_map": { // Valores predeterminados para las variables del contenido del correo. Si durante el envío no se especifican valores, estos valores predeterminados reemplazarán las variables. Se declaran como pares clave-valor; los valores deben ser cadenas
"self": "This is the preset value for the self variable"
}
}]
},
"pwa_config": { // Configuración relacionada con PWA; opcional
"pwa_platform": "xx", // Plataforma PWA utilizada. Para valores específicos, contactar con el soporte técnico
"pwa_code": "xx" // Código utilizado en la plataforma PWA
}
}
Parámetros de la solicitud
Los objetos de solicitud se expresan en formato JSON, por lo que el encabezado de la solicitud debe incluir Content-Type: application/json.
| Parámetro | Tipo | Requisito | Descripción |
|---|---|---|---|
| template_id | String | Obligatorio | ID de plantilla personalizada, único, limitado a 128 caracteres |
| description | String | Opcional | Descripción de la plantilla, limitada a 255 caracteres |
| send_channel_strategy | String | Obligatorio | Estrategia de la plantilla. Valores de canal único: whatsapp/sms/email/voice. En multicanal, utilizar | como separador, con estrategia de reserva (fallback) en orden. Email no se puede combinar con otros canales |
| brand_name | String | Opcional | Firma de marca; reemplaza la variable de firma de marca en algunos estilos de plantilla por la firma de marca. Longitud limitada a 2-10 caracteres |
| verify_code_config | Object | Obligatorio condicionalmente | Configuración del código de verificación; obligatoria cuando la plantilla incluye tipo de código de verificación |
| verify_code_config.verify_code_type | Integer | Obligatorio | Tipo de código de verificación, rango [1,7]. 1-Numérico/2-Letras minúsculas/4-Letras mayúsculas. Se puede combinar (p. ej., 3 significa numérico + letras minúsculas) |
| verify_code_config.verify_code_len | Integer | Obligatorio | Longitud del código de verificación, rango [4,10] |
| verify_code_config.verify_code_ttl | Integer | Obligatorio | Periodo de validez del código de verificación, en minutos, rango [1,10]. Cuando la estrategia incluye WhatsApp, solo puede ser 1, 5 o 10 |
| whatsapp_config | Object | Obligatorio condicionalmente | Configuración de la estrategia de WhatsApp; obligatoria cuando la estrategia de entrega incluye WhatsApp |
| whatsapp_config.template_type | Integer | Obligatorio | Tipo de plantilla de WhatsApp; actualmente solo admite la plantilla predeterminada, valor fijo 1 |
| whatsapp_config.template_default_config | Object | Obligatorio condicionalmente | Configuración de la plantilla predeterminada de WhatsApp; obligatoria para el tipo de plantilla predeterminada |
| sms_config | Object | Obligatorio condicionalmente | Configuración de la estrategia de SMS; obligatoria cuando la estrategia de entrega incluye SMS |
| sms_config.template_type | Integer | Obligatorio | Tipo de plantilla SMS; 1-Plantilla predeterminada/2-Plantilla personalizada |
| sms_config.template_default_config | Object | Obligatorio condicionalmente | Configuración de la plantilla predeterminada de SMS; obligatoria para el tipo de plantilla predeterminada |
| sms_config.template_custom_config | Object | Obligatorio condicionalmente | Configuración de plantilla personalizada de SMS; obligatoria para el tipo de plantilla personalizada |
| sms_config.template_custom_config.custom_sub_type | String | Obligatorio | Tipo de plantilla personalizada; authentication-Código de verificación/marketing-Marketing/utility-Notificación |
| sms_config.template_custom_config.custom_content | String | Obligatorio | Contenido de plantilla personalizada. Para el tipo authentication, debe incluir la variable {{code}} |
| sms_config.template_custom_config.custom_country_codes | String | Opcional | Códigos de país/región objetivo, separados por comas; se utilizan como referencia durante la revisión de la plantilla |
| voice_config | Object | Obligatorio condicionalmente | Configuración de la estrategia de voz; obligatoria cuando la estrategia de entrega incluye Voice |
| voice_config.template_type | Integer | Obligatorio | Tipo de plantilla de voz; actualmente solo admite la plantilla predeterminada, valor fijo 1 |
| voice_config.template_default_config | Object | Obligatorio condicionalmente | Configuración de la plantilla predeterminada de voz; obligatoria para el tipo de plantilla predeterminada |
| email_config | Object | Obligatorio condicionalmente | Configuración de la estrategia de correo electrónico; obligatoria cuando la estrategia de entrega incluye Email |
| email_config.template_name | String | Obligatorio | Nombre de la plantilla de correo electrónico |
| email_config.template_custom_configs | Array | Obligatorio condicionalmente | Configuración de plantilla personalizada de correo electrónico; obligatoria para el tipo de plantilla personalizada; admite configuración multilenguaje |
| email_config.template_custom_configs.language | String | Obligatorio | Idioma; default es el predeterminado. El contenido de la plantilla se puede asociar según el parámetro language durante la entrega |
| email_config.template_custom_configs.pre_from_name | String | Opcional | Nombre del remitente predefinido |
| email_config.template_custom_configs.pre_from_mail | String | Obligatorio | Correo del remitente predefinido |
| email_config.template_custom_configs.pre_subject | String | Obligatorio | Asunto del correo predefinido |
| email_config.template_custom_configs.template_content | String | Obligatorio | Contenido del correo electrónico; admite HTML. Las variables deben ir entre llaves dobles {{}} |
| email_config.template_custom_configs.pre_param_map | Object | Opcional | Valores predeterminados para las variables del contenido del correo electrónico. Se declaran como pares clave-valor; los valores deben ser cadenas |
| pwa_config | Object | Opcional | Configuración relacionada con PWA; opcional |
| pwa_config.pwa_platform | String | Opcional | Plataforma PWA utilizada. Para valores específicos, contactar con el soporte técnico |
| pwa_config.pwa_code | String | Opcional | Código utilizado en la plataforma PWA |
Parámetros de la respuesta
| Campo | Tipo | Requisito | Descripción |
|---|---|---|---|
| code | Integer | Obligatorio | Código de error; 0 indica éxito; otros valores indican fallo |
| message | String | Obligatorio | Mensaje de respuesta |
Respuesta correcta
{
"code": 0,
"message": "success"
}
Respuesta de error
{
"code": 3003,
"message": "not contains any channel config"
}
Códigos de error
| Código de error | Código HTTP | Descripción |
|---|---|---|
| 1000 | 500 | Error interno |
| 2001 | 401 | Fallo de autenticación; se proporcionó un token incorrecto |
| 2002 | 401 | Fallo de autenticación; el token ha caducado o se ha deshabilitado |
| 2004 | 403 | Sin permisos para llamar a esta API |
| 3001 | 400 | Formato de parámetro de solicitud no válido; comprobar si cumple el formato JSON |
| 3002 | 400 | Parámetros de solicitud no válidos; comprobar si cumplen los requisitos |
| 3003 | 400 | Error de parámetros a nivel de negocio; consultar el campo message para obtener detalles |
Eliminar plantilla
Endpoint
DELETE /v1/template-configs/{templateId}
Autenticación
Utilizar HTTP Basic Authentication añadiendo Authorization en el encabezado HTTP:
Authorization: Basic ${base64_auth_string}
El valor base64_auth_string se genera de la siguiente manera: base64(dev_key:dev_secret)
Ejemplo de solicitud
Encabezado de solicitud
DELETE /v1/template-configs/{templateId} HTTP/1.1
Authorization: Basic amlndWFuZ2RldjpkZXZfc2VjcmV0
Cuerpo de la solicitud
Ninguno
Parámetros de la solicitud
{templateId} en la URL representa el ID de la plantilla que se debe eliminar, definido por el solicitante al crear la plantilla.
Parámetros de la respuesta
| Campo | Tipo | Requisito | Descripción |
|---|---|---|---|
| code | Integer | Obligatorio | Código de error; 0 indica éxito; otros valores indican fallo |
| message | String | Obligatorio | Mensaje de respuesta |
Respuesta correcta
{
"code": 0,
"message": "success"
}
Respuesta de error
{
"code": 4001,
"message": "config not exist"
}
Códigos de error
| Código de error | Código HTTP | Descripción |
|---|---|---|
| 1000 | 500 | Error interno |
| 2001 | 401 | Fallo de autenticación; se proporcionó un token incorrecto |
| 2002 | 401 | Fallo de autenticación; el token ha caducado o se ha deshabilitado |
| 2004 | 403 | Sin permisos para llamar a esta API |
| 3001 | 400 | Formato de parámetro de solicitud no válido; comprobar si cumple el formato JSON |
| 3002 | 400 | Parámetros de solicitud no válidos; comprobar si cumplen los requisitos |
| 4001 | 400 | La plantilla no existe |
Obtener lista de todas las plantillas
Actualmente, esta API no admite paginación y devuelve una lista resumida de todas las plantillas, excluyendo principalmente el contenido específico. Si se necesita contenido detallado, se debe utilizar la API de detalles.
Endpoint
GET /v1/template-configs
Autenticación
Se utiliza HTTP Basic Authentication. Añadir el encabezado Authorization en el encabezado HTTP:
Authorization: Basic ${base64_auth_string}
El valor base64_auth_string anterior se genera mediante el algoritmo: base64(dev_key:dev_secret)
Ejemplo de solicitud
Encabezado de solicitud
GET /v1/template-configs HTTP/1.1
Authorization: Basic amlndWFuZ2RldjpkZXZfc2VjcmV0
Cuerpo de la solicitud
Ninguno
Parámetros de la solicitud
Ninguno
Respuesta correcta
[{
"template_id": "test-template-1", // ID de plantilla personalizada, único dentro de la aplicación
"description": "Test Template 1", // Descripción de la plantilla
"send_channel_strategy": "whatsapp|sms", // Estrategia de entrega de la plantilla; admite whatsapp/sms/voice/email. Las estrategias combinadas utilizan el carácter "|" para indicar la estrategia de reserva (fallback)
"brand_name": "Brand Name", // Nombre de marca; se utiliza como firma en el contenido de la plantilla para determinados países/regiones (p. ej., obligatorio para canales SMS en algunos países/regiones)
"verify_code_config": { // Configuración de códigos de verificación; se devuelve cuando la plantilla incluye tipos de código de verificación
"verify_code_type": 1, // Tipo de código de verificación, rango [1,7]
"verify_code_len": 6, // Longitud del código de verificación, rango [4,10]
"verify_code_ttl": 1 // Periodo de validez del código de verificación, rango [1,10]. Nota: Cuando la estrategia incluye whatsapp, el valor solo puede ser 1, 5 o 10
},
"whatsapp_config": { // Configuración de la estrategia de whatsapp; se devuelve cuando la estrategia de entrega incluye whatsapp
"template_type": 1 // Tipo de plantilla de Whatsapp; actualmente solo admite plantillas predeterminadas, valor fijo 1
},
"sms_config": { // Configuración de la estrategia de SMS; se devuelve cuando la estrategia de entrega incluye SMS
"template_type": 2, // Tipo de plantilla SMS; valores: 1-plantilla predeterminada/2-plantilla personalizada
"template_parts": 1 // Partes de facturación estimadas para la plantilla SMS. Si la plantilla es demasiado larga, el precio específico = partes de facturación * precio unitario
},
"voice_config": { // Configuración de la estrategia de voz; se devuelve cuando la estrategia de entrega incluye voice
"template_type": 1 // Tipo de plantilla de voz; actualmente solo admite plantillas predeterminadas, valor fijo 1
},
"email_config": { // Configuración de la estrategia de correo electrónico; se devuelve cuando la estrategia de entrega incluye email
"template_name": "Email Template Name" // Nombre de la plantilla de correo electrónico
},
"pwa_config": { // Configuración relacionada con PWA; se devuelve cuando existe configuración de PWA
"pwa_platform": "xx", // Plataforma PWA utilizada
"pwa_code": "xx" // Código utilizado en la plataforma PWA
},
"created_time": 1234567890, // Fecha/hora de creación de la plantilla, en formato timestamp, con precisión de segundos
"status": 1, // Estado de la plantilla; valores: 1-Pendiente de revisión/2-Aprobada/3-Rechazada
"audit_remark": "xx" // Observaciones de auditoría; se utilizan normalmente para ver motivos de rechazo cuando la revisión se rechaza
},...]
Respuesta de error
{
"code": 4001,
"message": "config not exist"
}
Códigos de error
| Código de error | Código HTTP | Descripción |
|---|---|---|
| 1000 | 500 | Error interno |
| 2001 | 401 | Fallo de autenticación; se proporcionó un token incorrecto |
| 2002 | 401 | Fallo de autenticación; el token ha caducado o se ha deshabilitado |
| 2004 | 403 | Sin permisos para llamar a esta API |
| 4001 | 400 | La plantilla no existe |
Obtener detalles de la plantilla
Endpoint
GET /v1/template-configs/{templateId}
Autenticación
Se utiliza HTTP Basic Authentication. Añadir el encabezado Authorization en el encabezado HTTP:
Authorization: Basic ${base64_auth_string}
El valor base64_auth_string anterior se genera mediante el algoritmo: base64(dev_key:dev_secret)
Ejemplo de solicitud
Encabezado de solicitud
GET /v1/template-configs/custom-template-id HTTP/1.1
Authorization: Basic amlndWFuZ2RldjpkZXZfc2VjcmV0
Cuerpo de la solicitud
Ninguno
Parámetros de la solicitud
El {templateId} en la URL representa el ID de la plantilla que se debe recuperar, definido por el solicitante al crear la plantilla.
Respuesta correcta
{
"template_id": "test-template-1", // ID de plantilla personalizada, único dentro de la aplicación
"description": "Test Template 1", // Descripción de la plantilla
"send_channel_strategy": "whatsapp|sms", // Estrategia de entrega de la plantilla; admite whatsapp/sms/voice/email. Las estrategias combinadas utilizan el carácter "|" para indicar la estrategia de reserva (fallback)
"brand_name": "Brand Name", // Nombre de marca; se utiliza como firma en el contenido de la plantilla para determinados países/regiones (p. ej., obligatorio para canales SMS en algunos países/regiones)
"verify_code_config": { // Configuración de códigos de verificación; se devuelve cuando la plantilla incluye tipos de código de verificación
"verify_code_type": 1, // Tipo de código de verificación, rango [1,7]
"verify_code_len": 6, // Longitud del código de verificación, rango [4,10]
"verify_code_ttl": 1 // Periodo de validez del código de verificación, rango [1,10]. Nota: Cuando la estrategia incluye whatsapp, el valor solo puede ser 1, 5 o 10
},
"whatsapp_config": { // Configuración de la estrategia de whatsapp; se devuelve cuando la estrategia de entrega incluye whatsapp
"template_type": 1 // Tipo de plantilla de Whatsapp; actualmente solo admite plantillas predeterminadas, valor fijo 1
},
"sms_config": { // Configuración de la estrategia de SMS; se devuelve cuando la estrategia de entrega incluye SMS
"template_type": 2, // Tipo de plantilla SMS; valores: 1-plantilla predeterminada/2-plantilla personalizada
"template_parts": 1, // Partes de facturación estimadas para la plantilla SMS. Si la plantilla es demasiado larga, el precio específico = partes de facturación * precio unitario
"template_custom_config": { // Configuración de plantilla SMS personalizada; válida cuando el tipo de plantilla SMS es personalizada
"custom_sub_type": "authentication", // Tipo de plantilla personalizada; valores: authentication-Código de verificación/marketing-Marketing/utility-Notificación
"custom_content": "xxx" // Contenido de plantilla personalizada. Nota: Si el subtipo es authentication (Código de verificación), debe incluir la variable {{code}}
}
},
"voice_config": { // Configuración de la estrategia de voz; se devuelve cuando la estrategia de entrega incluye voice
"template_type": 1 // Tipo de plantilla de voz; actualmente solo admite plantillas predeterminadas, valor fijo 1
},
"email_config": { // Configuración de la estrategia de correo electrónico; se devuelve cuando la estrategia de entrega incluye email
"template_name": "Email Template Name", // Nombre de la plantilla de correo electrónico
"template_custom_configs": [{ // Configuración de plantilla de correo electrónico personalizada; válida cuando el tipo de plantilla de correo electrónico es personalizada. Nota: es un array de objetos, que se distinguen principalmente por idioma en configuraciones múltiples
"language": "default", // Idioma; "default" es el predeterminado. Al enviar mensajes, se puede asociar contenido de plantilla diferente según el parámetro language
"pre_from_name": "test", // Nombre del remitente predefinido
"pre_from_mail": "test@test.com", // Correo del remitente predefinido
"pre_subject": "test", // Asunto del correo predefinido
"template_content": "Preset email template content, required. Custom variables like {{self}}, verification code is {{code}}", // Contenido del correo electrónico; admite HTML. Las variables deben ir entre llaves dobles {{}}
"pre_param_map": { // Valores predeterminados para las variables del contenido del correo. Si durante el envío no se especifica ningún valor de variable, los valores predeterminados siguientes reemplazarán las variables, declarados como pares clave-valor
"self": "This is the default value for the self variable"
}
}]
},
"pwa_config": { // Configuración relacionada con PWA; se devuelve cuando existe configuración de PWA
"pwa_platform": "xx", // Plataforma PWA utilizada
"pwa_code": "xx" // Código utilizado en la plataforma PWA
},
"created_time": 1234567890, // Fecha/hora de creación de la plantilla, en formato timestamp, con precisión de segundos
"status": 1, // Estado de la plantilla; valores: 1-Pendiente de revisión/2-Aprobada/3-Rechazada
"audit_remark": "xx" // Observaciones de auditoría; se utilizan normalmente para ver motivos de rechazo cuando la revisión se rechaza
}
Respuesta de error
{
"code": 4001,
"message": "config not exist"
}
Códigos de error
| Código de error | Código HTTP | Descripción |
|---|---|---|
| 1000 | 500 | Error interno |
| 2001 | 401 | Fallo de autenticación; se proporcionó un token incorrecto |
| 2002 | 401 | Fallo de autenticación; el token ha caducado o se ha deshabilitado |
| 2004 | 403 | Sin permisos para llamar a esta API |
| 4001 | 400 | La plantilla no existe |

