Referencia de comandos del CLI de desarrollador de Adapty

Este artículo lista los comandos de la CLI de Adapty para configurar tu cuenta — apps, niveles de acceso, productos, paywalls, flows, placements y segmentos — con sus argumentos, flags y valores aceptados. Para campañas de Apple Ads, consulta Comandos de Ads Manager.

Flags globales

Estos flags están disponibles en todos los comandos.

FlagDescripción
--jsonMostrar la salida en JSON en lugar de texto formateado
--helpMostrar la ayuda del comando

Todos los comandos list también aceptan flags de paginación:

FlagPor defectoDescripción
--page1Número de página
--page-size20Elementos por página (máx.: 100)

Apps

Gestiona las apps de tu cuenta de Adapty. Para la configuración desde el dashboard, consulta App settings.

adapty apps list

Lista todas las apps de tu cuenta de Adapty.

adapty apps list

Acepta flags de paginación.

adapty apps get

Obtén los detalles de una app específica.

adapty apps get <app-id>
ArgumentoDescripción
app-idID de la app (UUID)

adapty apps create

Crea una nueva app.

adapty apps create --title "My App" --platform ios --apple-bundle-id com.example.app
FlagRequeridoDescripción
--titleTítulo de la app
--platformPlataforma: ios o android. Repite para ambas: --platform ios --platform android
--apple-bundle-idRequerido con --platform iosBundle ID de Apple
--google-bundle-idRequerido con --platform androidBundle ID de Google

adapty apps update

Actualiza una app existente.

adapty apps update <app-id> --title "New Name"
ArgumentoDescripción
app-idID de la app (UUID)
FlagDescripción
--titleNuevo título de la app
--apple-bundle-idNuevo bundle ID de Apple
--google-bundle-idNuevo bundle ID de Google

Se requiere al menos un flag. --platform no se puede cambiar después de la creación.

Niveles de acceso

adapty access-levels list

Lista todos los niveles de acceso de una app.

adapty access-levels list --app <app-id>
FlagRequeridoDescripción
--appID de la app (UUID)

Acepta flags de paginación.

adapty access-levels get

Obtén los detalles de un nivel de acceso específico.

adapty access-levels get --app <app-id> <access-level-id>
ArgumentoDescripción
access-level-idID del nivel de acceso (UUID)
FlagRequeridoDescripción
--appID de la app (UUID)

adapty access-levels create

Crea un nuevo nivel de acceso.

adapty access-levels create --app <app-id> --sdk-id "pro" --title "Pro"
FlagRequeridoDescripción
--appID de la app (UUID)
--sdk-idIdentificador utilizado en el código de la app para comprobar el acceso (por ejemplo, "pro" o "premium")
--titleEtiqueta de visualización en el Adapty Dashboard

adapty access-levels update

Actualiza un nivel de acceso existente.

adapty access-levels update --app <app-id> <access-level-id> --title "Pro Access"
ArgumentoDescripción
access-level-idID del nivel de acceso (UUID)
FlagRequeridoDescripción
--appID de la app (UUID)
--titleNueva etiqueta de visualización

--sdk-id no se puede cambiar después de la creación.

Productos

adapty products list

Lista todos los productos de una app.

adapty products list --app <app-id>
FlagRequeridoDescripción
--appID de la app (UUID)

Acepta flags de paginación.

adapty products get

Obtén los detalles de un producto específico.

adapty products get --app <app-id> <product-id>
ArgumentoDescripción
product-idID del producto (UUID)
FlagRequeridoDescripción
--appID de la app (UUID)

adapty products create

Crea un nuevo producto.

Important

Los IDs del producto de la store y del precio no se pueden cambiar una vez creados. Para usar IDs de store diferentes, crea un nuevo producto.

adapty products create --app <app-id> --title "Monthly" --access-level-id <access-level-id> --period monthly --ios-product-id com.example.monthly
IndicadorRequeridoDescripción
--appID de la app (UUID)
--titleTítulo del producto
--access-level-idID (UUID) del nivel de acceso que desbloquea este producto
--periodPeríodo de suscripción: weekly, monthly, two_months, trimonthly, semiannual, annual, lifetime
--ios-product-idAl menos un store requeridoID del producto en App Store Connect
--android-product-idAl menos un store requeridoID del producto en Google Play Console
--android-base-plan-idRequerido con --android-product-id salvo que se use --period lifetimeID del plan base en Google Play Console
--stripe-product-idAl menos un store requeridoID del producto en Stripe
--stripe-price-idRequerido con --stripe-product-idID de precio en Stripe
--paddle-product-idAl menos un store requeridoID del producto en Paddle
--paddle-price-idRequerido con --paddle-product-idID de precio en Paddle

