API Пресетов
Пресет push-уведомлений — это шаблон push-уведомления для многократного использования — тот же объект, который вы создаете в редакторе push-уведомлений в Панели управления. Этот API управляет только пресетами push-уведомлений; пресеты для SMS, WhatsApp, Kakao, LINE и Viber имеют свои собственные специализированные сервисы для пресетов, которые здесь не рассматриваются.
Используйте code пресета, чтобы отправить его через Notify (в полезной нагрузке preset) или в элементе Send push в Customer Journey.
Базовый URL
Anchor link tohttps://rpc-api.svc-nue.pushwoosh.comВсе эндпоинты обслуживаются по HTTPS. Запросы и ответы используют application/json, если не указано иное.
Аутентификация
Anchor link toКаждый запрос должен содержать заголовок Authorization с вашим токеном Server API:
Authorization: Api YOUR_API_TOKENСоглашения
Anchor link to- Именование полей: тела запросов и параметры пути/запроса принимают
lowerCamelCase(например,sendType,localizedProperties,searchByName) — сервер обрабатывает любой регистр. Ответы всегда маршалируются с использованием имен полей proto вsnake_case(localized_properties,platform_properties,per_pageи т.д.). Примеры ответов и описание объекта Preset ниже используют этот регистр. code: каждый ответ с пресетом содержит его собственный код, сгенерированный приCreate. Передавайте этот код вGet,Update,UpdatePartial,Delete,Cloneи в вышеупомянутые API для сообщений/journey.- Ключи платформ: карты
platformsиopen_actionsиспользуют в качестве ключей числовые коды типов устройств (1для iOS,3для Android и т.д.).platform_propertiesвместо этого использует в качестве ключей имена enum платформ (IOS,ANDROID,BAIDU_ANDROID,HUAWEI_ANDROID,OSX— единственные пять платформ, которые он охватывает). - Незаполненные поля: ответы
Get,CreateиCloneвключают все поля объекта Preset, даже если они пустые или имеют нулевое значение.Listвозвращает сокращенный набор полей — см. List ниже.UpdateиUpdatePartialвообще не возвращают поля пресета — см. предупреждение в их разделах.
Ответы об ошибках
Anchor link to| HTTP-статус | Значение |
|---|---|
400 Bad Request | Неверный аргумент — обязательное поле отсутствует или имеет неверный формат, или не выполнено предварительное условие (например, клонирование без name). |
401 Unauthorized | Отсутствует или недействителен заголовок Authorization. |
403 Forbidden | Приложение или пресет не принадлежат аккаунту вызывающей стороны. |
404 Not Found | Пресет или приложение не найдены. |
500 Internal Server Error | Неожиданный сбой на стороне сервера. |
Delete для пресета, который все еще используется элементом Send push в запущенном или приостановленном journey, также возвращает 400 Bad Request (FailedPrecondition на уровне протокола), а не 409. Сначала удалите пресет из journey.
Эндпоинты
Anchor link to| Метод | Путь | Описание |
|---|---|---|
POST | /api/presets | Создать новый пресет push-уведомлений |
GET | /api/presets | Получить список пресетов push-уведомлений приложения |
GET | /api/presets/{code} | Получить один пресет push-уведомлений |
PUT | /api/presets/{code} | Обновить пресет push-уведомлений (полная перезапись) |
PUT | /api/presets/{code}:partial | Обновить пресет push-уведомлений (частично) |
POST | /api/presets/{code}:clone | Клонировать пресет push-уведомлений |
DELETE | /api/presets/{code} | Удалить пресет push-уведомлений |
Create
Anchor link toСоздает новый пресет push-уведомлений в приложении и возвращает его со сгенерированным кодом.
POST /api/presets
Тело запроса
Anchor link to| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
application | string | Да | Код приложения, в котором нужно создать пресет. |
name | string | Да | Название пресета. |
sendType | string | Нет | Канал пресета (например, push). |
isV2 | boolean | Нет | Фиксирует флаг происхождения пресета. Опустите, чтобы по умолчанию было true (v2); установите false только при воспроизведении устаревшего пресета v1. |
Все остальные поля — локализованный контент, платформы, deep link, inbox, категории и т.д. — являются общими с Update и описаны один раз в справочнике по объекту Preset ниже.
Пример запроса
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"]}Ответ
Anchor link toВозвращает { "preset": { ... } }, созданный объект Preset.
List
Anchor link toВозвращает список пресетов push-уведомлений приложения — сокращенный набор полей, а не полный объект — с пагинацией, сортировкой и фильтрацией по названию или категории.
GET /api/presets
Параметры запроса
Anchor link to| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
application | string | Да | Код приложения, для которого нужно получить список пресетов. |
orderBy | string | Нет | NAME (по умолчанию), CREATED или UPDATED. |
orderDirection | string | Нет | ASC (по умолчанию) или DESC. |
page | integer | Нет | Индекс страницы, начиная с нуля. |
perPage | integer | Нет | Размер страницы. По умолчанию 100, если опущено или равно 0. |
searchByName | string | Нет | Поиск подстроки без учета регистра в названии или коде пресета (ILIKE %value%). |
searchByCategory | array of strings | Нет | Повторите параметр для фильтрации по нескольким категориям, например, ?searchByCategory=promo&searchByCategory=lifecycle. |
showHidden | boolean | Нет | Включить пресеты, помеченные как hidden. |
Ответ
Anchor link toКаждый элемент содержит только: name, code, platforms, localized_content (простой текст для каждой локали — не localized_properties), localized_title, localized_subtitle, banner, icon, categories, journey_uuid, custom_data, is_v2, created, updated. Все остальные поля объекта Preset — localized_properties, platform_properties, deeplink, richmedia, url и т.д. — опускаются, даже если они установлены в пресете.
| Поле | Тип | Описание |
|---|---|---|
presets | array of objects | Текущая страница пресетов в сокращенном формате, описанном выше. |
page | integer | Возвращенный индекс страницы. |
per_page | integer | Размер страницы, использованный для этого ответа. |
total | integer | Общее количество пресетов, соответствующих фильтрам, на всех страницах. |
Пример ответа
Anchor link to{ "presets": [ { "name": "20% discount", "code": "AAAAA-BBBBB", "platforms": { "1": true, "3": true }, "categories": ["promo"] } ], "page": 0, "per_page": 100, "total": 1}Возвращает один пресет push-уведомлений по его коду со всеми заполненными полями объекта Preset.
GET /api/presets/{code}
Параметры пути
Anchor link to| Параметр | Тип | Описание |
|---|---|---|
code | string | Код пресета. |
Ответ
Anchor link toВозвращает { "preset": { ... } }, полный объект Preset.
Update
Anchor link toПерезаписывает существующий пресет push-уведомлений по коду предоставленными полями.
PUT /api/presets/{code}
Параметры пути
Anchor link to| Параметр | Тип | Описание |
|---|---|---|
code | string | Код пресета для перезаписи. |
Тело запроса
Anchor link toТе же поля, что и в Create (минус application), плюс остальные поля объекта Preset. sendType принимается, но игнорируется — канал пресета нельзя изменить после создания.
Ответ
Anchor link toПустой объект в случае успеха: {}.
UpdatePartial
Anchor link toОбновляет только предоставленные поля существующего пресета push-уведомлений по коду, оставляя неустановленные поля без изменений.
PUT /api/presets/{code}:partial
Параметры пути
Anchor link to| Параметр | Тип | Описание |
|---|---|---|
code | string | Код пресета для частичного обновления. |
Тело запроса
Anchor link toТе же поля, что и в Update, минус application. В отличие от Update, здесь каждое поле — включая localizedProperties, platformProperties, categories и остальные поля группы свойств контента, перечисленные в предупреждении Update — остается без изменений, если его опустить, и затрагивается только при отправке (поле типа map/array, которое вы отправляете, все равно полностью заменяет существующее значение для этого поля, но не влияет на то, что вы не включили). sendType также принимается, но игнорируется.
Пример запроса
Anchor link to{ "sendRate": 500, "cappingCount": 3, "cappingDays": 7}Ответ
Anchor link toТакже пустой объект — см. предупреждение выше.
Clone
Anchor link toДублирует существующий пресет push-уведомлений под новым именем в том же приложении.
POST /api/presets/{code}:clone
Тело запроса
Anchor link to| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
code | string | Да | Код исходного пресета для дублирования. |
name | string | Да | Название для нового пресета. |
Пример запроса
Anchor link to{ "code": "AAAAA-BBBBB", "name": "20% discount (copy)" }Ответ
Anchor link toВозвращает { "preset": { ... } }, новый объект Preset.
Delete
Anchor link toБезвозвратно удаляет пресет push-уведомлений по коду.
DELETE /api/presets/{code}
Параметры пути
Anchor link to| Параметр | Тип | Описание |
|---|---|---|
code | string | Код пресета для удаления. |
Ответ
Anchor link toПустой объект в случае успеха: {}.
Справочник по объектам
Anchor link toИмена полей ниже соответствуют тому, что фактически возвращают Get, Create, Update и Clone — имена полей proto в snake_case (см. Соглашения). Форма lowerCamelCase, используемая в примерах запросов выше, работает так же на входе.
Объект Preset
Anchor link toИдентификация
Anchor link to| Поле | Тип | Описание |
|---|---|---|
code | string | Генерируется при Create. Идентифицирует этот пресет во всех остальных частях API. |
name | string | Название пресета. |
send_type | string | Канал пресета (например, push). |
is_v2 | boolean | true для пресетов, созданных или перенесенных на модель контента v2. |
system | boolean | Помечает пресет как системный/внутренний. |
hidden | boolean | Скрывает пресет из результатов List (отправьте showHidden: true, чтобы включить его). |
created | string (RFC 3339) | Временная метка создания. |
updated | string (RFC 3339) | Временная метка последнего обновления. |
Таргетинг и контент
Anchor link to| Поле | Тип | Описание |
|---|---|---|
platforms | map<string, boolean> | Платформы, на которые нацелен пресет, с ключами в виде кодов типов устройств (например, "1" для iOS). |
localized_properties | map<string, object> | Локаль → расширенный контент для каждой платформы. Та же структура, что и у LocalizedContent в полезной нагрузке Notify — одна запись на блок платформы (ios, android и т.д.). Это основной способ установки специфичного для платформы контента push-уведомлений. |
localized_title / localized_subtitle / localized_content | map<string, string> | Локаль → простой текст. Более простая альтернатива localized_properties для заголовка, подзаголовка и тела, когда вам не нужны переопределения для каждой платформы. |
platform_properties | map<string, object> | Устаревшие переопределения для каждой платформы, с ключами в виде имен enum платформ (IOS, ANDROID, BAIDU_ANDROID, HUAWEI_ANDROID, OSX). См. объект PlatformProperties ниже. |
open_action | OpenAction | Действие, вызываемое при открытии уведомления пользователем, применяется ко всем платформам. Взаимоисключающее с open_actions — ответ устанавливает ровно одно из них. |
open_actions | map<string, OpenAction> | Переопределение open_action для каждой платформы, с ключами в виде кодов типов устройств. |
deeplink | string | Код Deep Link. |
deeplink_params | map<string, string> | Параметры, передаваемые в deep link. |
richmedia | string | Код Rich Media, открываемого уведомлением. |
url | string | URL, открываемый уведомлением, если не используется deep link или Rich Media. |
Inbox
Anchor link to| Поле | Тип | Описание |
|---|---|---|
inbox_image | string | URL изображения, отображаемого в записи Message Inbox. |
inbox_icon | string | URL иконки, отображаемой в записи Message Inbox. |
inbox_days | integer | Количество дней, в течение которых запись остается в Message Inbox. |
inbox_date | string (RFC 3339) | Явная дата истечения срока действия для записи в Message Inbox, как альтернатива inbox_days. |
Организация и метаданные
Anchor link to| Поле | Тип | Описание |
|---|---|---|
categories | array of strings | Названия категорий, которыми помечен пресет. |
campaign_code | string | Код кампании, к которой относится этот пресет. |
filter_code | string | Код сегмента / фильтра, на который этот пресет нацелен по умолчанию. |
geo_zones | string | Таргетинг по геозонам, если пресет запускается по гео-триггеру. |
journey_uuid | string | UUID Customer Journey, которому принадлежит этот пресет, если он был создан из элемента Send push в journey. |
custom_data | object | Произвольный JSON, пересылаемый в клиентский SDK в качестве параметра u. |
banner | string | URL большого изображения / вложения. |
icon | string | URL пользовательской иконки уведомления. |
Ограничения доставки
Anchor link to| Поле | Тип | Описание |
|---|---|---|
send_rate | integer | Ограничение скорости для отправок с использованием этого пресета, в сообщениях/секунду — эквивалент SendRate из Notify на уровне пресета. |
capping_count / capping_days | integer | Ограничение частоты для каждого пользователя для этого пресета — эквивалент count / days из FrequencyCapping из Notify на уровне пресета. |
Вебхуки
Anchor link to| Поле | Тип | Описание |
|---|---|---|
notification_sent_url | string | URL обратного вызова, запрашиваемый при отправке уведомления с использованием этого пресета. |
notification_delivered_url | string | URL обратного вызова, запрашиваемый при доставке уведомления с использованием этого пресета. |
notification_click_url | string | URL обратного вызова, запрашиваемый при клике на уведомление с использованием этого пресета. |
Устаревшие поля
Anchor link toЭти поля перенесены из модели пресетов v1. Они заполняются для совместимости с Панелью управления, а не для новых интеграций.
| Поле | Тип | Описание |
|---|---|---|
remote_page | string | Устаревшая ссылка на удаленную страницу. |
wns_content | string | Устаревший JSON-шаблон для toast-уведомлений Windows, принимаемый методами createPreset/getPreset v1. |
original_url | string | Значение url до сокращения, когда url был заменен сокращенной ссылкой. |
ios_silent / android_silent / baidu_android_silent / huawei_android_silent | boolean | Флаги для silent (только данные) push-уведомлений для каждой платформы. |
Объект PlatformProperties
Anchor link toПоля, доступные в каждой записи platform_properties (IOS, ANDROID, BAIDU_ANDROID, HUAWEI_ANDROID, OSX):
| Поле | Тип | Описание |
|---|---|---|
badge | string | Переопределение числа на иконке приложения (badge). |
sound | string | Имя звукового файла. |
sound_off | boolean | Отключить звук уведомления. |
priority | string | Приоритет в трее (только для Android/Baidu/Huawei). |
delivery_priority | string | Приоритет доставки NORMAL или HIGH (только для Android/Baidu/Huawei). |
ios_interruption_level | string | passive, active, time-sensitive или critical (только для iOS). |