Справочник команд Adapty Developer CLI
В этой статье перечислены команды Adapty CLI для настройки аккаунта — приложений, уровней доступа, продуктов, пейволов, флоу, плейсментов и сегментов — с их аргументами, флагами и допустимыми значениями. Для кампаний Apple Ads см. команды Ads Manager.
Настройку аутентификации и управление токенами см. в разделе Аутентификация.
Глобальные флаги
Эти флаги доступны для всех команд.
| Флаг | Описание |
|---|---|
--json | Вывод в формате JSON вместо форматированного текста |
--help | Показать справку по команде |
Все команды list также принимают флаги пагинации:
| Флаг | По умолчанию | Описание |
|---|---|---|
--page | 1 | Номер страницы |
--page-size | 20 | Элементов на странице (макс.: 100) |
Приложения
Управляйте приложениями в вашем аккаунте Adapty. Для настройки через дашборд см. App settings.
adapty apps list
Вывести список всех приложений в вашем аккаунте Adapty.
adapty apps list
Принимает флаги пагинации.
adapty apps get
Получить сведения о конкретном приложении.
adapty apps get <app-id>
| Аргумент | Описание |
|---|---|
app-id | ID приложения (UUID) |
adapty apps create
Создание нового приложения.
adapty apps create --title "My App" --platform ios --apple-bundle-id com.example.app
| Флаг | Обязательный | Описание |
|---|---|---|
--title | Да | Название приложения |
--platform | Да | Платформа: ios или android. Укажите оба: --platform ios --platform android |
--apple-bundle-id | Обязателен при --platform ios | Apple bundle ID |
--google-bundle-id | Обязателен при --platform android | Google bundle ID |
adapty apps update
Обновить существующее приложение.
adapty apps update <app-id> --title "New Name"
| Аргумент | Описание |
|---|---|
app-id | ID приложения (UUID) |
| Флаг | Описание |
|---|---|
--title | Новое название приложения |
--apple-bundle-id | Новый Apple bundle ID |
--google-bundle-id | Новый Google bundle ID |
Необходимо указать хотя бы один флаг. --platform нельзя изменить после создания.
Уровни доступа
adapty access-levels list
Список всех уровней доступа для приложения.
adapty access-levels list --app <app-id>
| Флаг | Обязательный | Описание |
|---|---|---|
--app | Да | ID приложения (UUID) |
Принимает флаги пагинации.
adapty access-levels get
Получить детали конкретного уровня доступа.
adapty access-levels get --app <app-id> <access-level-id>
| Аргумент | Описание |
|---|---|
access-level-id | ID уровня доступа (UUID) |
| Флаг | Обязательный | Описание |
|---|---|---|
--app | Да | ID приложения (UUID) |
adapty access-levels create
Создать новый уровень доступа.
adapty access-levels create --app <app-id> --sdk-id "pro" --title "Pro"
| Флаг | Обязательный | Описание |
|---|---|---|
--app | Да | ID приложения (UUID) |
--sdk-id | Да | Идентификатор, используемый в коде приложения для проверки доступа (например, "pro" или "premium") |
--title | Да | Отображаемое название в дашборде Adapty |
adapty access-levels update
Обновление существующего уровня доступа.
adapty access-levels update --app <app-id> <access-level-id> --title "Pro Access"
| Аргумент | Описание |
|---|---|
access-level-id | ID уровня доступа (UUID) |
| Флаг | Обязательный | Описание |
|---|---|---|
--app | Да | ID приложения (UUID) |
--title | Да | Новое отображаемое название |
--sdk-id нельзя изменить после создания.
Продукты
Список продуктов Adapty
Список всех продуктов приложения.
adapty products list --app <app-id>
| Флаг | Обязательный | Описание |
|---|---|---|
--app | Да | ID приложения (UUID) |
Принимает флаги пагинации.
adapty products get
Получить информацию о конкретном продукте.
adapty products get --app <app-id> <product-id>
| Аргумент | Описание |
|---|---|
product-id | ID продукта (UUID) |
| Флаг | Обязательный | Описание |
|---|---|---|
--app | Да | ID приложения (UUID) |
adapty products create
Создайте новый продукт.
Идентификаторы продукта и цены в сторе нельзя изменить после создания. Чтобы использовать другие идентификаторы стора, создайте новый продукт.
adapty products create --app <app-id> --title "Monthly" --access-level-id <access-level-id> --period monthly --ios-product-id com.example.monthly
| Флаг | Обязательный | Описание |
|---|---|---|
--app | Да | ID приложения (UUID) |
--title | Да | Название продукта |
--access-level-id | Да | ID уровня доступа (UUID), который открывает этот продукт |
--period | Да | Период подписки: weekly, monthly, two_months, trimonthly, semiannual, annual, lifetime |
--ios-product-id | Требуется хотя бы один стор | ID продукта из App Store Connect |
--android-product-id | Требуется хотя бы один стор | ID продукта из Google Play Console |
--android-base-plan-id | Обязателен вместе с --android-product-id, если не указан --period lifetime | ID базового плана из Google Play Console |
--stripe-product-id | Требуется хотя бы один стор | ID продукта из Stripe |
--stripe-price-id | Обязателен вместе с --stripe-product-id | ID цены из Stripe |
--paddle-product-id | Требуется хотя бы один стор | ID продукта из Paddle |
--paddle-price-id | Обязателен вместе с --paddle-product-id | ID цены из Paddle |
У каждого продукта должен быть хотя бы один стор: --ios-product-id, --android-product-id, --stripe-product-id или --paddle-product-id. Один продукт может содержать ID сразу для нескольких сторов.
Чтобы продавать продукт в вебе через Stripe или Paddle, сначала подключите платёжный провайдер к Adapty: см. Stripe и Paddle. Для каждого из этих сторов передайте ID продукта и ID цены вместе. Команда завершится с ошибкой, если передать только один из пары.
adapty products create --app <app-id> --title "Monthly" --access-level-id <access-level-id> --period monthly --stripe-product-id prod_xxx --stripe-price-id price_xxx
Продукт только для веба — это допустимо: можно создать продукт с идентификаторами Stripe или Paddle без указания идентификаторов App Store или Google Play.
adapty products update
Обновление существующего продукта.
Идентификаторы продуктов стора и цен нельзя изменить после создания — они недоступны в этой команде. Чтобы использовать другие идентификаторы стора, создайте новый продукт.
adapty products update --app <app-id> <product-id> --title "Monthly" --access-level-id <access-level-id>
| Аргумент | Описание |
|---|---|
product-id | ID продукта (UUID) |
| Флаг | Обязательный | Описание |
|---|---|---|
--app | Да | ID приложения (UUID) |
--title | Нет | Название продукта |
--access-level-id | Нет | ID (UUID) уровня доступа, который открывает этот продукт |
Пейволы
Список пейволов Adapty
Получить список всех пейволов приложения.
adapty paywalls list --app <app-id>
| Флаг | Обязательный | Описание |
|---|---|---|
--app | Да | ID приложения (UUID) |
Принимает флаги пагинации.
adapty paywalls get
Получить подробную информацию о конкретном пейволе.
adapty paywalls get --app <app-id> <paywall-id>
| Аргумент | Описание |
|---|---|
paywall-id | ID пейвола (UUID) |
| Флаг | Обязателен | Описание |
|---|---|---|
--app | Да | ID приложения (UUID) |
adapty paywalls create
Создайте новый пейвол.
adapty paywalls create --app <app-id> --title "Default Paywall" --product-id <product-id>
| Флаг | Обязательный | Описание |
|---|---|---|
--app | Да | ID приложения (UUID) |
--title | Да | Название пейвола |
--product-id | Да | ID продукта (UUID). Повторите для нескольких продуктов: --product-id <id1> --product-id <id2> |
adapty paywalls update
Замените все поля существующего пейвола.
Если пейвол уже привязан к плейсменту, его продукты нельзя изменить. Чтобы использовать другие продукты в активном пейволе, создайте новый пейвол и обновите плейсмент, чтобы он указывал на него.
adapty paywalls update --app <app-id> <paywall-id> --title "Default Paywall" --product-id <product-id>
Эта команда заменяет все поля пейвола, включая полный список продуктов.
| Аргумент | Описание |
|---|---|
paywall-id | ID пейвола (UUID) |
| Флаг | Обязательный | Описание |
|---|---|---|
--app | Да | ID приложения (UUID) |
--title | Да | Название пейвола |
--product-id | Да | ID продукта (UUID). Повторите для нескольких продуктов: --product-id <id1> --product-id <id2> |
adapty paywalls placements
Список всех плейсментов, в которых используется указанный пейвол.
adapty paywalls placements --app <app-id> <paywall-id>
| Аргумент | Описание |
|---|---|
paywall-id | ID пейвола (UUID) |
| Флаг | Обязателен | Описание |
|---|---|---|
--app | Да | ID приложения (UUID) |
Используйте эту команду перед заменой пейвола, чтобы узнать, какие плейсменты будут затронуты.
Элементы в этом списке не содержат поля is_active. Чтобы узнать состояние активации плейсмента, используйте placements list или placements get.
Флоу
Флоу — это пейволы и онбординги, которые вы создаёте в Flow & Paywall Builder. CLI управляет записью флоу, конфигурацией билдера и публикацией. Конфигурация билдера — это большой JSON-документ, который обычно создаёт Flow & Paywall Builder; CLI его не генерирует. Чтобы создать или отредактировать конфигурацию из терминала, используйте навык flow-generator — он управляет этими командами за вас. Перед публикацией навык flow-audit проверяет, готов ли флоу к продакшену. Команды приведены здесь в качестве справочника.
adapty flows list
Список всех флоу приложения.
adapty flows list --app <app-id>
| Флаг | Обязательный | Описание |
|---|---|---|
--app | Да | ID приложения (UUID) |
Принимает флаги пагинации.
adapty flows get
Получить сведения о конкретном флоу.
adapty flows get --app <app-id> <flow-id>
| Аргумент | Описание |
|---|---|
flow-id | ID флоу (UUID) |
| Флаг | Обязательный | Описание |
|---|---|---|
--app | Да | ID приложения (UUID) |
Ответ содержит поля id, name, status и updated_at. Возможные значения status:
| Статус | Значение |
|---|---|
draft | Флоу ни разу не публиковался |
published | Текущая версия опубликована |
dirty | Флоу был опубликован ранее, но текущая версия содержит неопубликованные изменения. Пользователи продолжают видеть последнюю опубликованную версию |
publishing | Публикация выполняется |
publication_failed | Последняя публикация завершилась с ошибкой. Исправьте настройки и опубликуйте снова |
archived | Флоу заархивирован |
adapty flows create
Создание флоу. Новый флоу имеет имя и не содержит конфига. Чтобы добавить конфиг, используйте flows config update.
adapty flows create --app <app-id> --name "Onboarding"
| Флаг | Обязателен | Описание |
|---|---|---|
--app | Да | ID приложения (UUID) |
--name | Да | Название флоу |
adapty flows update
Переименовать флоу.
adapty flows update --app <app-id> <flow-id> --name "Onboarding v2"
| Аргумент | Описание |
|---|---|
flow-id | ID флоу (UUID) |
| Флаг | Обязательный | Описание |
|---|---|---|
--app | Да | ID приложения (UUID) |
--name | Да | Новое название флоу |
adapty flows publish
Публикация текущей версии флоу для ваших пользователей.
adapty flows publish --app <app-id> <flow-id>
| Аргумент | Описание |
|---|---|
flow-id | ID флоу (UUID) |
| Флаг | Обязательный | Описание |
|---|---|---|
--app | Да | ID приложения (UUID) |
--yes, -y | Нет | Публикация без запроса подтверждения. Обязателен при перенаправлении вывода или использовании --json |
Поскольку публикация меняет то, что видят пользователи, команда выводит имя флоу и запрашивает подтверждение. Любой ответ, кроме y, отменяет команду с кодом выхода 1. При использовании --json или в пайпе команда отказывает с кодом выхода 2 вместо ожидания ответа, поэтому в скриптах и агентских сессиях передавайте --yes.
Публикация выполняется асинхронно: в ответе приходит status: publishing, и флоу ещё не активен. Опрашивайте flows get, пока статус не станет published или publication_failed. При publication_failed причину можно узнать через flows config get.
Публикация завершится ошибкой HTTP 400, если у флоу нет конфига, конфиг нельзя опубликовать или текущая версия уже активна. Чтобы проверить конфиг до публикации, используйте flows config validate.
adapty flows config get
Прочитать конфигурацию билдера для флоу.
adapty flows config get --app <app-id> <flow-id>
| Аргумент | Описание |
|---|---|
flow-id | ID флоу (UUID) |
| Флаг | Обязательный | Описание |
|---|---|---|
--app | Да | ID приложения (UUID) |
Ответ содержит поля config, remote_configs, status и updated_at. updated_at — это временная метка последнего изменения конфига в миллисекундах. Передайте её в flows config update через --expected-updated-at, чтобы не затереть чужие правки. Если конфиг флоу ни разу не записывался, возвращается 404.
После попытки публикации ответ также содержит три поля, описывающие её результат. Читайте их, когда flows get возвращает publication_failed:
| Поле | Описание |
|---|---|
publication_status | Статус публикации этой версии флоу: transforming, transformed, uploading, uploaded, published или failed |
transform_error | Необработанная ошибка трансформации — либо JSON с перечнем проблем, либо строка с кратким описанием |
publication_error | Понятное сообщение об ошибке публикации |
adapty flows config update
Запись конфигурации билдера для флоу.
adapty flows config update --app <app-id> <flow-id> --config-file config.json
| Аргумент | Описание |
|---|---|
flow-id | ID флоу (UUID) |
| Флаг | Обязательный | Описание |
|---|---|---|
--app | Да | ID приложения (UUID) |
--config | Один из двух | Конфиг Builder в виде JSON-строки |
--config-file | Один из двух | Путь к JSON-файлу с конфигом Builder или - для чтения из stdin |
--remote-configs | Нет | JSON-массив записей {locale, data}, где data — это Remote Config в виде строки |
--expected-updated-at | Нет | Значение updated_at из предыдущего вызова flows config get. Если конфиг изменился после этого чтения, команда завершится с ошибкой вместо перезаписи изменения. Если не указать — перезапись будет выполнена безусловно |
Сохранение конфигурации создаёт черновик, но не публикует его. Для опубликованного флоу запись создаёт новую версию: статус флоу становится dirty, и пользователи продолжают видеть опубликованную версию, пока вы не выполните flows publish.
adapty flows config validate
Проверяет, можно ли опубликовать конфигурацию билдера, без её сохранения.
adapty flows config validate --app <app-id> <flow-id> --config-file config.json
| Аргумент | Описание |
|---|---|
flow-id | ID флоу (UUID) |
| Флаг | Обязателен | Описание |
|---|---|---|
--app | Да | ID приложения (UUID) |
--config | Один из двух | Конфигурация билдера в виде JSON-строки |
--config-file | Один из двух | Путь к JSON-файлу с конфигурацией билдера или - для чтения из stdin |
Ответ содержит valid и список issues. Если конфиг нельзя опубликовать, команда завершается с кодом 1, что позволяет использовать её как условие в скриптах.
adapty flows config preview
Отображает локальный конфиг-файл в браузере. Эта команда не обращается к API и не принимает флаг --app.
adapty flows config preview ./config.json --screen <screen-id> --device iphone-14 --orientation portrait
| Аргумент | Описание |
|---|---|
config-file | Путь к локальному JSON-файлу конфига билдера |
| Флаг | По умолчанию | Описание |
|---|---|---|
--screen | Первый экран флоу | ID экрана для отображения |
--device | iphone-14 | Фрейм устройства для отображения |
--orientation | portrait | portrait или landscape |
В терминале команда открывает превью в браузере. При перенаправлении вывода или с флагом --json она печатает URL вместо этого. URL содержит всю конфигурацию и может быть длинным: передавайте его в инструмент для создания скриншотов, а не выводите на экран. Конфигурации размером более ~32 КБ рендерятся медленно.
adapty flows media upload
Загрузка изображения для использования в конфиге флоу.
adapty flows media upload --app <app-id> ./hero.png
| Аргумент | Описание |
|---|---|
file | Путь к файлу изображения |
| Флаг | Обязательный | Описание |
|---|---|---|
--app | Да | ID приложения (UUID) |
Поддерживаемые форматы: GIF, HEIC, JPEG, PNG, SVG и WebP. Ответ содержит id, name изображения и CDN url для ссылки из конфига.
Плейсменты
Плейсменты — это точки входа, через которые флоу, пейволы и онбординги доходят до пользователей. Тип контента плейсмента фиксируется при создании, поэтому перевод приложения с пейволов на флоу требует создания новых плейсментов, а не обновления существующих — для массовых операций такого рода используется навык migrate-placements.
adapty placements list
Список всех плейсментов приложения.
adapty placements list --app <app-id>
| Флаг | Обязательный | Описание |
|---|---|---|
--app | Да | ID приложения (UUID) |
Принимает флаги пагинации.
Каждый элемент содержит id, developer_id, title и is_active. is_active равно true для активного плейсмента и false для неактивного.
adapty placements get
Получить подробную информацию о конкретном плейсменте.
adapty placements get --app <app-id> <placement-id>
| Аргумент | Описание |
|---|---|
placement-id | ID плейсмента (UUID) |
| Флаг | Обязательный | Описание |
|---|---|---|
--app | Да | ID приложения (UUID) |
Ответ содержит поля id, developer_id, title, is_active и массив audiences. is_active равен true для активного плейсмента и false для неактивного. Каждая запись аудитории включает content_type (paywall или flow), segment_ids, priority, а также paywall_id или flow_id. Дефолтная аудитория имеет segment_ids: [] и наибольшее значение priority (вычисляется последней). См. Структура audiences.
adapty placements create
Создать новый плейсмент.
adapty placements create --app <app-id> --title "Main" --developer-id "main" --audiences '[{"content_type":"paywall","segment_ids":[],"paywall_id":"<paywall-id>","priority":0}]'
| Флаг | Обязательный | Описание |
|---|---|---|
--app | Да | ID приложения (UUID) |
--title | Да | Заголовок плейсмента |
--developer-id | Да | Строковый идентификатор, используемый в коде приложения для запроса этого плейсмента |
--audiences | Один из двух | JSON-массив записей аудитории, каждая с явным content_type. См. Структура audiences |
--paywall-id | Один из двух | Устаревший. ID пейвола (UUID). На стороне клиента оборачивается в единственную аудиторию по умолчанию |
Передайте ровно один из флагов: --audiences или --paywall-id. Передача обоих или ни одного приведёт к ошибке.
--paywall-id устарел и будет удалён. При передаче этого параметра CLI выводит предупреждение в stderr и преобразует значение в аудиторию по умолчанию. Используйте --audiences для новой автоматизации.
adapty placements update
Заменяет все поля существующего плейсмента.
adapty placements update --app <app-id> <placement-id> --title "Main" --developer-id "main" --audiences '[{"content_type":"paywall","segment_ids":[],"paywall_id":"<paywall-id>","priority":0}]'
Эта команда заменяет все поля плейсмента, включая полный список аудиторий.
| Аргумент | Описание |
|---|---|
placement-id | ID плейсмента (UUID) |
| Флаг | Обязательный | Описание |
|---|---|---|
--app | Да | ID приложения (UUID) |
--title | Да | Название плейсмента |
--developer-id | Да | Строковый идентификатор, используемый в коде приложения для запроса этого плейсмента |
--audiences | Одно из двух | JSON-массив записей аудиторий, каждая с явным content_type. См. Форма аудиторий |
--paywall-id | Одно из двух | Устарело. ID пейвола (UUID). Заменяет все аудитории одной аудиторией по умолчанию |
Передача --paywall-id перезаписывает все аудитории на плейсменте. Аудитории, привязанные к сегментам, удаляются. Чтобы сохранить их, используйте --audiences и включите все нужные записи.
Форма аудиторий
Флаг --audiences принимает JSON-массив. Каждый элемент содержит:
| Поле | Тип | Описание |
|---|---|---|
content_type | string | "paywall" или "flow". Обязательное поле для каждой записи. Все записи в одном плейсменте должны иметь одинаковое значение |
segment_ids | string[] | Идентификаторы сегментов, на которые нацелена данная аудитория. Длина 0 или 1. Пустой массив обозначает аудиторию по умолчанию — резервный вариант для пользователей, не подпадающих ни под один другой сегмент |
paywall_id | string | Идентификатор пейвола (UUID), который показывается пользователям данной аудитории. Обязательное поле, когда content_type равен "paywall" |
flow_id | string | Идентификатор флоу (UUID), который показывается пользователям данной аудитории. Обязательное поле, когда content_type равен "flow" |
priority | number | Нумерация с нуля, уникальна в рамках плейсмента. Аудитории оцениваются от меньшего значения к большему; аудитория по умолчанию должна иметь наибольшее значение |
У плейсмента должна быть ровно одна аудитория по умолчанию.
Тип контента плейсмента фиксируется при создании, поэтому placements update не может переключить плейсмент с пейвола на флоу или наоборот. Для флоу создайте отдельный плейсмент — см. Создание нового плейсмента для флоу.
CLI проверяет каждую запись перед отправкой запроса. Запись с отсутствующим или неизвестным content_type, либо без ID, который требует content_type, завершается с кодом 2, и запрос не отправляется.
Флоу можно прикрепить только после его публикации. draft-флоу или флоу, первая публикация которого ещё не завершена, отклоняется сервером; CLI распознаёт это и завершает работу с кодом 2, выводя команду flows publish для данного флоу. Чтобы опубликовать флоу, используйте flows publish или Flow & Paywall Builder, затем дождитесь, пока его статус не станет published.
Пример с одной целевой аудиторией и одной аудиторией по умолчанию:
adapty placements update <placement-id> --app <app-id> --title "Main" --developer-id "main" \
--audiences '[{"content_type":"paywall","segment_ids":["<vip-segment-id>"],"paywall_id":"<vip-paywall-id>","priority":0},{"content_type":"paywall","segment_ids":[],"paywall_id":"<default-paywall-id>","priority":1}]'
Пример плейсмента, который показывает опубликованный флоу всем пользователям:
adapty placements create --app <app-id> --title "Onboarding" --developer-id "onboarding" \
--audiences '[{"content_type":"flow","segment_ids":[],"flow_id":"<flow-id>","priority":0}]'
Чтобы заменить пейвол в нескольких плейсментах без потери маршрутизации по сегментам:
-
Найдите затронутые плейсменты:
adapty paywalls placements --app <app-id> <old-paywall-id> -
Для каждого получите полный массив
audiences:adapty placements get --app <app-id> <placement-id> --json -
Замените соответствующие значения
paywall_idна стороне клиента. -
Запишите изменённый payload обратно:
adapty placements update --app <app-id> <placement-id> --title "<title>" --developer-id "<developer-id>" --audiences '<modified-payload>'
Сегменты
Сегменты доступны через CLI только для чтения. Создавайте и редактируйте их в дашборде Adapty. Используйте эти команды, чтобы находить идентификаторы сегментов при настройке аудиторий плейсментов.
Список сегментов adapty
Выводит все сегменты приложения.
adapty segments list --app <app-id>
| Флаг | Обязателен | Описание |
|---|---|---|
--app | Да | ID приложения (UUID) |
Поддерживает флаги пагинации.
adapty segments get
Получить подробную информацию о конкретном сегменте.
adapty segments get --app <app-id> <segment-id>
| Аргумент | Описание |
|---|---|
segment-id | ID сегмента (UUID) |
| Флаг | Обязательный | Описание |
|---|---|---|
--app | Да | ID приложения (UUID) |
Ответ содержит id, title и description. Правила фильтрации через этот API не предоставляются.
Auth
| Команда | Описание |
|---|---|
adapty auth login | Аутентификация через браузер с использованием device flow |
adapty auth logout | Удалить сохранённые учётные данные локально |
adapty auth whoami | Проверить токен на сервере и показать информацию о пользователе |
adapty auth status | Показать локальное состояние аутентификации без обращения к серверу |
adapty auth revoke | Отозвать токен на сервере и удалить его локально |
Подробное описание каждой команды см. в разделе Аутентификация.