Saltar al contenido

API de Plantillas de Email

La API de Plantillas de Email gestiona las plantillas de email reutilizables detrás de los preajustes de email de una aplicación — las mismas plantillas que construyes en el editor de email del Panel de Control. Cada plantilla almacena asuntos por localidad, información del remitente y contenido del editor, y se identifica por el código del preajuste de email al que está conectada. Usa ese código para enviar la plantilla a través de Notify (payload de email email_template) o un punto Enviar email de Customer Journey.

https://rpc-api.svc-nue.pushwoosh.com

Todos los endpoints se sirven a través de HTTPS. Las solicitudes y respuestas usan application/json a menos que se indique lo contrario.

Autenticación

Anchor link to

Cada solicitud debe incluir un encabezado Authorization con tu token de API del Servidor:

Authorization: Api YOUR_API_TOKEN

Convenciones

Anchor link to
  • Nomenclatura de campos: los cuerpos de las solicitudes y los parámetros de consulta/ruta aceptan lowerCamelCase (por ejemplo, previewSettings, searchByLabel, includeHtml) — el servidor decodifica cualquiera de las dos mayúsculas. Las respuestas siempre se codifican usando los nombres de campo de proto, en snake_case (per_page, email_template, sender_info, preview_settings, y así sucesivamente). Los ejemplos de respuesta y la referencia de objetos a continuación usan esa nomenclatura.
  • code: cada respuesta de plantilla lleva el código de su preajuste de email conectado, no un ID de plantilla interno. Pasa este mismo código a Get, Update, Delete, y a las APIs de mensajería/journey mencionadas anteriormente.
  • Campos no poblados: las respuestas incluyen todos los campos, incluso cuando están vacíos o con valor cero.

Respuestas de error

Anchor link to
Estado HTTPSignificado
400 Bad RequestArgumento inválido — falta un campo requerido o está mal formado, o una precondición falló (por ejemplo, eliminar una plantilla que todavía está en uso por un journey).
401 UnauthorizedEncabezado Authorization faltante o inválido.
403 ForbiddenLa aplicación o el preajuste no pertenece a la cuenta del solicitante.
404 Not FoundNo se encontró la plantilla, el preajuste o la aplicación.
500 Internal Server ErrorFalla inesperada del lado del servidor.
MétodoRutaDescripción
POST/api/email_templatesCrear una nueva plantilla de email
GET/api/email_templatesListar las plantillas de email de una aplicación
GET/api/email_templates/{code}Obtener una única plantilla de email
PUT/api/email_templates/{code}Actualizar una plantilla de email
DELETE/api/email_templates/{code}Eliminar una plantilla de email
POST/api/email_templates:cloneClonar una plantilla de email en una aplicación

Crea una nueva plantilla de email — su contenido de editor más un preajuste de email conectado — en una aplicación, y devuelve el código de plantilla generado.

POST /api/email_templates

Cuerpo de la solicitud

Anchor link to
ParámetroTipoRequeridoDescripción
applicationstringEl código de aplicación de Pushwoosh en el que crear la plantilla.
namestringNombre de la plantilla, 1–255 caracteres.
contentobjectEl objeto de contenido de email.
labelstringNoEtiqueta de texto libre, hasta 255 caracteres.
categoriesarray of stringsNoNombres de categorías para etiquetar la plantilla.
previewSettingsobjectNoConfiguraciones de vista previa del editor arbitrarias, almacenadas y devueltas tal cual.
systembooleanNoMarca la plantilla como una plantilla de sistema — una característica interna, p. ej., un fragmento de bloque sincronizado. Las plantillas de sistema están ocultas de List (ver nota a continuación), pero permanecen accesibles por código. El valor predeterminado es false.
Ejemplo de solicitud
Anchor link to
{
"application": "XXXXX-XXXXX",
"name": "Welcome email",
"label": "onboarding",
"categories": ["lifecycle"],
"content": {
"senderInfo": {
"from": { "email": "hello@acme.com", "name": "Acme" },
"replyTo": { "email": "support@acme.com", "name": "Acme Support" }
},
"subject": { "en": "Welcome to Acme!", "default": "Welcome to Acme!" },
"pushwoosh": {
"html": "<html><body>Welcome, {name|string|there}!</body></html>",
"localizationData": { "default": { "name": "there" } }
}
}
}

