Saltar al contenido

API de Presets

Un preset de push es una plantilla de notificación push reutilizable, el mismo objeto que construyes en el editor de push del Panel de Control. Esta API gestiona únicamente los presets de push; los presets de SMS, WhatsApp, Kakao, LINE y Viber tienen cada uno su propio servicio de presets dedicado, que no se cubre aquí.

Usa el code de un preset para enviarlo a través de Notify (payload preset) o un punto de Envío de push de Customer Journey.

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

Todos los endpoints se sirven sobre 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 TU_TOKEN_API

Convenciones

Anchor link to
  • Nomenclatura de campos: los cuerpos de las solicitudes y los parámetros de consulta/ruta aceptan lowerCamelCase (por ejemplo, sendType, localizedProperties, searchByName); el servidor deserializa cualquiera de las dos formas. Las respuestas siempre se serializan usando los nombres de campo de proto, en snake_case (localized_properties, platform_properties, per_page, etc.). Los ejemplos de respuesta y la referencia del objeto Preset a continuación usan esa forma.
  • code: cada respuesta de preset lleva su propio código, generado en Create. Pasa este código a Get, Update, UpdatePartial, Delete, Clone y a las API de mensajería/journey mencionadas anteriormente.
  • Claves de plataforma: los mapas platforms y open_actions se clavean por el código de tipo de dispositivo numérico (1 para iOS, 3 para Android, etc.). platform_properties se clavea por el nombre enum de la plataforma en su lugar (IOS, ANDROID, BAIDU_ANDROID, HUAWEI_ANDROID, OSX — las únicas cinco plataformas que cubre).
  • Campos no poblados: las respuestas de Get, Create y Clone incluyen todos los campos del objeto Preset, incluso cuando están vacíos o con valor cero. List devuelve un conjunto de campos reducido — ver List a continuación. Update y UpdatePartial no devuelven ningún campo de preset en absoluto — ver la advertencia en sus secciones.

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, clonar sin un name).
401 UnauthorizedEncabezado Authorization ausente o inválido.
403 ForbiddenLa aplicación o el preset no pertenecen a la cuenta del solicitante.
404 Not FoundNo se encontró el preset o la aplicación.
500 Internal Server ErrorFalla inesperada del lado del servidor.

Delete en un preset que todavía está en uso por un punto de envío de push de un journey en ejecución o pausado también devuelve 400 Bad Request (un FailedPrecondition en la comunicación) — no 409. Primero, elimina el preset del journey.

MétodoRutaDescripción
POST/api/presetsCrear un nuevo preset de push
GET/api/presetsListar los presets de push de una aplicación
GET/api/presets/{code}Obtener un único preset de push
PUT/api/presets/{code}Actualizar un preset de push (sobrescritura completa)
PUT/api/presets/{code}:partialActualizar un preset de push (parcial)
POST/api/presets/{code}:cloneClonar un preset de push
DELETE/api/presets/{code}Eliminar un preset de push

Crea un nuevo preset de push en una aplicación y lo devuelve con su código generado.

POST /api/presets

Cuerpo de la solicitud

Anchor link to
ParámetroTipoRequeridoDescripción
applicationstringEl código de aplicación en el que se creará el preset.
namestringNombre del preset.
sendTypestringNoCanal del preset (por ejemplo, push).
isV2booleanNoFija el indicador de origen del preset. Omitir para que por defecto sea true (v2); establecer en false solo al reproducir un preset v1 heredado.

Todos los demás campos — contenido localizado, plataformas, deep link, inbox, categorías, etc. — se comparten con Update y se documentan una vez en la referencia del objeto Preset a continuación.

Ejemplo de solicitud
Anchor link to
{
"application": "XXXXX-XXXXX",
"name": "20% discount",
"platforms": { "1": true, "3": true },
"localizedContent": {
"default": "Get your 20% discount right now",
"es": "Consigue tu 20% de descuento ahora mismo"
},
"localizedTitle": { "default": "Hi there" },
"openAction": { "link": { "url": "https://example.com" } },
"categories": ["promo"]
}

Devuelve { "preset": { ... } }, el objeto Preset creado.

Lista los presets de push de una aplicación — un conjunto de campos reducido, no el objeto completo — con paginación, ordenación y filtrado por nombre o categoría.

GET /api/presets

Parámetros de consulta

Anchor link to
ParámetroTipoRequeridoDescripción
applicationstringEl código de la aplicación para la cual listar los presets.
orderBystringNoNAME (predeterminado), CREATED o UPDATED.
orderDirectionstringNoASC (predeterminado) o DESC.
pageintegerNoÍndice de página basado en cero.
perPageintegerNoTamaño de la página. Por defecto es 100 cuando se omite o es 0.
searchByNamestringNoCoincidencia de subcadena insensible a mayúsculas y minúsculas en el nombre o código del preset (ILIKE %value%).
searchByCategoryarray of stringsNoRepite el parámetro para filtrar por varias categorías, ej. ?searchByCategory=promo&searchByCategory=lifecycle.
showHiddenbooleanNoIncluir presets marcados como hidden.

