Pular para o conteúdo

API de Presets

Um preset de push é um modelo de notificação push reutilizável — o mesmo objeto que você constrói no editor de push do Painel de Controle. Esta API gerencia apenas presets de push; presets de SMS, WhatsApp, Kakao, LINE e Viber têm seus próprios serviços de preset dedicados, não abordados aqui.

Use o code de um preset para enviá-lo através do Notify (payload preset) ou de um ponto de Envio de push da Customer Journey.

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

Todos os endpoints são servidos via HTTPS. As requisições e respostas usam application/json, a menos que seja indicado o contrário.

Autenticação

Anchor link to

Toda requisição deve incluir um cabeçalho Authorization com seu token de API do Servidor:

Authorization: Api SEU_TOKEN_DE_API

Convenções

Anchor link to
  • Nomenclatura de campos: corpos de requisição e parâmetros de query/path aceitam lowerCamelCase (por exemplo, sendType, localizedProperties, searchByName) — o servidor decodifica qualquer um dos casos. As respostas são sempre codificadas usando os nomes de campo do proto, em snake_case (localized_properties, platform_properties, per_page, e assim por diante). Os exemplos de resposta e a referência do Objeto Preset abaixo usam esse caso.
  • code: toda resposta de preset carrega seu próprio código, gerado em Create. Passe este código para Get, Update, UpdatePartial, Delete, Clone, e para as APIs de mensagens/journey acima.
  • Chaves de plataforma: os mapas platforms e open_actions são chaveados pelo código de tipo de dispositivo numérico (1 para iOS, 3 para Android, e assim por diante). platform_properties é chaveado pelo nome enum da plataforma (IOS, ANDROID, BAIDU_ANDROID, HUAWEI_ANDROID, OSX — as únicas cinco plataformas que cobre).
  • Campos não preenchidos: as respostas de Get, Create e Clone incluem todos os campos do Objeto Preset, mesmo quando vazios ou com valor zero. List retorna um conjunto de campos reduzido — veja Listar abaixo. Update e UpdatePartial não retornam nenhum campo de preset — veja o aviso em suas seções.

Respostas de erro

Anchor link to
Status HTTPSignificado
400 Bad RequestArgumento inválido — um campo obrigatório está ausente ou malformado, ou uma pré-condição falhou (por exemplo, clonar sem um name).
401 UnauthorizedCabeçalho Authorization ausente ou inválido.
403 ForbiddenO aplicativo ou preset não pertence à conta do chamador.
404 Not FoundO preset ou aplicativo não foi encontrado.
500 Internal Server ErrorFalha inesperada no lado do servidor.

Delete em um preset ainda usado por um ponto de Envio de push de uma journey em execução ou pausada também retorna 400 Bad Request (um FailedPrecondition na transmissão) — não 409. Remova o preset da journey primeiro.

MétodoCaminhoDescrição
POST/api/presetsCriar um novo preset de push
GET/api/presetsListar os presets de push de um aplicativo
GET/api/presets/{code}Obter um único preset de push
PUT/api/presets/{code}Atualizar um preset de push (sobrescrita completa)
PUT/api/presets/{code}:partialAtualizar um preset de push (parcial)
POST/api/presets/{code}:cloneClonar um preset de push
DELETE/api/presets/{code}Excluir um preset de push

Cria um novo preset de push em um aplicativo e o retorna com seu código gerado.

POST /api/presets

Corpo da requisição

Anchor link to
ParâmetroTipoObrigatórioDescrição
applicationstringSimO código do aplicativo no qual criar o preset.
namestringSimNome do preset.
sendTypestringNãoCanal do preset (por exemplo, push).
isV2booleanNãoFixa a flag de origem do preset. Omita para o padrão true (v2); defina como false apenas ao reproduzir um preset legado v1.

Todos os outros campos — conteúdo localizado, plataformas, deep link, inbox, categorias, etc. — são compartilhados com Update e documentados uma vez na referência do Objeto Preset abaixo.

Exemplo de requisição
Anchor link to
{
"application": "XXXXX-XXXXX",
"name": "20% de desconto",
"platforms": { "1": true, "3": true },
"localizedContent": {
"default": "Obtenha seu desconto de 20% agora mesmo",
"es": "Consigue tu 20% de descuento ahora mismo"
},
"localizedTitle": { "default": "Olá" },
"openAction": { "link": { "url": "https://example.com" } },
"categories": ["promo"]
}

Retorna { "preset": { ... } }, o Objeto Preset criado.

Lista os presets de push de um aplicativo — um conjunto de campos reduzido, não o objeto completo — com paginação, ordenação e filtragem por nome ou categoria.

GET /api/presets

Parâmetros de query

