Référence des commandes du CLI développeur Adapty

Cet article répertorie les commandes CLI Adapty qui configurent votre compte — apps, niveaux d’accès, produits, paywalls, flows, placements et segments — avec leurs arguments, options et valeurs acceptées. Pour les campagnes Apple Ads, voir Commandes Ads Manager.

Indicateurs globaux

Ces indicateurs sont disponibles sur toutes les commandes.

IndicateurDescription
--jsonAfficher en JSON plutôt qu’en texte formaté
--helpAfficher l’aide de la commande

Toutes les commandes list acceptent également des indicateurs de pagination :

IndicateurDéfautDescription
--page1Numéro de page
--page-size20Éléments par page (max : 100)

Applications

Gérez les applications de votre compte Adapty. Pour la configuration via le tableau de bord, consultez Paramètres de l’application.

adapty apps list

Listez toutes les applications de votre compte Adapty.

adapty apps list

Accepte les options de pagination.

adapty apps get

Obtenez les détails d’une application spécifique.

adapty apps get <app-id>
ArgumentDescription
app-idID de l’application (UUID)

adapty apps create

Créer une nouvelle application.

adapty apps create --title "My App" --platform ios --apple-bundle-id com.example.app
FlagRequiredDescription
--titleYesTitre de l’application
--platformYesPlateforme : ios ou android. Répéter pour les deux : --platform ios --platform android
--apple-bundle-idRequired with --platform iosBundle ID Apple
--google-bundle-idRequired with --platform androidBundle ID Google

adapty apps update

Mettre à jour une application existante.

adapty apps update <app-id> --title "New Name"
ArgumentDescription
app-idID de l’application (UUID)
FlagDescription
--titleNouveau titre de l’application
--apple-bundle-idNouvel Apple bundle ID
--google-bundle-idNouvel Google bundle ID

Au moins un flag est requis. --platform ne peut pas être modifié après la création.

Niveaux d’accès

adapty access-levels list

Liste tous les niveaux d’accès d’une application.

adapty access-levels list --app <app-id>
FlagRequiredDescription
--appYesApp ID (UUID)

Accepte les options de pagination.

adapty access-levels get

Obtenez les détails d’un niveau d’accès spécifique.

adapty access-levels get --app <app-id> <access-level-id>
ArgumentDescription
access-level-idID du niveau d’accès (UUID)
FlagRequisDescription
--appOuiID de l’application (UUID)

adapty access-levels create

Créer un nouveau niveau d’accès.

adapty access-levels create --app <app-id> --sdk-id "pro" --title "Pro"
FlagRequisDescription
--appOuiID de l’app (UUID)
--sdk-idOuiIdentifiant utilisé dans le code de l’app pour vérifier l’accès (par exemple, "pro" ou "premium")
--titleOuiLibellé d’affichage dans l’Adapty Dashboard

adapty access-levels update

Mettez à jour un niveau d’accès existant.

adapty access-levels update --app <app-id> <access-level-id> --title "Pro Access"
ArgumentDescription
access-level-idID du niveau d’accès (UUID)
FlagRequisDescription
--appOuiID de l’app (UUID)
--titleOuiNouveau libellé d’affichage

--sdk-id ne peut pas être modifié après la création.

Produits

Liste des produits Adapty

Listez tous les produits d’une application.

adapty products list --app <app-id>
FlagRequisDescription
--appOuiID de l’application (UUID)

Accepte les flags de pagination.

adapty products get

Obtenez les détails d’un produit spécifique.

adapty products get --app <app-id> <product-id>
ArgumentDescription
product-idID du produit (UUID)
IndicateurRequisDescription
--appOuiID de l’application (UUID)

adapty products create

Créez un nouveau produit.

Important

Les identifiants de produit et de prix du store ne peuvent pas être modifiés après la création. Pour utiliser d’autres identifiants de store, créez un nouveau produit.

adapty products create --app <app-id> --title "Monthly" --access-level-id <access-level-id> --period monthly --ios-product-id com.example.monthly
ParamètreObligatoireDescription
--appOuiID de l’app (UUID)
--titleOuiTitre du produit
--access-level-idOuiID (UUID) du niveau d’accès que ce produit débloque
--periodOuiPériode d’abonnement : weekly, monthly, two_months, trimonthly, semiannual, annual, lifetime
--ios-product-idAu moins un store requisID du produit dans App Store Connect
--android-product-idAu moins un store requisID du produit dans Google Play Console
--android-base-plan-idObligatoire avec --android-product-id sauf si --period lifetimeID du plan de base dans Google Play Console
--stripe-product-idAu moins un store requisID du produit dans Stripe
--stripe-price-idObligatoire avec --stripe-product-idID du prix dans Stripe
--paddle-product-idAu moins un store requisID du produit dans Paddle
--paddle-price-idObligatoire avec --paddle-product-idID du prix dans Paddle

