Перейти к содержанию

API Пресетов

Пресет push-уведомлений — это шаблон push-уведомления для многократного использования — тот же объект, который вы создаете в редакторе push-уведомлений в Панели управления. Этот API управляет только пресетами push-уведомлений; пресеты для SMS, WhatsApp, Kakao, LINE и Viber имеют свои собственные специализированные сервисы для пресетов, которые здесь не рассматриваются.

Используйте code пресета, чтобы отправить его через Notify (в полезной нагрузке preset) или в элементе Send push в Customer Journey.

Базовый URL

Anchor link to
https://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-уведомлений

Создает новый пресет push-уведомлений в приложении и возвращает его со сгенерированным кодом.

POST /api/presets

Тело запроса

Anchor link to
ПараметрТипОбязательныйОписание
applicationstringДаКод приложения, в котором нужно создать пресет.
namestringДаНазвание пресета.
sendTypestringНетКанал пресета (например, push).
isV2booleanНетФиксирует флаг происхождения пресета. Опустите, чтобы по умолчанию было 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.

Возвращает список пресетов push-уведомлений приложения — сокращенный набор полей, а не полный объект — с пагинацией, сортировкой и фильтрацией по названию или категории.

GET /api/presets

Параметры запроса

Anchor link to
ПараметрТипОбязательныйОписание
applicationstringДаКод приложения, для которого нужно получить список пресетов.
orderBystringНетNAME (по умолчанию), CREATED или UPDATED.
orderDirectionstringНетASC (по умолчанию) или DESC.
pageintegerНетИндекс страницы, начиная с нуля.
perPageintegerНетРазмер страницы. По умолчанию 100, если опущено или равно 0.
searchByNamestringНетПоиск подстроки без учета регистра в названии или коде пресета (ILIKE %value%).
searchByCategoryarray of stringsНетПовторите параметр для фильтрации по нескольким категориям, например, ?searchByCategory=promo&searchByCategory=lifecycle.
showHiddenbooleanНетВключить пресеты, помеченные как 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. Все остальные поля объекта Presetlocalized_properties, platform_properties, deeplink, richmedia, url и т.д. — опускаются, даже если они установлены в пресете.

ПолеТипОписание
presetsarray of objectsТекущая страница пресетов в сокращенном формате, описанном выше.
pageintegerВозвращенный индекс страницы.
per_pageintegerРазмер страницы, использованный для этого ответа.
totalintegerОбщее количество пресетов, соответствующих фильтрам, на всех страницах.
Пример ответа
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
ПараметрТипОписание
codestringКод пресета.

Ответ

Anchor link to

Возвращает { "preset": { ... } }, полный объект Preset.

Перезаписывает существующий пресет push-уведомлений по коду предоставленными полями.

PUT /api/presets/{code}

Параметры пути

Anchor link to
ПараметрТипОписание
codestringКод пресета для перезаписи.

Тело запроса

Anchor link to

Те же поля, что и в Create (минус application), плюс остальные поля объекта Preset. sendType принимается, но игнорируется — канал пресета нельзя изменить после создания.

Ответ

Anchor link to

Пустой объект в случае успеха: {}.

UpdatePartial

Anchor link to

Обновляет только предоставленные поля существующего пресета push-уведомлений по коду, оставляя неустановленные поля без изменений.

PUT /api/presets/{code}:partial

Параметры пути

Anchor link to
ПараметрТипОписание
codestringКод пресета для частичного обновления.

Тело запроса

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

Также пустой объект — см. предупреждение выше.

Дублирует существующий пресет push-уведомлений под новым именем в том же приложении.

POST /api/presets/{code}:clone

Тело запроса

Anchor link to
ПараметрТипОбязательныйОписание
codestringДаКод исходного пресета для дублирования.
namestringДаНазвание для нового пресета.
Пример запроса
Anchor link to
{ "code": "AAAAA-BBBBB", "name": "20% discount (copy)" }

Ответ

Anchor link to

Возвращает { "preset": { ... } }, новый объект Preset.

Безвозвратно удаляет пресет push-уведомлений по коду.

DELETE /api/presets/{code}

Параметры пути

Anchor link to
ПараметрТипОписание
codestringКод пресета для удаления.

Ответ

Anchor link to

Пустой объект в случае успеха: {}.

Справочник по объектам

Anchor link to

Имена полей ниже соответствуют тому, что фактически возвращают Get, Create, Update и Clone — имена полей proto в snake_case (см. Соглашения). Форма lowerCamelCase, используемая в примерах запросов выше, работает так же на входе.

Объект Preset

Anchor link to

Идентификация

Anchor link to
ПолеТипОписание
codestringГенерируется при Create. Идентифицирует этот пресет во всех остальных частях API.
namestringНазвание пресета.
send_typestringКанал пресета (например, push).
is_v2booleantrue для пресетов, созданных или перенесенных на модель контента v2.
systembooleanПомечает пресет как системный/внутренний.
hiddenbooleanСкрывает пресет из результатов List (отправьте showHidden: true, чтобы включить его).
createdstring (RFC 3339)Временная метка создания.
updatedstring (RFC 3339)Временная метка последнего обновления.

