Отправить запрос HTTP API к Yandex Cloud Notification Service
HTTP API сервиса совместим с Amazon SNS API
Все поддерживаемые действия описаны в Справочнике API.
Чтобы начать работу с HTTP API с помощью curl:
- Подготовьте облако к работе.
- Получите данные для аутентификации.
- Создайте канал уведомлений.
- Получите список каналов.
- Создайте эндпоинт.
- Отправьте уведомление.
Подготовьте облако к работе
Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:
- Перейдите в консоль управления
, затем войдите в Yandex Cloud или зарегистрируйтесь. - На странице Yandex Cloud Billing
убедитесь, что у вас подключен платежный аккаунт, и он находится в статусеACTIVE
илиTRIAL_ACTIVE
. Если платежного аккаунта нет, создайте его и привяжите к нему облако.
Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака
Подробнее об облаках и каталогах.
Получите данные для аутентификации
Для аутентификации в API используются статический ключ доступа или IAM-токен.
Примечание
Запросы API к Cloud Notification Service со статическим ключом должны быть подписаны по алгоритму AWS Signature V4
Как получить IAM-токен, см. в инструкциях:
- Получение IAM-токена для аккаунта на Яндексе
- Получение IAM-токена для федеративного аккаунта
- Получение IAM-токена для сервисного аккаунта
Как получить статический ключ доступа
Для аутентификации в Cloud Notification Service используется статический ключ доступа. Этот ключ выпускается на сервисный аккаунт, и все действия выполняются от имени этого сервисного аккаунта.
Чтобы получить статический ключ доступа:
Чтобы выполнять запросы API, у пользователя или сервисного аккаунта должна быть минимальная роль editor
на каталог.
Создайте канал уведомлений
export IAM_TOKEN=<IAM-токен>
curl \
--header "Content-Type: application/x-www-form-urlencoded; charset=utf-8" \
--header "Authorization: Bearer ${IAM_TOKEN}" \
--data-urlencode "Action=CreatePlatformApplication" \
--data-urlencode "ResponseFormat=JSON" \
--data-urlencode "FolderId=<идентификатор_каталога>" \
--data-urlencode "Name=<имя_канала>" \
--data-urlencode "Platform=GCM" \
--data-urlencode "Attributes.entry.1.key=PlatformCredential" \
--data-urlencode "Attributes.entry.1.value=<API-ключ_FCM>"
"https://notifications.yandexcloud.net/"
Где:
IAM_TOKEN
— IAM-токен.Action
— тип операции.ResponseFormat
— формат ответа: JSON или XML.FolderId
— идентификатор каталога.Name
— имя канала уведомлений, задается пользователем. Должно быть уникальным в облаке. Может содержать строчные и заглавные буквы латинского алфавита, цифры, подчеркивания, дефисы и точки. Допустимая длина — от 1 до 256 символов. Рекомендуется для каналов APNs указывать в имени идентификатор приложения (Bundle ID), для FCM и HMS — полное название пакета приложения (Package name).Platform
— тип мобильной платформы:APNS
иAPNS_SANDBOX
— Apple Push Notification service (APNs). Для тестирования приложения используйтеAPNS_SANDBOX
.GCM
— Firebase Cloud Messaging (FCM).HMS
— Huawei Mobile Services (HMS).
Attributes.entry.N.key
— ключи атрибутов аутентификации на мобильной платформе. Значения зависят от типа платформы:-
APNs:
- Аутентификация с токеном:
PlatformPrincipal
— токен в формате.p8
.PlatformCredential
— идентификатор токена.ApplePlatformTeamID
— идентификатор разработчика.ApplePlatformBundleID
— идентификатор приложения (Bundle ID).
- Аутентификация с сертификатом:
PlatformPrincipal
— SSL-сертификат в формате.p12
.PlatformCredential
— закрытый ключ сертификата.
Аутентификация с токеном является предпочтительной, как более современная.
- Аутентификация с токеном:
-
FCM:
PlatformCredential
— ключ сервисного аккаунта Google Cloud в формате JSON для аутентификации с помощью HTTP v1 API или API-ключ (server key) для аутентификации с помощью Legacy API.Версия HTTP v1 API является предпочтительной, так как с июня 2024 года Legacy API не будет поддерживаться FCM
. -
HMS:
PlatformPrincipal
— идентификатор ключа.PlatformCredential
— API-ключ.
-
Attributes.entry.N.value
— значения атрибутов аутентификации на мобильной платформе.
В результате вы получите идентификатор (ARN) канала уведомлений.
Подробнее см. на странице Действие CreatePlatformApplication.
Получите список каналов
export IAM_TOKEN=<IAM-токен>
curl \
--header "Content-Type: application/x-www-form-urlencoded; charset=utf-8" \
--header "Authorization: Bearer ${IAM_TOKEN}" \
--data-urlencode "Action=ListPlatformApplications" \
--data-urlencode "ResponseFormat=JSON" \
--data-urlencode "FolderId=<идентификатор_каталога>" \
"https://notifications.yandexcloud.net/"
Где:
IAM_TOKEN
— IAM-токен.Action
— тип операции.ResponseFormat
— формат ответа: JSON или XML.FolderId
— идентификатор каталога.
Подробнее см. на странице Действие ListPlatformApplications.
Создайте эндпоинт
export IAM_TOKEN=<IAM-токен>
curl \
--header "Content-Type: application/x-www-form-urlencoded; charset=utf-8" \
--header "Authorization: Bearer ${IAM_TOKEN}" \
--data-urlencode "Action=CreatePlatformEndpoint" \
--data-urlencode "ResponseFormat=JSON" \
--data-urlencode "PlatformApplicationArn=<ARN_канала_уведомлений>" \
--data-urlencode "Token=<Push-токен>" \
"https://notifications.yandexcloud.net/"
Где:
IAM_TOKEN
— IAM-токен.Action
— тип операции.ResponseFormat
— формат ответа: JSON или XML.PlatformApplicationArn
— идентификатор (ARN) канала уведомлений.Token
— уникальный Push-токен приложения на устройстве пользователя.
В результате вы получите идентификатор (ARN) мобильного эндпоинта.
Подробнее см. на странице Действие CreatePlatformEndpoint.
Отправьте уведомление
Явные уведомления (Bright Push)
export IAM_TOKEN=<IAM-токен>
curl \
--header "Content-Type: application/x-www-form-urlencoded; charset=utf-8" \
--header "Authorization: Bearer ${IAM_TOKEN}" \
--data-urlencode "Action=Publish" \
--data-urlencode "ResponseFormat=JSON" \
--data-urlencode "TargetArn=<идентификатор_эндпоинта>" \
--data-urlencode "Message={"default": "<текст_уведомления>", "GCM": "{ \"notification\": { \"body\": \"<текст_уведомления>\"} }" }" \
--data-urlencode "MessageStructure=json" \
"https://notifications.yandexcloud.net/"
Где:
IAM_TOKEN
— IAM-токен.Action
— тип операции.ResponseFormat
— формат ответа: JSON или XML.TargetArn
— идентификатор (ARN) мобильного эндпоинта.Message
— сообщение.MessageStructure
— формат сообщения.
Тихие уведомления (Silent Push)
export IAM_TOKEN=<IAM-токен>
curl \
--header "Content-Type: application/x-www-form-urlencoded; charset=utf-8" \
--header "Authorization: Bearer ${IAM_TOKEN}" \
--data-urlencode "Action=Publish" \
--data-urlencode "ResponseFormat=JSON" \
--data-urlencode "TargetArn=<идентификатор_эндпоинта>" \
--data-urlencode "Message={\"data\": { \"key\": \"value\" } }" \
--data-urlencode "MessageStructure=json" \
"https://notifications.yandexcloud.net/"
Где:
IAM_TOKEN
— IAM-токен.Action
— тип операции.ResponseFormat
— формат ответа: JSON или XML.TargetArn
— идентификатор (ARN) мобильного эндпоинта.Message
— сообщение.MessageStructure
— формат сообщения.
Подробнее см. на странице Действие Publish.