Chaque produit nécessite au moins un store : --ios-product-id, --android-product-id, --stripe-product-id ou --paddle-product-id. Un même produit peut avoir des identifiants pour plusieurs stores à la fois.

Pour vendre un produit sur le web via Stripe ou Paddle, connectez d’abord le fournisseur de paiement à Adapty : voir Stripe et Paddle. Pour chacun de ces stores, passez l’identifiant du produit et l’identifiant du prix ensemble. La commande échoue si vous ne passez qu’un seul des deux.

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

Un produit web uniquement est valide : vous pouvez créer un produit avec des identifiants Stripe ou Paddle sans identifiants App Store ou Google Play.

adapty products update

Mettez à jour un produit existant.

Les identifiants de produit et de prix du store ne peuvent pas être modifiés après la création et ne sont pas disponibles dans cette commande. Pour utiliser des identifiants de store différents, créez un nouveau produit.

adapty products update --app <app-id> <product-id> --title "Monthly" --access-level-id <access-level-id>
ArgumentDescription
product-idID du produit (UUID)
IndicateurRequisDescription
--appOuiID de l’application (UUID)
--titleNonTitre du produit
--access-level-idNonID (UUID) du niveau d’accès que ce produit déverrouille

Paywalls

Liste des paywalls Adapty

Listez tous les paywalls d’une application.

adapty paywalls list --app <app-id>
IndicateurRequisDescription
--appOuiID de l’application (UUID)

Accepte les indicateurs de pagination.

adapty paywalls get

Obtenir les détails d’un paywall spécifique.

adapty paywalls get --app <app-id> <paywall-id>
ArgumentDescription
paywall-idID du paywall (UUID)
FlagRequisDescription
--appOuiID de l’app (UUID)

adapty paywalls create

Crée un nouveau paywall.

adapty paywalls create --app <app-id> --title "Default Paywall" --product-id <product-id>
FlagRequisDescription
--appOuiID de l’application (UUID)
--titleOuiTitre du paywall
--product-idOuiID du produit (UUID). Répétez pour plusieurs produits : --product-id <id1> --product-id <id2>

adapty paywalls update

Remplacez tous les champs d’un paywall existant.

Important

Une fois qu’un paywall est lié à un placement, ses produits ne peuvent plus être modifiés. Pour utiliser des produits différents dans un paywall actif, créez un nouveau paywall et mettez à jour le placement pour qu’il pointe vers celui-ci.

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

Cette commande remplace tous les champs du paywall, y compris la liste complète des produits.

ArgumentDescription
paywall-idID du paywall (UUID)
IndicateurObligatoireDescription
--appOuiID d’application (UUID)
--titleOuiTitre du paywall
--product-idOuiID de produit (UUID). Répéter pour plusieurs produits : --product-id <id1> --product-id <id2>

adapty paywalls placements

Liste tous les placements qui utilisent actuellement un paywall donné.

adapty paywalls placements --app <app-id> <paywall-id>
ArgumentDescription
paywall-idID du paywall (UUID)
FlagRequisDescription
--appOuiID de l’app (UUID)

Utilisez cette commande avant de remplacer un paywall pour voir quels placements seraient affectés.

Les éléments de cette liste ne contiennent pas de champ is_active. Pour lire l’état d’activation d’un placement, utilisez placements list ou placements get.

Flows

Les flows sont les paywalls et onboardings que vous créez dans le Flow & Paywall Builder. La CLI gère l’enregistrement du flow, sa configuration de builder et sa publication. Une configuration de builder est un document JSON volumineux que le Flow & Paywall Builder produit normalement — la CLI n’en génère pas. Pour créer ou modifier une configuration depuis le terminal, utilisez le skill flow-generator, qui pilote ces commandes à votre place. Avant la publication, le skill flow-audit vérifie si le flow est prêt pour la production. Les commandes sont listées ici à titre de référence.

Liste des flows

Liste tous les flows d’une application.

adapty flows list --app <app-id>
FlagRequisDescription
--appOuiID de l’application (UUID)

Accepte les flags de pagination.

adapty flows get

Obtenez les détails d’un flow spécifique.