Devuelve { "email_template": { ... } } — el objeto de plantilla de email creado, pero sin content (este endpoint no lo devuelve). Llama a Get con el code devuelto si necesitas leer el contenido de vuelta.

Lista las plantillas de email de una aplicación — solo metadatos, sin contenido — con paginación, ordenación y filtrado por nombre, etiqueta o categoría.

GET /api/email_templates

Parámetros de consulta

Anchor link to
ParámetroTipoRequeridoDescripción
applicationstringEl código de la aplicación para la cual listar plantillas.
orderBystringNoNAME (predeterminado), CREATED, o UPDATED.
orderDirectionstringNoASC (predeterminado) o DESC.
pageintegerNoÍndice de página basado en cero.
perPageintegerNoTamaño de la página. El valor predeterminado es 100 cuando se omite o es 0. Este endpoint no impone un máximo explícito.
searchByNamestringNoCoincidencia de subcadena (like %value%) contra el nombre de la plantilla o su código — cualquiera de las coincidencias es suficiente.
searchByLabelstringNoCoincidencia de subcadena en la etiqueta (like %label%), o coincidencia exacta cuando strictSearchByLabel es true.
strictSearchByLabelbooleanNoUsa coincidencia exacta en lugar de subcadena para searchByLabel.
searchByCategoryarray of stringsNoRepite el parámetro para filtrar por varias categorías, p. ej., ?searchByCategory=lifecycle&searchByCategory=promo.
CampoTipoDescripción
email_templatesarray of objectsLa página actual de objetos de plantilla de email. content es null en cada elemento.
pageintegerEl índice de página devuelto.
per_pageintegerEl tamaño de página utilizado para esta respuesta.
totalintegerNúmero total de plantillas que coinciden con los filtros, en todas las páginas.
Ejemplo de respuesta
Anchor link to
{
"email_templates": [
{ "code": "AAAAA-BBBBB", "name": "Welcome email", "label": "onboarding", "categories": ["lifecycle"] }
],
"page": 0,
"per_page": 100,
"total": 1
}

Devuelve una única plantilla de email por su código, incluyendo información del remitente, asuntos por localidad y el contenido completo del editor.

GET /api/email_templates/{code}

Parámetros de ruta

Anchor link to
ParámetroTipoDescripción
codestringEl código de la plantilla (el código de su preajuste de email conectado).

Parámetros de consulta

Anchor link to
ParámetroTipoRequeridoDescripción
includeHtmlbooleanNoSi se debe devolver el html renderizado junto con el contenido del editor. El valor predeterminado es true. Establécelo en false para omitirlo — típicamente es más de la mitad del payload, y el contenido del editor ya describe la plantilla.

Devuelve { "email_template": { ... } }, el objeto de plantilla de email completo.

Actualizar

Anchor link to

Actualiza una plantilla de email existente por código, sobrescribiendo los campos proporcionados.

PUT /api/email_templates/{code}

Parámetros de ruta

Anchor link to
ParámetroTipoDescripción
codestringEl código de la plantilla a actualizar.

Cuerpo de la solicitud

Anchor link to
ParámetroTipoRequeridoDescripción
namestringNoNuevo nombre, 1–255 caracteres. Omite para mantener el nombre actual.
contentobjectNoNuevo objeto de contenido de email, reemplazando el contenido almacenado por completo. Omite para dejar el contenido sin cambios.
labelstringNoNueva etiqueta. Siempre se sobrescribe — omite o envía "" para borrarla.
categoriesarray of stringsNoNuevo conjunto completo de nombres de categorías. Omite para dejar las categorías sin cambios; envía [] para borrarlas.
previewSettingsobjectNoNuevas configuraciones de vista previa. Omite para dejar sin cambios.
Ejemplo de solicitud
Anchor link to
{
"name": "Welcome email v2",
"label": "onboarding",
"content": {
"senderInfo": { "from": { "email": "hello@acme.com", "name": "Acme" } },
"subject": { "default": "Welcome to Acme — updated!" },
"pushwoosh": {
"html": "<html>...</html>",
"localizationData": {}
}
}
}

Devuelve { "email_template": { ... } } — el objeto de plantilla de email actualizado, también sin content. Llama a Get si necesitas leer el contenido de vuelta.

Elimina una plantilla de email y su preajuste conectado por código, eliminando el contenido almacenado.

DELETE /api/email_templates/{code}

Parámetros de ruta