Таргетинг и контент

Anchor link to
ПолеТипОписание
platformsmap<string, boolean>Платформы, на которые нацелен пресет, с ключами в виде кодов типов устройств (например, "1" для iOS).
localized_propertiesmap<string, object>Локаль → расширенный контент для каждой платформы. Та же структура, что и у LocalizedContent в полезной нагрузке Notify — одна запись на блок платформы (ios, android и т.д.). Это основной способ установки специфичного для платформы контента push-уведомлений.
localized_title / localized_subtitle / localized_contentmap<string, string>Локаль → простой текст. Более простая альтернатива localized_properties для заголовка, подзаголовка и тела, когда вам не нужны переопределения для каждой платформы.
platform_propertiesmap<string, object>Устаревшие переопределения для каждой платформы, с ключами в виде имен enum платформ (IOS, ANDROID, BAIDU_ANDROID, HUAWEI_ANDROID, OSX). См. объект PlatformProperties ниже.
open_actionOpenActionДействие, вызываемое при открытии уведомления пользователем, применяется ко всем платформам. Взаимоисключающее с open_actions — ответ устанавливает ровно одно из них.
open_actionsmap<string, OpenAction>Переопределение open_action для каждой платформы, с ключами в виде кодов типов устройств.
deeplinkstringКод Deep Link.
deeplink_paramsmap<string, string>Параметры, передаваемые в deep link.
richmediastringКод Rich Media, открываемого уведомлением.
urlstringURL, открываемый уведомлением, если не используется deep link или Rich Media.
ПолеТипОписание
inbox_imagestringURL изображения, отображаемого в записи Message Inbox.
inbox_iconstringURL иконки, отображаемой в записи Message Inbox.
inbox_daysintegerКоличество дней, в течение которых запись остается в Message Inbox.
inbox_datestring (RFC 3339)Явная дата истечения срока действия для записи в Message Inbox, как альтернатива inbox_days.

Организация и метаданные

Anchor link to
ПолеТипОписание
categoriesarray of stringsНазвания категорий, которыми помечен пресет.
campaign_codestringКод кампании, к которой относится этот пресет.
filter_codestringКод сегмента / фильтра, на который этот пресет нацелен по умолчанию.
geo_zonesstringТаргетинг по геозонам, если пресет запускается по гео-триггеру.
journey_uuidstringUUID Customer Journey, которому принадлежит этот пресет, если он был создан из элемента Send push в journey.
custom_dataobjectПроизвольный JSON, пересылаемый в клиентский SDK в качестве параметра u.
bannerstringURL большого изображения / вложения.
iconstringURL пользовательской иконки уведомления.

Ограничения доставки

Anchor link to
ПолеТипОписание
send_rateintegerОграничение скорости для отправок с использованием этого пресета, в сообщениях/секунду — эквивалент SendRate из Notify на уровне пресета.
capping_count / capping_daysintegerОграничение частоты для каждого пользователя для этого пресета — эквивалент count / days из FrequencyCapping из Notify на уровне пресета.

Вебхуки

Anchor link to
ПолеТипОписание
notification_sent_urlstringURL обратного вызова, запрашиваемый при отправке уведомления с использованием этого пресета.
notification_delivered_urlstringURL обратного вызова, запрашиваемый при доставке уведомления с использованием этого пресета.
notification_click_urlstringURL обратного вызова, запрашиваемый при клике на уведомление с использованием этого пресета.

Устаревшие поля

Anchor link to

Эти поля перенесены из модели пресетов v1. Они заполняются для совместимости с Панелью управления, а не для новых интеграций.

ПолеТипОписание
remote_pagestringУстаревшая ссылка на удаленную страницу.
wns_contentstringУстаревший JSON-шаблон для toast-уведомлений Windows, принимаемый методами createPreset/getPreset v1.
original_urlstringЗначение url до сокращения, когда url был заменен сокращенной ссылкой.
ios_silent / android_silent / baidu_android_silent / huawei_android_silentbooleanФлаги для silent (только данные) push-уведомлений для каждой платформы.

Объект PlatformProperties

Anchor link to

Поля, доступные в каждой записи platform_properties (IOS, ANDROID, BAIDU_ANDROID, HUAWEI_ANDROID, OSX):

ПолеТипОписание
badgestringПереопределение числа на иконке приложения (badge).
soundstringИмя звукового файла.
sound_offbooleanОтключить звук уведомления.
prioritystringПриоритет в трее (только для Android/Baidu/Huawei).
delivery_prioritystringПриоритет доставки NORMAL или HIGH (только для Android/Baidu/Huawei).
ios_interruption_levelstringpassive, active, time-sensitive или critical (только для iOS).

Связанные материалы

Anchor link to