Anchor link to
ParâmetroTipoObrigatórioDescrição
applicationstringSimO código do aplicativo para listar os presets.
orderBystringNãoNAME (padrão), CREATED ou UPDATED.
orderDirectionstringNãoASC (padrão) ou DESC.
pageintegerNãoÍndice da página baseado em zero.
perPageintegerNãoTamanho da página. O padrão é 100 quando omitido ou 0.
searchByNamestringNãoCorrespondência de substring insensível a maiúsculas e minúsculas no nome ou código do preset (ILIKE %value%).
searchByCategoryarray de stringsNãoRepita o parâmetro para filtrar por várias categorias, ex. ?searchByCategory=promo&searchByCategory=lifecycle.
showHiddenbooleanNãoIncluir presets marcados como hidden.

Cada item carrega apenas: name, code, platforms, localized_content (texto simples por localidade — não localized_properties), localized_title, localized_subtitle, banner, icon, categories, journey_uuid, custom_data, is_v2, created, updated. Todos os outros campos do Objeto Presetlocalized_properties, platform_properties, deeplink, richmedia, url, etc. — são omitidos, mesmo que definidos no preset.

CampoTipoDescrição
presetsarray de objetosA página atual de presets, na forma reduzida descrita acima.
pageintegerO índice da página retornada.
per_pageintegerO tamanho da página usado para esta resposta.
totalintegerNúmero total de presets que correspondem aos filtros, em todas as páginas.
Exemplo de resposta
Anchor link to
{
"presets": [
{ "name": "20% de desconto", "code": "AAAAA-BBBBB", "platforms": { "1": true, "3": true }, "categories": ["promo"] }
],
"page": 0,
"per_page": 100,
"total": 1
}

Retorna um único preset de push pelo seu código, com todos os campos do Objeto Preset preenchidos.

GET /api/presets/{code}

Parâmetros de caminho

Anchor link to
ParâmetroTipoDescrição
codestringO código do preset.

Retorna { "preset": { ... } }, o Objeto Preset completo.

Sobrescreve um preset de push existente por código com os campos fornecidos.

PUT /api/presets/{code}

Parâmetros de caminho

Anchor link to
ParâmetroTipoDescrição
codestringO código do preset a ser sobrescrito.

Corpo da requisição

Anchor link to

Mesmos campos de Criar (menos application), mais o restante dos campos do Objeto Preset. sendType é aceito, mas ignorado — o canal de um preset não pode ser alterado após a criação.

Um objeto vazio em caso de sucesso: {}.

UpdatePartial

Anchor link to

Atualiza apenas os campos fornecidos de um preset de push existente por código, deixando os campos não definidos inalterados.

PUT /api/presets/{code}:partial

Parâmetros de caminho

Anchor link to
ParâmetroTipoDescrição
codestringO código do preset a ser corrigido.

Corpo da requisição

Anchor link to

Mesmos campos de Atualizar, menos application. Ao contrário de Update, todos os campos aqui — incluindo localizedProperties, platformProperties, categories e o restante do grupo de propriedades de conteúdo listado no aviso de Atualizar — permanecem inalterados quando omitidos e só são alterados quando você os envia (um campo de mapa/array que você envia ainda substitui totalmente o valor existente para esse campo, apenas não afeta nada que você não incluiu). sendType também é aceito, mas ignorado.

Exemplo de requisição
Anchor link to
{
"sendRate": 500,
"cappingCount": 3,
"cappingDays": 7
}

Também um objeto vazio — veja o aviso acima.

Duplica um preset de push existente, com um novo nome, no mesmo aplicativo.

POST /api/presets/{code}:clone

Corpo da requisição

Anchor link to
ParâmetroTipoObrigatórioDescrição
codestringSimCódigo do preset de origem a ser duplicado.
namestringSimNome para o novo preset.
Exemplo de requisição
Anchor link to
{ "code": "AAAAA-BBBBB", "name": "20% de desconto (cópia)" }

Retorna { "preset": { ... } }, o novo Objeto Preset.

Exclui permanentemente um preset de push por código.

DELETE /api/presets/{code}

Parâmetros de caminho

Anchor link to
ParâmetroTipoDescrição
codestringO código do preset a ser excluído.

Um objeto vazio em caso de sucesso: {}.

Referência de objeto

Anchor link to

Os nomes dos campos abaixo correspondem ao que Get, Create, Update e Clone realmente retornam — nomes de campo do proto em snake_case (veja Convenções). A forma lowerCamelCase usada nos exemplos de requisição acima funciona da mesma maneira na entrada.

Objeto Preset

Anchor link to

Identidade

Anchor link to
CampoTipoDescrição
codestringGerado em Create. Identifica este preset em todos os outros lugares da API.
namestringNome do preset.
send_typestringCanal do preset (por exemplo, push).
is_v2booleantrue para presets criados ou migrados para o modelo de conteúdo v2.
systembooleanMarca o preset como um preset de sistema/interno.
hiddenbooleanOculta o preset dos resultados de List (envie showHidden: true para incluí-lo).
createdstring (RFC 3339)Timestamp de criação.
updatedstring (RFC 3339)Timestamp da última atualização.