Cada producto necesita al menos un store: --ios-product-id, --android-product-id, --stripe-product-id o --paddle-product-id. Un mismo producto puede tener IDs para varios stores a la vez.

Para vender un producto en la web mediante Stripe o Paddle, primero conecta el proveedor de pago a Adapty: consulta Stripe y Paddle. Para cada uno de estos stores, pasa el ID del producto y el ID del precio juntos. El comando falla si solo pasas uno de los dos.

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 producto exclusivo de web es válido: puedes crear un producto con IDs de Stripe o Paddle sin necesidad de IDs de App Store o Google Play.

adapty products update

Actualiza un producto existente.

Los IDs de producto de la store y de precio no se pueden cambiar tras la creación y no están disponibles en este comando. Para usar IDs de store diferentes, crea un nuevo producto.

adapty products update --app <app-id> <product-id> --title "Monthly" --access-level-id <access-level-id>
ArgumentoDescripción
product-idID del producto (UUID)
FlagRequeridoDescripción
--appID de la app (UUID)
--titleNoTítulo del producto
--access-level-idNoID (UUID) del nivel de acceso que desbloquea este producto

Paywalls

adapty paywalls list

Lista todos los paywalls de una app.

adapty paywalls list --app <app-id>
FlagRequeridoDescripción
--appID de la app (UUID)

Acepta flags de paginación.

adapty paywalls get

Obtén los detalles de un paywall específico.

adapty paywalls get --app <app-id> <paywall-id>
ArgumentoDescripción
paywall-idID del paywall (UUID)
FlagRequeridoDescripción
--appID de la app (UUID)

adapty paywalls create

Crea un nuevo paywall.

adapty paywalls create --app <app-id> --title "Default Paywall" --product-id <product-id>
FlagRequeridoDescripción
--appID de la app (UUID)
--titleTítulo del paywall
--product-idID (UUID) del producto. Repite para varios productos: --product-id <id1> --product-id <id2>

adapty paywalls update

Reemplaza todos los campos de un paywall existente.

Important

Una vez que un paywall está vinculado a un placement, sus productos no se pueden cambiar. Para usar productos distintos en un paywall en producción, crea un nuevo paywall y actualiza el placement para que apunte a él.

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

Este comando reemplaza todos los campos del paywall, incluida la lista completa de productos.

ArgumentoDescripción
paywall-idID del paywall (UUID)
FlagRequeridoDescripción
--appID de la app (UUID)
--titleTítulo del paywall
--product-idID (UUID) del producto. Repite para varios productos: --product-id <id1> --product-id <id2>

adapty paywalls placements

Lista todos los placements que actualmente usan un paywall determinado.

adapty paywalls placements --app <app-id> <paywall-id>
ArgumentoDescripción
paywall-idID del paywall (UUID)
FlagObligatorioDescripción
--appID de la app (UUID)

Usa este comando antes de cambiar un paywall para ver qué placements se verían afectados.

Los elementos de esta lista no contienen el campo is_active. Para consultar el estado de activación de un placement, usa placements list o placements get.

Flows

Los flows son los paywalls y onboardings que construyes en el Flow & Paywall Builder. El CLI gestiona el registro del flow, su configuración del builder y la publicación. La configuración del builder es un documento JSON extenso que normalmente genera el Flow & Paywall Builder; el CLI no genera uno. Para crear o editar una configuración desde el terminal, usa el skill flow-generator, que ejecuta estos comandos por ti. Antes de publicar, el skill flow-audit verifica si el flow está listo para producción. Los comandos se incluyen aquí como referencia.

Lista de flows de Adapty

Lista todos los flows de una aplicación.

adapty flows list --app <app-id>
FlagRequeridoDescripción
--appID de la app (UUID)

Acepta flags de paginación.

adapty flows get

Obtén los detalles de un flow específico.