adapty flows get --app <app-id> <flow-id>
ArgumentDescription
flow-idID du flow (UUID)
FlagRequisDescription
--appOuiID de l’app (UUID)

La réponse contient id, name, status, et updated_at. Le statut est l’un des suivants :

StatutSignification
draftLe flow n’a jamais été publié
publishedLa version actuelle est en ligne
dirtyLe flow a déjà été publié, et la version actuelle contient des modifications non publiées. Les utilisateurs continuent de voir la dernière version publiée
publishingLa publication est en cours
publication_failedLa dernière publication a échoué. Corrigez la configuration et publiez à nouveau
archivedLe flow est archivé

adapty flows create

Crée un flow. Le nouveau flow a un nom et aucune configuration. Pour ajouter une configuration, utilisez flows config update.

adapty flows create --app <app-id> --name "Onboarding"
FlagRequisDescription
--appOuiID de l’application (UUID)
--nameOuiNom du flow

adapty flows update

Renommer un flow.

adapty flows update --app <app-id> <flow-id> --name "Onboarding v2"
ArgumentDescription
flow-idID du flow (UUID)
FlagRequisDescription
--appOuiID de l’app (UUID)
--nameOuiNouveau nom du flow

adapty flows publish

Publiez la version actuelle d’un flow à vos utilisateurs.

adapty flows publish --app <app-id> <flow-id>
ArgumentDescription
flow-idID du flow (UUID)
FlagRequisDescription
--appOuiID de l’app (UUID)
--yes, -yNonPublie sans demander de confirmation. Requis lorsque la sortie est redirigée ou que --json est utilisé

Parce que la publication modifie ce que voient vos utilisateurs, la commande affiche le nom du flow et demande une confirmation. Toute réponse autre que y annule la commande avec le code de sortie 1. Avec --json ou dans un pipe, la commande refuse avec le code de sortie 2 au lieu d’attendre une réponse — passez donc --yes dans les scripts et les sessions agent.

La publication est asynchrone : la réponse indique status: publishing, et le flow n’est pas encore en ligne. Interrogez flows get jusqu’à ce que le statut devienne published ou publication_failed. En cas de publication_failed, flows config get indique la raison de l’échec.

La publication échoue avec une erreur HTTP 400 si le flow n’a pas de config, si la config n’est pas publiable, ou si la version actuelle est déjà en ligne. Pour vérifier une config avant de la publier, utilisez flows config validate.

adapty flows config get

Lit la configuration du builder d’un flow.

adapty flows config get --app <app-id> <flow-id>
ArgumentDescription
flow-idID du flow (UUID)
FlagRequisDescription
--appOuiID de l’application (UUID)

La réponse contient config, remote_configs, status et updated_at. updated_at est un horodatage en millisecondes de la dernière modification de la config. Passez-le à flows config update via --expected-updated-at pour éviter d’écraser une modification concurrente. Un flow dont la config n’a jamais été enregistrée renvoie 404.

Après une tentative de publication, la réponse contient également trois champs décrivant son déroulement. Lisez-les lorsque flows get signale publication_failed :

ChampDescription
publication_statusAvancement de la publication de cette version de flow : transforming, transformed, uploading, uploaded, published, ou failed
transform_errorL’erreur de transformation brute — soit un payload JSON listant les problèmes, soit une chaîne récapitulative
publication_errorUn message lisible pour une publication échouée

adapty flows config update

Écrit la configuration du builder d’un flow.

adapty flows config update --app <app-id> <flow-id> --config-file config.json
ArgumentDescription
flow-idID du flow (UUID)
IndicateurRequisDescription
--appOuiID d’application (UUID)
--configL’un des deuxConfiguration du builder sous forme de chaîne JSON
--config-fileL’un des deuxChemin vers un fichier JSON contenant la configuration du builder, ou - pour lire depuis stdin
--remote-configsNonTableau JSON d’entrées {locale, data}, où data est le Remote Config sous forme de chaîne
--expected-updated-atNonLa valeur updated_at issue d’un précédent flows config get. Si la configuration a été modifiée après cette lecture, la commande échoue plutôt que d’écraser la modification. Omettez ce paramètre pour écraser sans condition

La sauvegarde de la configuration crée un brouillon sans le publier. Sur un flow publié, l’écriture crée une nouvelle version : le statut du flow devient dirty, et les utilisateurs continuent de voir la version publiée jusqu’à ce que vous exécutiez flows publish.

adapty flows config validate

Vérifiez si une configuration du builder est publiable, sans la sauvegarder.