Direcionamento e conteúdo

Anchor link to
CampoTipoDescrição
platformsmap<string, boolean>Quais plataformas o preset visa, chaveado por código de tipo de dispositivo (ex. "1" para iOS).
localized_propertiesmap<string, object>Localidade → conteúdo rico por plataforma. Mesma forma que LocalizedContent no payload Notify — uma entrada por bloco de plataforma (ios, android, etc.). Esta é a principal maneira de definir conteúdo de push específico da plataforma.
localized_title / localized_subtitle / localized_contentmap<string, string>Localidade → texto simples. Uma alternativa mais simples a localized_properties para título, subtítulo e corpo quando você não precisa de substituições por plataforma.
platform_propertiesmap<string, object>Substituições legadas por plataforma, chaveadas pelo nome enum da plataforma (IOS, ANDROID, BAIDU_ANDROID, HUAWEI_ANDROID, OSX). Veja o objeto PlatformProperties abaixo.
open_actionOpenActionAção acionada quando o usuário abre a notificação, aplicada a todas as plataformas. Mutuamente exclusivo com open_actions — a resposta define exatamente um.
open_actionsmap<string, OpenAction>Substituição por plataforma de open_action, chaveada por código de tipo de dispositivo.
deeplinkstringCódigo de Deep Link.
deeplink_paramsmap<string, string>Parâmetros passados para o deep link.
richmediastringCódigo de Rich Media aberto pela notificação.
urlstringURL aberta pela notificação, se não estiver usando um deep link ou Rich Media.
CampoTipoDescrição
inbox_imagestringURL da imagem mostrada na entrada da Caixa de Entrada de Mensagens.
inbox_iconstringURL do ícone mostrado na entrada da Caixa de Entrada de Mensagens.
inbox_daysintegerDias que a entrada permanece na Caixa de Entrada de Mensagens.
inbox_datestring (RFC 3339)Data de expiração explícita para a entrada da Caixa de Entrada de Mensagens, como alternativa a inbox_days.

Organização e metadados

Anchor link to
CampoTipoDescrição
categoriesarray de stringsNomes de categoria com os quais o preset é marcado.
campaign_codestringCódigo de campanha ao qual este preset é atribuído.
filter_codestringCódigo de Segmento / Filtro que este preset visa por padrão.
geo_zonesstringDirecionamento de Geozone, se o preset for acionado por geolocalização.
journey_uuidstringUUID da Customer Journey que possui este preset, se foi criado a partir de um ponto de Envio de push de uma journey.
custom_dataobjectJSON de forma livre encaminhado para o SDK do cliente como o parâmetro u.
bannerstringURL da imagem de big-picture / anexo.
iconstringURL do ícone de notificação personalizado.

Limites de entrega

Anchor link to
CampoTipoDescrição
send_rateintegerLimitação para envios usando este preset, em mensagens/segundo — o equivalente em nível de preset do SendRate do Notify.
capping_count / capping_daysintegerLimite de frequência por usuário para este preset — o equivalente em nível de preset do count / days do FrequencyCapping do Notify.
CampoTipoDescrição
notification_sent_urlstringURL de callback solicitada quando uma notificação usando este preset é enviada.
notification_delivered_urlstringURL de callback solicitada quando uma notificação usando este preset é entregue.
notification_click_urlstringURL de callback solicitada quando uma notificação usando este preset é clicada.

Campos legados

Anchor link to

Estes são herdados do modelo de preset v1. Eles são preenchidos para compatibilidade com o Painel de Controle, em vez de para novas integrações.

CampoTipoDescrição
remote_pagestringReferência de página remota legada.
wns_contentstringJSON de modelo de toast do Windows legado, como aceito pelos métodos v1 createPreset/getPreset.
original_urlstringO valor pré-encurtamento de url, quando url foi substituído por um link encurtado.
ios_silent / android_silent / baidu_android_silent / huawei_android_silentbooleanFlags de push silencioso (apenas dados) por plataforma.

Objeto PlatformProperties

Anchor link to

Campos disponíveis em cada entrada de platform_properties (IOS, ANDROID, BAIDU_ANDROID, HUAWEI_ANDROID, OSX):

CampoTipoDescrição
badgestringSubstituição da contagem do badge.
soundstringNome do arquivo de som.
sound_offbooleanSilenciar o som da notificação.
prioritystringPrioridade na bandeja (apenas Android/Baidu/Huawei).
delivery_prioritystringPrioridade de entrega NORMAL ou HIGH (apenas Android/Baidu/Huawei).
ios_interruption_levelstringpassive, active, time-sensitive ou critical (apenas iOS).

Relacionados

Anchor link to