Anchor link to
ParámetroTipoDescripción
codestringEl código de la plantilla a eliminar.

Un objeto vacío en caso de éxito: {}.

Clona una plantilla de email — su contenido y preajuste — en una aplicación de destino, opcionalmente bajo un nuevo nombre.

POST /api/email_templates:clone

Cuerpo de la solicitud

Anchor link to
ParámetroTipoRequeridoDescripción
emailPresetCodestringEl code de la plantilla (devuelto por Create, Get, List, o Update) a clonar. Nombrado emailPresetCode aquí porque es el código del preajuste de email conectado — ver Convenciones.
applicationstringCódigo de la aplicación de destino. Puede ser la misma aplicación, o una diferente propiedad de la misma cuenta.
namestringNoNombre para el clon, 1–255 caracteres. El valor predeterminado es el nombre de la plantilla de origen.
Ejemplo de solicitud
Anchor link to
{
"emailPresetCode": "AAAAA-BBBBB",
"application": "YYYYY-YYYYY",
"name": "Welcome email (copy)"
}
CampoTipoDescripción
email_preset_codestringEl code de la nueva plantilla — el mismo identificador que Get/Update/Delete llaman code.

Referencia de objetos

Anchor link to

Los nombres de los campos a continuación coinciden con lo que Get, List, Update, y Create realmente devuelven — nombres de campo de proto en snake_case (ver Convenciones). Cuando envías estas mismas estructuras de vuelta en un cuerpo de solicitud (Create, Update), la forma lowerCamelCase utilizada en los ejemplos de solicitud anteriores también funciona; el servidor acepta cualquiera de las dos mayúsculas en la entrada.

Objeto de plantilla de email

Anchor link to
CampoTipoDescripción
codestringCódigo del preajuste de email conectado. Identifica esta plantilla en cualquier otro lugar de la API.
namestringNombre de la plantilla.
labelstringEtiqueta de texto libre.
categoriesarray of stringsNombres de categorías.
contentobjectEl objeto de contenido de email. Poblado solo por Get; null en las respuestas de Create, List, y Update.
preview_settingsobjectConfiguraciones de vista previa del editor arbitrarias.
createdstring (RFC 3339)Marca de tiempo de creación.
updatedstring (RFC 3339)Marca de tiempo de la última actualización.

Objeto de contenido de email

Anchor link to
CampoTipoDescripción
sender_infoobjectObjeto de información del remitente — direcciones from y reply_to.
subjectobject (map)Asunto por localidad, p. ej., { "en": "Subject", "default": "Subject" }.
unlayer / pushwoosh / smartcardsobjectEl contenido del editor. Exactamente uno de estos debe estar establecido — selecciona qué editor produjo (y renderizará) la plantilla. Ver tipos de editor a continuación.

Tipos de editor

Anchor link to
TipoCampoSubcampos requeridosDescripción
unlayerhtml, localization_data, editor_configeditor_config, localization_dataEditor de bloques de arrastrar y soltar (Unlayer). editor_config es el JSON de diseño de Unlayer.
pushwooshhtml, localization_datalocalization_dataEditor propio de Pushwoosh basado en HTML. Recomendado para plantillas creadas programáticamente/API.
smartcardshtml, localization_data, contentcontent, localization_dataEditor de bloques Smart Cards; content es su JSON específico del editor.

En cada tipo, html es la salida renderizada. localization_data es el contenido por localidad propio de ese editor: un objeto con clave por código de localidad (en, es, default, …), donde cada valor es la copia de esa localidad de los campos del editor. Su forma interna es específica del editor y opaca para esta API — la API la almacena y devuelve tal cual. Es requerido en Create/Update para cada tipo (envía {} si no hay nada que localizar).

El texto dentro de html o un valor de localization_data puede incluir etiquetas de Contenido Dinámico, p. ej., {name|string|there} — esas se resuelven contra las Tags del dispositivo del destinatario cuando el email se envía realmente. Esta API no las resuelve; simplemente almacena y devuelve cualquier texto que pongas allí.

Objeto de información del remitente

Anchor link to
CampoTipoDescripción
fromobject{ "email": string, "name": string } — dirección del remitente.
reply_toobject{ "email": string, "name": string } — dirección de respuesta.

Ambos subcampos email, cuando no están vacíos, deben ser direcciones de email válidas.

Relacionado

Anchor link to