Cada elemento contiene solo: name, code, platforms, localized_content (texto plano por localización — no localized_properties), localized_title, localized_subtitle, banner, icon, categories, journey_uuid, custom_data, is_v2, created, updated. Todos los demás campos del objeto Presetlocalized_properties, platform_properties, deeplink, richmedia, url, etc. — se omiten, incluso si están establecidos en el preset.

CampoTipoDescripción
presetsarray de objetosLa página actual de presets, en la forma reducida descrita anteriormente.
pageintegerEl índice de la página devuelta.
per_pageintegerEl tamaño de página utilizado para esta respuesta.
totalintegerNúmero total de presets que coinciden con los filtros, en todas las páginas.
Ejemplo de respuesta
Anchor link to
{
"presets": [
{ "name": "20% discount", "code": "AAAAA-BBBBB", "platforms": { "1": true, "3": true }, "categories": ["promo"] }
],
"page": 0,
"per_page": 100,
"total": 1
}

Devuelve un único preset de push por su código, con todos los campos del objeto Preset poblados.

GET /api/presets/{code}

Parámetros de ruta

Anchor link to
ParámetroTipoDescripción
codestringEl código del preset.

Devuelve { "preset": { ... } }, el objeto Preset completo.

Actualizar

Anchor link to

Sobrescribe un preset de push existente por código con los campos proporcionados.

PUT /api/presets/{code}

Parámetros de ruta

Anchor link to
ParámetroTipoDescripción
codestringEl código del preset a sobrescribir.

Cuerpo de la solicitud

Anchor link to

Mismos campos que en Crear (menos application), más el resto de los campos del objeto Preset. sendType se acepta pero se ignora — el canal de un preset no se puede cambiar después de la creación.

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

UpdatePartial

Anchor link to

Actualiza solo los campos proporcionados de un preset de push existente por código, dejando los campos no establecidos sin cambios.

PUT /api/presets/{code}:partial

Parámetros de ruta

Anchor link to
ParámetroTipoDescripción
codestringEl código del preset a parchear.

Cuerpo de la solicitud

Anchor link to

Mismos campos que en Update, menos application. A diferencia de Update, cada campo aquí — incluyendo localizedProperties, platformProperties, categories, y el resto del grupo de propiedades de contenido listado en la advertencia de Update — se deja sin cambios cuando se omite, y solo se modifica cuando lo envías (un campo de mapa/array que envíes todavía reemplaza completamente el valor existente para ese campo, simplemente no afecta a nada que no hayas incluido). sendType también se acepta pero se ignora.

Ejemplo de solicitud
Anchor link to
{
"sendRate": 500,
"cappingCount": 3,
"cappingDays": 7
}

También un objeto vacío — ver la advertencia anterior.

Duplica un preset de push existente, con un nuevo nombre, en la misma aplicación.

POST /api/presets/{code}:clone

Cuerpo de la solicitud

Anchor link to
ParámetroTipoRequeridoDescripción
codestringCódigo del preset de origen a duplicar.
namestringNombre para el nuevo preset.
Ejemplo de solicitud
Anchor link to
{ "code": "AAAAA-BBBBB", "name": "20% discount (copy)" }

Devuelve { "preset": { ... } }, el nuevo objeto Preset.

Elimina permanentemente un preset de push por código.

DELETE /api/presets/{code}

Parámetros de ruta

Anchor link to
ParámetroTipoDescripción
codestringEl código del preset a eliminar.

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

Referencia de objetos

Anchor link to

Los nombres de los campos a continuación coinciden con lo que Get, Create, Update y Clone realmente devuelven — nombres de campo de proto en snake_case (ver Convenciones). La forma lowerCamelCase utilizada en los ejemplos de solicitud anteriores funciona de la misma manera en la entrada.

Objeto Preset

Anchor link to
CampoTipoDescripción
codestringGenerado en Create. Identifica este preset en cualquier otro lugar de la API.
namestringNombre del preset.
send_typestringCanal del preset (por ejemplo, push).
is_v2booleantrue para presets creados o migrados al modelo de contenido v2.
systembooleanMarca el preset como un preset de sistema/interno.
hiddenbooleanOculta el preset de los resultados de List (envía showHidden: true para incluirlo).
createdstring (RFC 3339)Marca de tiempo de creación.
updatedstring (RFC 3339)Marca de tiempo de la última actualización.