adapty flows get --app <app-id> <flow-id>
ArgumentDescription
flow-idFlow ID (UUID)
FlagRequiredDescription
--appYesApp ID (UUID)

La respuesta contiene id, name, status y updated_at. El estado es uno de:

EstadoSignificado
draftEl flow nunca ha sido publicado
publishedLa versión actual está activa
dirtyEl flow fue publicado anteriormente y la versión actual tiene cambios sin publicar. Los usuarios siguen viendo la última versión publicada
publishingLa publicación está en curso
publication_failedLa última publicación falló. Corrige la configuración y vuelve a publicar
archivedEl flow está archivado

adapty flows create

Crea un flow. El nuevo flow tiene un nombre y sin configuración. Para añadir una configuración, usa flows config update.

adapty flows create --app <app-id> --name "Onboarding"
FlagRequeridoDescripción
--appID de la app (UUID)
--nameNombre del flow

adapty flows update

Renombra un flow.

adapty flows update --app <app-id> <flow-id> --name "Onboarding v2"
ArgumentoDescripción
flow-idID del flow (UUID)
FlagObligatorioDescripción
--appID de la app (UUID)
--nameNuevo nombre del flow

adapty flows publish

Publica la versión actual de un flow para tus usuarios.

adapty flows publish --app <app-id> <flow-id>
ArgumentoDescripción
flow-idID del flow (UUID)
FlagRequeridoDescripción
--appID de la app (UUID)
--yes, -yNoPublica sin pedir confirmación. Requerido cuando la salida se redirige por tubería o se usa --json

Dado que publicar cambia lo que ven tus usuarios, el comando muestra el nombre del flow y pide confirmación. Cualquier respuesta distinta de y cancela el comando con código de salida 1. Con --json o en una tubería, el comando rechaza la operación con código de salida 2 en lugar de esperar una respuesta, así que usa --yes en scripts y sesiones de agente.

La publicación es asíncrona: la respuesta devuelve status: publishing y el flow aún no está activo. Consulta flows get periódicamente hasta que el estado pase a published o publication_failed. Si el estado es publication_failed, flows config get indica el motivo.

La publicación falla con HTTP 400 cuando el flow no tiene configuración, cuando la configuración no es publicable o cuando la versión actual ya está activa. Para validar una configuración antes de publicarla, usa flows config validate.

adapty flows config get

Lee la configuración del builder de un flow.

adapty flows config get --app <app-id> <flow-id>
ArgumentDescription
flow-idFlow ID (UUID)
FlagRequiredDescription
--appYesApp ID (UUID)

La respuesta contiene config, remote_configs, status y updated_at. updated_at es una marca de tiempo en milisegundos del último cambio de configuración. Pásala a flows config update como --expected-updated-at para evitar sobrescribir una edición concurrente. Un flow cuya configuración nunca se ha escrito devuelve 404.

Tras un intento de publicación, la respuesta también incluye tres campos que describen cómo fue. Léelos cuando flows get indique publication_failed:

CampoDescripción
publication_statusEl progreso de publicación de esta versión del flow: transforming, transformed, uploading, uploaded, published o failed
transform_errorEl error de transformación sin procesar: un payload JSON con los problemas o una cadena resumen
publication_errorUn mensaje legible para una publicación fallida

adapty flows config update

Escribe la configuración del builder de un flow.

adapty flows config update --app <app-id> <flow-id> --config-file config.json
ArgumentDescription
flow-idID del flow (UUID)
FlagObligatorioDescripción
--appID de la app (UUID)
--configUno de los dosConfiguración del Builder como cadena JSON
--config-fileUno de los dosRuta a un archivo JSON con la configuración del Builder, o - para leer desde stdin
--remote-configsNoArray JSON de entradas {locale, data}, donde data es el Remote Config como cadena
--expected-updated-atNoEl valor updated_at de un flows config get anterior. Si la configuración cambió después de esa lectura, el comando falla en lugar de sobrescribir el cambio. Omítelo para sobrescribir sin condiciones

Escribir la configuración guarda un borrador sin publicarlo. En un flow publicado, la escritura crea una nueva versión: el estado del flow pasa a dirty, y los usuarios siguen viendo la versión publicada hasta que ejecutes flows publish.

adapty flows config validate

