Справочник команд Adapty Developer CLI

В этой статье перечислены команды Adapty CLI для настройки аккаунта — приложений, уровней доступа, продуктов, пейволов, флоу, плейсментов и сегментов — с их аргументами, флагами и допустимыми значениями. Для кампаний Apple Ads см. команды Ads Manager.

Глобальные флаги

Эти флаги доступны для всех команд.

ФлагОписание
--jsonВывод в формате JSON вместо форматированного текста
--helpПоказать справку по команде

Все команды list также принимают флаги пагинации:

ФлагПо умолчаниюОписание
--page1Номер страницы
--page-size20Элементов на странице (макс.: 100)

Приложения

Управляйте приложениями в вашем аккаунте Adapty. Для настройки через дашборд см. App settings.

adapty apps list

Вывести список всех приложений в вашем аккаунте Adapty.

adapty apps list

Принимает флаги пагинации.

adapty apps get

Получить сведения о конкретном приложении.

adapty apps get <app-id>
АргументОписание
app-idID приложения (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 iosApple bundle ID
--google-bundle-idОбязателен при --platform androidGoogle bundle ID

adapty apps update

Обновить существующее приложение.

adapty apps update <app-id> --title "New Name"
АргументОписание
app-idID приложения (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-idID уровня доступа (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-idID уровня доступа (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-idID продукта (UUID)
ФлагОбязательныйОписание
--appДаID приложения (UUID)

adapty products create

Создайте новый продукт.

Important

Идентификаторы продукта и цены в сторе нельзя изменить после создания. Чтобы использовать другие идентификаторы стора, создайте новый продукт.

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 lifetimeID базового плана из Google Play Console
--stripe-product-idТребуется хотя бы один сторID продукта из Stripe
--stripe-price-idОбязателен вместе с --stripe-product-idID цены из Stripe
--paddle-product-idТребуется хотя бы один сторID продукта из Paddle
--paddle-price-idОбязателен вместе с --paddle-product-idID цены из 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-idID продукта (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-idID пейвола (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

Замените все поля существующего пейвола.

Important

Если пейвол уже привязан к плейсменту, его продукты нельзя изменить. Чтобы использовать другие продукты в активном пейволе, создайте новый пейвол и обновите плейсмент, чтобы он указывал на него.

adapty paywalls update --app <app-id> <paywall-id> --title "Default Paywall" --product-id <product-id>

Эта команда заменяет все поля пейвола, включая полный список продуктов.

АргументОписание
paywall-idID пейвола (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-idID пейвола (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-idID флоу (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-idID флоу (UUID)
ФлагОбязательныйОписание
--appДаID приложения (UUID)
--nameДаНовое название флоу

adapty flows publish

Публикация текущей версии флоу для ваших пользователей.

adapty flows publish --app <app-id> <flow-id>
АргументОписание
flow-idID флоу (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-idID флоу (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-idID флоу (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-idID флоу (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 экрана для отображения
--deviceiphone-14Фрейм устройства для отображения
--orientationportraitportrait или 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-idID плейсмента (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. Передача обоих или ни одного приведёт к ошибке.

Warning

--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-idID плейсмента (UUID)
ФлагОбязательныйОписание
--appДаID приложения (UUID)
--titleДаНазвание плейсмента
--developer-idДаСтроковый идентификатор, используемый в коде приложения для запроса этого плейсмента
--audiencesОдно из двухJSON-массив записей аудиторий, каждая с явным content_type. См. Форма аудиторий
--paywall-idОдно из двухУстарело. ID пейвола (UUID). Заменяет все аудитории одной аудиторией по умолчанию
Warning

Передача --paywall-id перезаписывает все аудитории на плейсменте. Аудитории, привязанные к сегментам, удаляются. Чтобы сохранить их, используйте --audiences и включите все нужные записи.

Форма аудиторий

Флаг --audiences принимает JSON-массив. Каждый элемент содержит:

ПолеТипОписание
content_typestring"paywall" или "flow". Обязательное поле для каждой записи. Все записи в одном плейсменте должны иметь одинаковое значение
segment_idsstring[]Идентификаторы сегментов, на которые нацелена данная аудитория. Длина 0 или 1. Пустой массив обозначает аудиторию по умолчанию — резервный вариант для пользователей, не подпадающих ни под один другой сегмент
paywall_idstringИдентификатор пейвола (UUID), который показывается пользователям данной аудитории. Обязательное поле, когда content_type равен "paywall"
flow_idstringИдентификатор флоу (UUID), который показывается пользователям данной аудитории. Обязательное поле, когда content_type равен "flow"
prioritynumberНумерация с нуля, уникальна в рамках плейсмента. Аудитории оцениваются от меньшего значения к большему; аудитория по умолчанию должна иметь наибольшее значение

У плейсмента должна быть ровно одна аудитория по умолчанию.

Тип контента плейсмента фиксируется при создании, поэтому 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}]'

Чтобы заменить пейвол в нескольких плейсментах без потери маршрутизации по сегментам:

  1. Найдите затронутые плейсменты:

    adapty paywalls placements --app <app-id> <old-paywall-id>
  2. Для каждого получите полный массив audiences:

    adapty placements get --app <app-id> <placement-id> --json
  3. Замените соответствующие значения paywall_id на стороне клиента.

  4. Запишите изменённый 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-idID сегмента (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Отозвать токен на сервере и удалить его локально

Подробное описание каждой команды см. в разделе Аутентификация.