Segmentación y contenido

Anchor link to
CampoTipoDescripción
platformsmap<string, boolean>A qué plataformas se dirige el preset, claveado por código de tipo de dispositivo (ej. "1" para iOS).
localized_propertiesmap<string, object>Localización → contenido rico por plataforma. Misma forma que LocalizedContent en el payload de Notify — una entrada por bloque de plataforma (ios, android, etc.). Esta es la forma principal de establecer contenido de push específico de la plataforma.
localized_title / localized_subtitle / localized_contentmap<string, string>Localización → texto plano. Una alternativa más simple a localized_properties para el título, subtítulo y cuerpo cuando no se necesitan sobrescrituras por plataforma.
platform_propertiesmap<string, object>Sobrescrituras heredadas por plataforma, claveadas por el nombre enum de la plataforma (IOS, ANDROID, BAIDU_ANDROID, HUAWEI_ANDROID, OSX). Ver objeto PlatformProperties a continuación.
open_actionOpenActionAcción que se activa cuando el usuario abre la notificación, aplicada a todas las plataformas. Mutuamente excluyente con open_actions — la respuesta establece exactamente una.
open_actionsmap<string, OpenAction>Sobrescritura por plataforma de open_action, claveada por código de tipo de dispositivo.
deeplinkstringCódigo de Deep Link.
deeplink_paramsmap<string, string>Parámetros pasados al deep link.
richmediastringCódigo de Rich Media abierto por la notificación.
urlstringURL abierta por la notificación, si no se usa un deep link o Rich Media.
CampoTipoDescripción
inbox_imagestringURL de la imagen que se muestra en la entrada del Message Inbox.
inbox_iconstringURL del ícono que se muestra en la entrada del Message Inbox.
inbox_daysintegerDías que la entrada permanece en el Message Inbox.
inbox_datestring (RFC 3339)Fecha de expiración explícita para la entrada del Message Inbox, como alternativa a inbox_days.

Organización y metadatos

Anchor link to
CampoTipoDescripción
categoriesarray de stringsNombres de las categorías con las que está etiquetado el preset.
campaign_codestringCódigo de campaña al que se atribuye este preset.
filter_codestringCódigo de Segmento / Filtro al que se dirige este preset por defecto.
geo_zonesstringSegmentación por Geozona, si el preset se activa por geolocalización.
journey_uuidstringUUID del Customer Journey que posee este preset, si fue creado desde un punto de envío de push de un journey.
custom_dataobjectJSON de formato libre reenviado al SDK del cliente como el parámetro u.
bannerstringURL de la imagen de gran tamaño / adjunto.
iconstringURL del ícono de notificación personalizado.

Límites de entrega

Anchor link to
CampoTipoDescripción
send_rateintegerLimitación de velocidad para los envíos que usan este preset, en mensajes/segundo — el equivalente a nivel de preset de SendRate de Notify.
capping_count / capping_daysintegerLímite de frecuencia por usuario para este preset — el equivalente a nivel de preset de FrequencyCapping count / days de Notify.
CampoTipoDescripción
notification_sent_urlstringURL de callback solicitada cuando se envía una notificación que usa este preset.
notification_delivered_urlstringURL de callback solicitada cuando se entrega una notificación que usa este preset.
notification_click_urlstringURL de callback solicitada cuando se hace clic en una notificación que usa este preset.

Campos heredados

Anchor link to

Estos se arrastran del modelo de preset v1. Se pueblan para compatibilidad con el Panel de Control en lugar de para nuevas integraciones.

CampoTipoDescripción
remote_pagestringReferencia de página remota heredada.
wns_contentstringJSON de plantilla de toast de Windows heredado, como lo aceptan los métodos v1 createPreset/getPreset.
original_urlstringEl valor de url antes de ser acortado, cuando url fue reemplazado por un enlace acortado.
ios_silent / android_silent / baidu_android_silent / huawei_android_silentbooleanIndicadores de push silencioso (solo datos) por plataforma.

Objeto PlatformProperties

Anchor link to

Campos disponibles en cada entrada de platform_properties (IOS, ANDROID, BAIDU_ANDROID, HUAWEI_ANDROID, OSX):

CampoTipoDescripción
badgestringSobrescritura del contador de notificaciones (badge).
soundstringNombre del archivo de sonido.
sound_offbooleanSilenciar el sonido de la notificación.
prioritystringPrioridad en la bandeja de entrada (solo Android/Baidu/Huawei).
delivery_prioritystringPrioridad de entrega NORMAL o HIGH (solo Android/Baidu/Huawei).
ios_interruption_levelstringpassive, active, time-sensitive, o critical (solo iOS).

Relacionado

Anchor link to