Как начать работать с Marketplace License Manager SaaS API
В этом разделе вы узнаете, как интегрировать SaaS-продукт c Yandex Cloud Marketplace License Manager SaaS API.
Схема взаимодействия с API
На схеме:
- Пользователь приобретает подписку на SaaS-продукт в Marketplace.
- Marketplace передает пользователю ссылку на SaaS-продукт. URL-параметр
token
в передаваемой ссылке содержит JWT-токен.
Адрес для перехода задается при создании версии продукта в Marketplace в поле Ссылка на лендинг. - Пользователь переходит по ссылке, в результате SaaS-продукту передается JWT-токен.
- Первый вариант аутентификации: у пользователя уже есть учетная запись в SaaS-продукте. В этом случае он вводит свои учетные данные и входит в систему.
- Второй вариант аутентификации: у пользователя нет учетной записи в SaaS-продукте. В этом случае он создает новую учетную запись и входит в систему.
- SaaS-продукт отправляет в Marketplace запрос
LockService.Ensure
, содержащий полученный от пользователя токен и идентификатор ресурса в SaaS-продукте. - В результате Marketplace привязывает подписку к ресурсу и возвращает SaaS-продукту привязку (объект
Lock
). - SaaS-продукт сохраняет полученную привязку и начинает предоставлять доступ к ресурсу.
- SaaS-продукт периодически запрашивает привязку в Marketplace.
- Marketplace возвращает SaaS-продукту привязку до тех пор, пока подписка активна.
Перед началом работы
Чтобы начать работать c Marketplace License Manager SaaS API:
- Станьте партнером Marketplace и зарегистрируйте аккаунт юридического лица.
- В кабинете партнера создайте продукт и тариф с типом Subscription.
- Создайте сервисный аккаунт, от имени которого вы будете аутентифицироваться в API.
- Назначьте сервисному аккаунту роль
license-manager.saasSubscriptionSupervisor
на профиль партнера и на ваш продукт. - Получите IAM-токен для сервисного аккаунта, от имени которого вы будете аутентифицироваться в License Manager API.
Чтобы воспользоваться примерами, установите утилиты cURL
Настройте интеграцию с API
Чтобы реализовать бизнес-логику продукта, самостоятельно доработайте код вашего приложения, настроив интеграцию с License Manager SaaS API для проверки статуса и типа подписок.
Привяжите подписку к ресурсу
Чтобы привязать подписку к ресурсу, воспользуйтесь методом REST API Ensure для ресурса Lock или вызовом gRPC API LockService/Ensure:
curl \
--request POST \
--url 'https://marketplace.api.cloud.yandex.net/marketplace/license-manager/saas/v1/locks/ensure' \
--header 'Authorization: Bearer <IAM-токен>' \
--header 'Content-Type: application/json' \
--data '{
"instanceToken": "<JWT-токен>",
"resourceId": "<идентификатор_ресурса>"
}'
Где:
instanceToken
— JWT-токен, полученный от пользователя.resourceId
— идентификатор ресурса в SaaS-продукте.
grpcurl \
-rpc-header "Authorization: Bearer <IAM-токен>" \
-d '{
"instanceToken": "<JWT-токен>",
"resourceId": "<идентификатор_ресурса>"
}' \
marketplace.api.cloud.yandex.net:443 yandex.cloud.marketplace.licensemanager.saas.v1.LockService/Ensure
Где:
instanceToken
— JWT-токен, полученный от пользователя.resourceId
— идентификатор ресурса в SaaS-продукте.
В результате:
- Marketplace привяжет подписку к ресурсу и вернет привязку (объект
Lock
). - SaaS-продукт сохранит привязку и начнет предоставлять доступ к ресурсу.
Получите информацию о привязке
Чтобы получить информацию о привязке, воспользуйтесь методом REST API Get для ресурса Lock или вызовом gRPC API LockService/get:
curl \
--request GET \
--url 'https://marketplace.api.cloud.yandex.net/marketplace/license-manager/saas/v1/locks/<идентификатор_привязки>' \
--header 'Authorization: Bearer <IAM-токен>' \
--header 'Content-Type: application/json'
Где <идентификатор_привязки>
— значение поля lockId
, полученное на предыдущем шаге.
grpcurl \
-rpc-header "Authorization: Bearer <IAM-токен>" \
-d '{
"lockId": "<идентификатор_привязки>"
}' \
marketplace.api.cloud.yandex.net:443 yandex.cloud.marketplace.licensemanager.saas.v1.LockService/Get
Где lockId
— значение поля lockId
, полученное на предыдущем шаге.
В результате Marketplace вернет привязку (объект Lock
), если подписка активна.
Отследите продление подписки
Чтобы отслеживать продление подписки, необходимо контролировать изменение значения поля end_time
в экземпляре подписки.
Чтобы получить данные об экземпляре подписки, воспользуйтесь методом REST API Get для ресурса Instance или вызовом gRPC API InstanceService/Get:
curl \
--request GET \
--url 'https://marketplace.api.cloud.yandex.net/marketplace/license-manager/saas/v1/instances/<идентификатор_экземпляра>' \
--header 'Authorization: Bearer <IAM-токен>'
Где <идентификатор_инстанса>
— идентификатор экземпляра подписки.
grpcurl \
-rpc-header "Authorization: Bearer <IAM-токен>" \
-d '{
"instanceId": "<идентификатор_экземпляра>"
}' \
marketplace.api.cloud.yandex.net:443 yandex.cloud.marketplace.licensemanager.saas.v1.InstanceService/Get
Где instanceId
— идентификатор экземпляра подписки.