Saltar al contenido

API de plantillas de correo electrónico

La API de plantillas de correo electrónico gestiona las plantillas de correo electrónico reutilizables que se encuentran detrás de los preajustes de correo electrónico de una aplicación, las mismas plantillas que usted crea en el editor de correo electrónico del Panel de Control. Cada plantilla almacena asuntos por configuración regional, información del remitente y contenido del editor, y se identifica por el código del preajuste de correo electrónico al que está conectada. Utilice ese código para enviar la plantilla a través de Notify (carga útil de correo electrónico email_template) o un punto de Customer Journey Enviar correo electrónico.

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

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

Autenticación

Anchor link to

Cada solicitud debe incluir un encabezado Authorization con su 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 formas. Las respuestas siempre se codifican utilizando los nombres de campo del proto, en snake_case (per_page, email_template, sender_info, preview_settings, etc.). Los ejemplos de respuesta y la referencia de objetos a continuación utilizan esa forma.
  • code: cada respuesta de plantilla lleva el código de su preajuste de correo electrónico conectado, no un ID de plantilla interno. Pase este mismo código a Get, Update, Delete y a las API de mensajería/journey mencionadas anteriormente.
  • Campos no poblados: las respuestas incluyen todos los campos, incluso cuando están vacíos o tienen valor cero.

Respuestas de error

Anchor link to
Estado HTTPSignificado
400 Bad RequestArgumento no válido: falta un campo obligatorio o está mal formado, o una precondición falló (por ejemplo, eliminar una plantilla que todavía está siendo utilizada por un journey).
401 UnauthorizedEncabezado Authorization faltante o no válido.
403 ForbiddenLa aplicación o el preajuste no pertenecen 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 correo electrónico
GET/api/email_templatesListar las plantillas de correo electrónico de una aplicación
GET/api/email_templates/{code}Obtener una única plantilla de correo electrónico
PUT/api/email_templates/{code}Actualizar una plantilla de correo electrónico
DELETE/api/email_templates/{code}Eliminar una plantilla de correo electrónico
POST/api/email_templates:cloneClonar una plantilla de correo electrónico en una aplicación

Crea una nueva plantilla de correo electrónico (su contenido de editor más un preajuste de correo electrónico 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 se creará la plantilla.
namestringNombre de la plantilla, de 1 a 255 caracteres.
contentobjectEl objeto de contenido de correo electrónico.
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, por ejemplo, un fragmento de bloque sincronizado. Las plantillas de sistema están ocultas de List (ver nota a continuación), pero siguen siendo 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 correo electrónico creado, pero sin content (este endpoint no lo devuelve). Llame a Get con el code devuelto si necesita leer el contenido de vuelta.

Lista las plantillas de correo electrónico 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 las 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%) con el nombre de la plantilla o su código; cualquiera de las dos coincidencias es suficiente.
searchByLabelstringNoCoincidencia de subcadena en la etiqueta (like %label%), o coincidencia exacta cuando strictSearchByLabel es true.
strictSearchByLabelbooleanNoUtiliza coincidencia exacta en lugar de subcadena para searchByLabel.
searchByCategoryarray of stringsNoRepita el parámetro para filtrar por varias categorías, por ejemplo, ?searchByCategory=lifecycle&searchByCategory=promo.
CampoTipoDescripción
email_templatesarray of objectsLa página actual de objetos de plantilla de correo electrónico. 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 correo electrónico por su código, incluyendo la información del remitente, los asuntos por configuración regional 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 correo electrónico 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ézcalo en false para omitirlo; generalmente representa más de la mitad de la carga útil, y el contenido del editor ya describe la plantilla.

Devuelve { "email_template": { ... } }, el objeto de plantilla de correo electrónico completo.

Actualizar

Anchor link to

Actualiza una plantilla de correo electrónico 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, de 1 a 255 caracteres. Omita para mantener el nombre actual.
contentobjectNoNuevo objeto de contenido de correo electrónico, reemplazando el contenido almacenado por completo. Omita para dejar el contenido sin cambios.
labelstringNoNueva etiqueta. Siempre se sobrescribe; omita o envíe "" para borrarla.
categoriesarray of stringsNoNuevo conjunto completo de nombres de categorías. Omita para dejar las categorías sin cambios; envíe [] para borrarlas.
previewSettingsobjectNoNuevas configuraciones de vista previa. Omita 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 correo electrónico actualizado, también sin content. Llame a Get si necesita leer el contenido de vuelta.

Elimina una plantilla de correo electrónico 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 correo electrónico (su contenido y preajuste) en una aplicación de destino, opcionalmente con 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. Se llama emailPresetCode aquí porque es el código del preajuste de correo electrónico conectado; consulte 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, de 1 a 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 del proto en snake_case (consulte Convenciones). Cuando envía 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 formas en la entrada.

Objeto de plantilla de correo electrónico

Anchor link to
CampoTipoDescripción
codestringCódigo del preajuste de correo electrónico conectado. Identifica esta plantilla en cualquier otro lugar de la API.
namestringNombre de la plantilla.
labelstringEtiqueta de texto libre.
categoriesarray of stringsNombres de las categorías.
contentobjectEl objeto de contenido de correo electrónico. 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 correo electrónico

Anchor link to
CampoTipoDescripción
sender_infoobjectObjeto de información del remitente — direcciones from y reply_to.
subjectobject (map)Asunto por configuración regional, por ejemplo, { "en": "Subject", "default": "Subject" }.
unlayer / pushwoosh / smartcardsobjectEl contenido del editor. Exactamente uno de estos debe estar configurado; selecciona qué editor produjo (y renderizará) la plantilla. Consulte 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 mediante programación/API.
smartcardshtml, localization_data, contentcontent, localization_dataEditor de bloques de Smart Cards; content es su JSON específico del editor.

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

El texto dentro de html o un valor de localization_data puede incluir etiquetas de Contenido Dinámico, por ejemplo, {name|string|there}; estas se resuelven con las etiquetas del dispositivo del destinatario cuando se envía realmente el correo electrónico. Esta API no las resuelve; simplemente almacena y devuelve cualquier texto que usted ponga 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 correo electrónico válidas.

Relacionado

Anchor link to