Comprueba si una configuración del builder es publicable, sin guardarla.

adapty flows config validate --app <app-id> <flow-id> --config-file config.json
ArgumentoDescripción
flow-idID del flow (UUID)
FlagRequeridoDescripción
--appID de la app (UUID)
--configUno de los dosConfiguración del builder como cadena JSON
--config-fileUno de los dosRuta a un archivo JSON con la configuración del builder, o - para leer desde stdin

La respuesta contiene valid y una lista de issues. Cuando la configuración no es publicable, el comando sale con código 1, para que los scripts puedan usarlo como condición.

adapty flows config preview

Renderiza un archivo de configuración local en el navegador. Este comando no realiza ninguna llamada a la API y no acepta el flag --app.

adapty flows config preview ./config.json --screen <screen-id> --device iphone-14 --orientation portrait
ArgumentoDescripción
config-fileRuta a un archivo JSON de configuración del builder local
FlagPor defectoDescripción
--screenLa primera pantalla del flowID de pantalla a renderizar
--deviceiphone-14Marco de dispositivo en el que renderizar
--orientationportraitportrait o landscape

En un terminal, el comando abre la vista previa en el navegador. Si se usa con una tubería o con --json, imprime la URL en su lugar. La URL contiene toda la configuración y es larga: pásala a una herramienta de capturas de pantalla en lugar de imprimirla. Las configuraciones de más de aproximadamente 32 KB se renderizan lentamente.

adapty flows media upload

Sube una imagen para usarla en la configuración de un flow.

adapty flows media upload --app <app-id> ./hero.png
ArgumentoDescripción
fileRuta al archivo de imagen
FlagRequeridoDescripción
--appID de la app (UUID)

Formatos aceptados: GIF, HEIC, JPEG, PNG, SVG y WebP. La respuesta contiene el id, el name y la url de CDN de la imagen para referenciarla desde la configuración.

Placements

Los placements son los puntos donde tus flows, paywalls y onboardings llegan a los usuarios. El tipo de contenido de un placement se fija en el momento de su creación, por lo que migrar una app de paywalls a flows implica crear nuevos placements en lugar de actualizar los existentes — la skill migrate-placements gestiona estos comandos para hacerlo en bloque.

adapty placements list

Lista todos los placements de una app.

adapty placements list --app <app-id>
FlagObligatorioDescripción
--appID de la app (UUID)

Acepta flags de paginación.

Cada elemento contiene id, developer_id, title e is_active. is_active es true para un placement activo y false para uno inactivo.

adapty placements get

Obtén los detalles de un placement específico.

adapty placements get --app <app-id> <placement-id>
ArgumentoDescripción
placement-idID del placement (UUID)
FlagRequeridoDescripción
--appID de la app (UUID)

La respuesta contiene id, developer_id, title, is_active y un array audiences. is_active es true para un placement activo y false para uno inactivo. Cada entrada de audiencia incluye content_type (paywall o flow), segment_ids, priority y paywall_id o flow_id. La audiencia por defecto tiene segment_ids: [] y el valor de prioridad más alto (la última en evaluarse). Consulta Forma del objeto audiences.

adapty placements create

Crea un nuevo placement.

adapty placements create --app <app-id> --title "Main" --developer-id "main" --audiences '[{"content_type":"paywall","segment_ids":[],"paywall_id":"<paywall-id>","priority":0}]'
FlagObligatorioDescripción
--appID de la app (UUID)
--titleTítulo del placement
--developer-idIdentificador de cadena utilizado en el código de la app para solicitar este placement
--audiencesUno de los dosArray JSON de entradas de audiencia, cada una con un content_type explícito. Ver Formato de audiencias
--paywall-idUno de los dosObsoleto. ID del paywall (UUID). Se envuelve en el lado del cliente en una única audiencia predeterminada

Pasa exactamente uno de --audiences o --paywall-id. Si se pasan ambos o ninguno, se producirá un error.

Warning

--paywall-id está obsoleto y se eliminará. Al usarlo, la CLI muestra una advertencia en stderr y convierte el valor en una audiencia por defecto. Para nuevas automatizaciones, usa --audiences.

adapty placements update

Reemplaza todos los campos de un placement existente.

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

Este comando reemplaza todos los campos del placement, incluida la lista completa de audiencias.

