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.
Pour la configuration de l’authentification et la gestion des tokens, voir Authentication.
Indicateurs globaux
Ces indicateurs sont disponibles sur toutes les commandes.
| Indicateur | Description |
|---|---|
--json | Afficher en JSON plutôt qu’en texte formaté |
--help | Afficher l’aide de la commande |
Toutes les commandes list acceptent également des indicateurs de pagination :
| Indicateur | Défaut | Description |
|---|---|---|
--page | 1 | Numéro de page |
--page-size | 20 | É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>
| Argument | Description |
|---|---|
app-id | ID 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
| Flag | Required | Description |
|---|---|---|
--title | Yes | Titre de l’application |
--platform | Yes | Plateforme : ios ou android. Répéter pour les deux : --platform ios --platform android |
--apple-bundle-id | Required with --platform ios | Bundle ID Apple |
--google-bundle-id | Required with --platform android | Bundle ID Google |
adapty apps update
Mettre à jour une application existante.
adapty apps update <app-id> --title "New Name"
| Argument | Description |
|---|---|
app-id | ID de l’application (UUID) |
| Flag | Description |
|---|---|
--title | Nouveau titre de l’application |
--apple-bundle-id | Nouvel Apple bundle ID |
--google-bundle-id | Nouvel 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>
| Flag | Required | Description |
|---|---|---|
--app | Yes | App 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>
| Argument | Description |
|---|---|
access-level-id | ID du niveau d’accès (UUID) |
| Flag | Requis | Description |
|---|---|---|
--app | Oui | ID 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"
| Flag | Requis | Description |
|---|---|---|
--app | Oui | ID de l’app (UUID) |
--sdk-id | Oui | Identifiant utilisé dans le code de l’app pour vérifier l’accès (par exemple, "pro" ou "premium") |
--title | Oui | Libellé 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"
| Argument | Description |
|---|---|
access-level-id | ID du niveau d’accès (UUID) |
| Flag | Requis | Description |
|---|---|---|
--app | Oui | ID de l’app (UUID) |
--title | Oui | Nouveau 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>
| Flag | Requis | Description |
|---|---|---|
--app | Oui | ID 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>
| Argument | Description |
|---|---|
product-id | ID du produit (UUID) |
| Indicateur | Requis | Description |
|---|---|---|
--app | Oui | ID de l’application (UUID) |
adapty products create
Créez un nouveau produit.
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ètre | Obligatoire | Description |
|---|---|---|
--app | Oui | ID de l’app (UUID) |
--title | Oui | Titre du produit |
--access-level-id | Oui | ID (UUID) du niveau d’accès que ce produit débloque |
--period | Oui | Période d’abonnement : weekly, monthly, two_months, trimonthly, semiannual, annual, lifetime |
--ios-product-id | Au moins un store requis | ID du produit dans App Store Connect |
--android-product-id | Au moins un store requis | ID du produit dans Google Play Console |
--android-base-plan-id | Obligatoire avec --android-product-id sauf si --period lifetime | ID du plan de base dans Google Play Console |
--stripe-product-id | Au moins un store requis | ID du produit dans Stripe |
--stripe-price-id | Obligatoire avec --stripe-product-id | ID du prix dans Stripe |
--paddle-product-id | Au moins un store requis | ID du produit dans Paddle |
--paddle-price-id | Obligatoire avec --paddle-product-id | ID 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>
| Argument | Description |
|---|---|
product-id | ID du produit (UUID) |
| Indicateur | Requis | Description |
|---|---|---|
--app | Oui | ID de l’application (UUID) |
--title | Non | Titre du produit |
--access-level-id | Non | ID (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>
| Indicateur | Requis | Description |
|---|---|---|
--app | Oui | ID 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>
| Argument | Description |
|---|---|
paywall-id | ID du paywall (UUID) |
| Flag | Requis | Description |
|---|---|---|
--app | Oui | ID 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>
| Flag | Requis | Description |
|---|---|---|
--app | Oui | ID de l’application (UUID) |
--title | Oui | Titre du paywall |
--product-id | Oui | ID 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.
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.
| Argument | Description |
|---|---|
paywall-id | ID du paywall (UUID) |
| Indicateur | Obligatoire | Description |
|---|---|---|
--app | Oui | ID d’application (UUID) |
--title | Oui | Titre du paywall |
--product-id | Oui | ID 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>
| Argument | Description |
|---|---|
paywall-id | ID du paywall (UUID) |
| Flag | Requis | Description |
|---|---|---|
--app | Oui | ID 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>
| Flag | Requis | Description |
|---|---|---|
--app | Oui | ID 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>
| Argument | Description |
|---|---|
flow-id | ID du flow (UUID) |
| Flag | Requis | Description |
|---|---|---|
--app | Oui | ID de l’app (UUID) |
La réponse contient id, name, status, et updated_at. Le statut est l’un des suivants :
| Statut | Signification |
|---|---|
draft | Le flow n’a jamais été publié |
published | La version actuelle est en ligne |
dirty | Le 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 |
publishing | La publication est en cours |
publication_failed | La dernière publication a échoué. Corrigez la configuration et publiez à nouveau |
archived | Le 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"
| Flag | Requis | Description |
|---|---|---|
--app | Oui | ID de l’application (UUID) |
--name | Oui | Nom du flow |
adapty flows update
Renommer un flow.
adapty flows update --app <app-id> <flow-id> --name "Onboarding v2"
| Argument | Description |
|---|---|
flow-id | ID du flow (UUID) |
| Flag | Requis | Description |
|---|---|---|
--app | Oui | ID de l’app (UUID) |
--name | Oui | Nouveau nom du flow |
adapty flows publish
Publiez la version actuelle d’un flow à vos utilisateurs.
adapty flows publish --app <app-id> <flow-id>
| Argument | Description |
|---|---|
flow-id | ID du flow (UUID) |
| Flag | Requis | Description |
|---|---|---|
--app | Oui | ID de l’app (UUID) |
--yes, -y | Non | Publie 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>
| Argument | Description |
|---|---|
flow-id | ID du flow (UUID) |
| Flag | Requis | Description |
|---|---|---|
--app | Oui | ID 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 :
| Champ | Description |
|---|---|
publication_status | Avancement de la publication de cette version de flow : transforming, transformed, uploading, uploaded, published, ou failed |
transform_error | L’erreur de transformation brute — soit un payload JSON listant les problèmes, soit une chaîne récapitulative |
publication_error | Un 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
| Argument | Description |
|---|---|
flow-id | ID du flow (UUID) |
| Indicateur | Requis | Description |
|---|---|---|
--app | Oui | ID d’application (UUID) |
--config | L’un des deux | Configuration du builder sous forme de chaîne JSON |
--config-file | L’un des deux | Chemin vers un fichier JSON contenant la configuration du builder, ou - pour lire depuis stdin |
--remote-configs | Non | Tableau JSON d’entrées {locale, data}, où data est le Remote Config sous forme de chaîne |
--expected-updated-at | Non | La 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
| Argument | Description |
|---|---|
flow-id | ID du flow (UUID) |
| Flag | Requis | Description |
|---|---|---|
--app | Oui | ID de l’app (UUID) |
--config | L’un des deux | Configuration du builder en chaîne JSON |
--config-file | L’un des deux | Chemin 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
| Argument | Description |
|---|---|
config-file | Chemin vers un fichier JSON de configuration du builder local |
| Flag | Défaut | Description |
|---|---|---|
--screen | Premier écran du flow | ID de l’écran à afficher |
--device | iphone-14 | Cadre d’appareil dans lequel afficher |
--orientation | portrait | portrait 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
| Argument | Description |
|---|---|
file | Chemin vers le fichier image |
| Flag | Requis | Description |
|---|---|---|
--app | Oui | ID 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>
| Flag | Required | Description |
|---|---|---|
--app | Yes | App 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>
| Argument | Description |
|---|---|
placement-id | ID du placement (UUID) |
| Flag | Requis | Description |
|---|---|---|
--app | Oui | ID 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}]'
| Indicateur | Requis | Description |
|---|---|---|
--app | Oui | ID de l’app (UUID) |
--title | Oui | Titre du placement |
--developer-id | Oui | Identifiant string utilisé dans le code de l’app pour demander ce placement |
--audiences | L’un des deux | Tableau JSON d’entrées d’audience, chacune avec un content_type explicite. Voir Format des audiences |
--paywall-id | L’un des deux | Dé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.
--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.
| Argument | Description |
|---|---|
placement-id | ID du placement (UUID) |
| Flag | Requis | Description |
|---|---|---|
--app | Oui | ID de l’app (UUID) |
--title | Oui | Titre du placement |
--developer-id | Oui | Identifiant utilisé dans le code de l’app pour appeler ce placement |
--audiences | L’un des deux | Tableau JSON d’entrées d’audience, chacune avec un content_type explicite. Voir Format des audiences |
--paywall-id | L’un des deux | Déprécié. ID du paywall (UUID). Remplace toutes les audiences par une audience par défaut unique |
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 :
| Champ | Type | Description |
|---|---|---|
content_type | string | "paywall" ou "flow". Obligatoire pour chaque entrée. Toutes les entrées d’un même placement doivent avoir la même valeur |
segment_ids | string[] | 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_id | string | ID (UUID) du paywall affiché aux utilisateurs de cette audience. Obligatoire lorsque content_type vaut "paywall" |
flow_id | string | ID (UUID) du flow affiché aux utilisateurs de cette audience. Obligatoire lorsque content_type vaut "flow" |
priority | number | Basé 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 :
-
Trouvez les placements concernés :
adapty paywalls placements --app <app-id> <old-paywall-id> -
Pour chacun, lisez le tableau
audiencescomplet :adapty placements get --app <app-id> <placement-id> --json -
Remplacez les valeurs
paywall_idcorrespondantes côté client. -
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>
| Flag | Required | Description |
|---|---|---|
--app | Yes | App 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>
| Argument | Description |
|---|---|
segment-id | ID du segment (UUID) |
| Flag | Requis | Description |
|---|---|---|
--app | Oui | ID 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
| Commande | Description |
|---|---|
adapty auth login | S’authentifier via le navigateur en utilisant le flow de l’appareil |
adapty auth logout | Supprimer les identifiants stockés localement |
adapty auth whoami | Vérifier le token auprès du serveur et afficher les informations de l’utilisateur |
adapty auth status | Afficher l’état d’authentification local sans appel au serveur |
adapty auth revoke | Révoquer le token côté serveur et le supprimer localement |
Consultez Authentification pour tous les détails sur chaque commande.