adapty flows config validate --app <app-id> <flow-id> --config-file config.json
ArgumentDescription
flow-idID du flow (UUID)
FlagRequisDescription
--appOuiID de l’app (UUID)
--configL’un des deuxConfiguration du builder en chaîne JSON
--config-fileL’un des deuxChemin vers un fichier JSON contenant la configuration du builder, ou - pour lire depuis stdin

La réponse contient valid et une liste d’issues. Lorsque la configuration n’est pas publiable, la commande se termine avec le code 1, ce qui permet aux scripts de s’y bloquer.

adapty flows config preview

Affiche un fichier de configuration local dans le navigateur. Cette commande n’effectue aucun appel API et n’accepte pas le flag --app.

adapty flows config preview ./config.json --screen <screen-id> --device iphone-14 --orientation portrait
ArgumentDescription
config-fileChemin vers un fichier JSON de configuration du builder local
FlagDéfautDescription
--screenPremier écran du flowID de l’écran à afficher
--deviceiphone-14Cadre d’appareil dans lequel afficher
--orientationportraitportrait ou landscape

Dans un terminal, la commande ouvre l’aperçu dans votre navigateur. Avec --json ou dans un pipe, elle affiche l’URL à la place. L’URL contient toute la configuration et peut être longue : redirigez-la vers un outil de capture d’écran plutôt que de l’afficher. Les configurations dépassant environ 32 Ko s’affichent lentement.

adapty flows media upload

Téléversez une image à utiliser dans une configuration de flow.

adapty flows media upload --app <app-id> ./hero.png
ArgumentDescription
fileChemin vers le fichier image
FlagRequisDescription
--appOuiID de l’app (UUID)

Formats acceptés : GIF, HEIC, JPEG, PNG, SVG et WebP. La réponse contient l’id, le name et l’url CDN de l’image, à référencer depuis la config.

Placements

Les placements sont les endroits où vos flows, paywalls et onboardings atteignent les utilisateurs. Le type de contenu d’un placement est fixé à sa création, donc faire passer une application de paywalls à des flows implique de créer de nouveaux placements plutôt que de mettre à jour les existants — la skill migrate-placements pilote ces commandes pour le faire en masse.

adapty placements list

Listez tous les placements d’une application.

adapty placements list --app <app-id>
FlagRequiredDescription
--appYesApp ID (UUID)

Accepte les options de pagination.

Chaque élément contient id, developer_id, title et is_active. is_active vaut true pour un placement actif et false pour un placement inactif.

adapty placements get

Récupère les détails d’un placement spécifique.

adapty placements get --app <app-id> <placement-id>
ArgumentDescription
placement-idID du placement (UUID)
FlagRequisDescription
--appOuiID de l’application (UUID)

La réponse contient id, developer_id, title, is_active, et un tableau audiences. is_active est true pour un placement actif et false pour un placement inactif. Chaque entrée d’audience comporte content_type (paywall ou flow), segment_ids, priority, ainsi que paywall_id ou flow_id. L’audience par défaut a segment_ids: [] et la valeur de priorité la plus élevée (évaluée en dernier). Voir Forme des audiences.

adapty placements create

Créez un nouveau placement.

adapty placements create --app <app-id> --title "Main" --developer-id "main" --audiences '[{"content_type":"paywall","segment_ids":[],"paywall_id":"<paywall-id>","priority":0}]'
IndicateurRequisDescription
--appOuiID de l’app (UUID)
--titleOuiTitre du placement
--developer-idOuiIdentifiant string utilisé dans le code de l’app pour demander ce placement
--audiencesL’un des deuxTableau JSON d’entrées d’audience, chacune avec un content_type explicite. Voir Format des audiences
--paywall-idL’un des deuxDéprécié. ID de paywall (UUID). Encapsulé côté client dans une audience par défaut unique

Passez exactement l’un de --audiences ou --paywall-id. Passer les deux ou aucun génère une erreur.

Warning

--paywall-id est obsolète et sera supprimé. Lorsqu’il est passé, le CLI affiche un avertissement sur stderr et convertit la valeur en audience par défaut. Utilisez --audiences pour les nouvelles automatisations.

adapty placements update

Remplace tous les champs d’un placement existant.

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}]'

Cette commande remplace tous les champs du placement, y compris la liste complète des audiences.