ArgumentoDescripción
placement-idID del placement (UUID)
FlagObligatorioDescripción
--appID de la app (UUID)
--titleTítulo del placement
--developer-idIdentificador de cadena usado en el código de la app para solicitar este placement
--audiencesUno de los dosArray JSON de entradas de audiencia, cada una con un content_type explícito. Ver Formato de audiencias
--paywall-idUno de los dosObsoleto. ID del paywall (UUID). Reemplaza todas las audiencias con una única audiencia predeterminada
Warning

Al usar --paywall-id se sobreescriben todas las audiencias del placement. Las audiencias específicas de segmento se eliminan. Para conservarlas, usa --audiences e incluye todas las entradas que quieras mantener.

Forma de las audiencias

El flag --audiences acepta un array JSON. Cada entrada tiene:

CampoTipoDescripción
content_typestring"paywall" o "flow". Obligatorio en cada entrada. Todas las entradas de un placement deben tener el mismo valor
segment_idsstring[]IDs de segmento objetivo de esta audiencia. Longitud 0 o 1. Un array vacío indica la audiencia predeterminada — el fallback para usuarios que no coinciden con ningún otro segmento
paywall_idstringID (UUID) del paywall que se muestra a los usuarios de esta audiencia. Obligatorio cuando content_type es "paywall"
flow_idstringID (UUID) del flow que se muestra a los usuarios de esta audiencia. Obligatorio cuando content_type es "flow"
prioritynumberBasado en 0, único dentro del placement. Las audiencias se evalúan de menor a mayor; la audiencia predeterminada debe tener el valor más alto

Un placement debe tener exactamente una audiencia predeterminada.

El tipo de contenido de un placement se fija al crearlo, por lo que placements update no puede cambiar un placement de paywall a flow ni al revés. Sirve el flow desde un placement propio; consulta Crear un nuevo placement para tu flow.

El CLI valida cada entrada antes de enviar la solicitud. Si una entrada tiene un content_type ausente o desconocido, o le falta el ID que requiere su content_type, el comando termina con el código 2 y no se envía nada.

Un flow solo puede adjuntarse una vez que ha sido publicado. Un flow en estado draft, o cuya primera publicación aún está en curso, es rechazado por el servidor; el CLI reconoce ese rechazo y finaliza con el código 2, imprimiendo el comando flows publish para ese flow. Para publicar un flow, usa flows publish o el Flow & Paywall Builder, y espera a que su estado llegue a published.

Ejemplo con una audiencia específica y una por defecto:

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

Ejemplo de un placement que sirve un flow publicado a todos los usuarios:

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

Para intercambiar un paywall en varios placements sin perder el enrutamiento por segmento:

  1. Encuentra los placements afectados:

    adapty paywalls placements --app <app-id> <old-paywall-id>
  2. Para cada uno, lee el array completo de audiences:

    adapty placements get --app <app-id> <placement-id> --json
  3. Reemplaza los valores paywall_id coincidentes en el cliente.

  4. Escribe el payload modificado de vuelta:

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

Segmentos

Los segmentos son de solo lectura a través de la CLI. Créalos y edítalos en el Adapty dashboard. Usa estos comandos para buscar los IDs de segmento al componer audiencias de placements.

adapty segments list

Lista todos los segmentos de una app.

adapty segments list --app <app-id>
FlagRequeridoDescripción
--appID de la app (UUID)

Acepta flags de paginación.

adapty segments get

Obtén los detalles de un segmento específico.

adapty segments get --app <app-id> <segment-id>
ArgumentoDescripción
segment-idID del segmento (UUID)
FlagRequeridoDescripción
--appID de la app (UUID)

La respuesta contiene id, title y description. Las reglas de filtro no están expuestas a través de esta API.

Auth

ComandoDescripción
adapty auth loginAutenticarse mediante el navegador usando el flujo de dispositivo
adapty auth logoutBorrar las credenciales almacenadas localmente
adapty auth whoamiVerificar el token con el servidor y mostrar información del usuario
adapty auth statusMostrar el estado de autenticación local sin hacer una llamada al servidor
adapty auth revokeRevocar el token en el servidor y borrarlo localmente

Consulta Autenticación para ver todos los detalles de cada comando.