ArgumentDescription
placement-idID du placement (UUID)
FlagRequisDescription
--appOuiID de l’app (UUID)
--titleOuiTitre du placement
--developer-idOuiIdentifiant utilisé dans le code de l’app pour appeler ce placement
--audiencesL’un des deuxTableau JSON d’entrées d’audience, chacune avec un content_type explicite. Voir Format des audiences
--paywall-idL’un des deuxDéprécié. ID du paywall (UUID). Remplace toutes les audiences par une audience par défaut unique
Warning

Passer --paywall-id réécrit toutes les audiences du placement. Les audiences spécifiques à un segment sont supprimées. Pour les conserver, utilisez --audiences et incluez toutes les entrées que vous souhaitez garder.

Structure des audiences

Le paramètre --audiences prend un tableau JSON. Chaque entrée contient :

ChampTypeDescription
content_typestring"paywall" ou "flow". Obligatoire pour chaque entrée. Toutes les entrées d’un même placement doivent avoir la même valeur
segment_idsstring[]IDs de segment ciblés par cette audience. Longueur 0 ou 1. Un tableau vide désigne l’audience par défaut — le repli pour les utilisateurs qui ne correspondent à aucun autre segment
paywall_idstringID (UUID) du paywall affiché aux utilisateurs de cette audience. Obligatoire lorsque content_type vaut "paywall"
flow_idstringID (UUID) du flow affiché aux utilisateurs de cette audience. Obligatoire lorsque content_type vaut "flow"
prioritynumberBasé sur 0, unique au sein du placement. Les audiences sont évaluées de la valeur la plus basse à la plus haute ; l’audience par défaut doit avoir la valeur la plus élevée

Un placement doit avoir exactement une audience par défaut.

Le type de contenu d’un placement est fixé à sa création, donc placements update ne peut pas convertir un placement paywall en flow ni l’inverse. Servez le flow depuis un placement dédié — voir Créer un nouveau placement pour votre flow.

La CLI vérifie chaque entrée avant d’envoyer la requête. Une entrée avec un content_type manquant ou inconnu, ou sans l’ID requis par son content_type, provoque une sortie avec le code 2 et rien n’est envoyé.

Un flow ne peut être associé qu’après avoir été publié. Un flow à l’état draft, ou dont la première publication est encore en cours, est rejeté par le serveur ; le CLI reconnaît ce rejet et se termine avec le code 2, en affichant la commande flows publish correspondant à ce flow. Pour publier un flow, utilisez flows publish ou le Flow & Paywall Builder, puis attendez que son statut passe à published.

Exemple avec une audience ciblée et une audience par défaut :

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}]'

Exemple d’un placement qui affiche un flow publié à tous les utilisateurs :

adapty placements create --app <app-id> --title "Onboarding" --developer-id "onboarding" \
  --audiences '[{"content_type":"flow","segment_ids":[],"flow_id":"<flow-id>","priority":0}]'

Pour remplacer un paywall dans plusieurs placements sans perdre le routage par segment :

  1. Trouvez les placements concernés :

    adapty paywalls placements --app <app-id> <old-paywall-id>
  2. Pour chacun, lisez le tableau audiences complet :

    adapty placements get --app <app-id> <placement-id> --json
  3. Remplacez les valeurs paywall_id correspondantes côté client.

  4. Renvoyez le payload modifié :

    adapty placements update --app <app-id> <placement-id> --title "<title>" --developer-id "<developer-id>" --audiences '<modified-payload>'

Segments

Les segments sont en lecture seule via la CLI. Créez-les et modifiez-les dans l’Adapty Dashboard. Utilisez ces commandes pour rechercher les ID de segment lors de la composition des audiences de placement.

adapty segments list

Liste tous les segments d’une application.

adapty segments list --app <app-id>
FlagRequiredDescription
--appYesApp ID (UUID)

Accepte les drapeaux de pagination.

adapty segments get

Obtenez les détails d’un segment spécifique.

adapty segments get --app <app-id> <segment-id>
ArgumentDescription
segment-idID du segment (UUID)
FlagRequisDescription
--appOuiID de l’application (UUID)

La réponse contient id, title et description. Les règles de filtrage ne sont pas exposées via cette API.

Auth

CommandeDescription
adapty auth loginS’authentifier via le navigateur en utilisant le flow de l’appareil
adapty auth logoutSupprimer les identifiants stockés localement
adapty auth whoamiVérifier le token auprès du serveur et afficher les informations de l’utilisateur
adapty auth statusAfficher l’état d’authentification local sans appel au serveur
adapty auth revokeRévoquer le token côté serveur et le supprimer localement

Consultez Authentification pour tous les détails sur chaque commande.