Crea una nueva Publicación en la Store Enterprise de Applivery. Una Publicación es la configuración de distribución que controla cómo y a quién se pone a disposición una Build específico (o conjunto de Builds) de una App — incluyendo su slug de URL, modo de seguridad, visibilidad, filtros de acceso y sobreescrituras de branding.
Para una visión general conceptual de las Publicaciones y su relación con las Builds, consulta Cómo distribuir tus apps.
Applivery proporciona dos APIs independientes para crear Publicaciones, cada una con una credencial de autenticación diferente.
Cómo elegir la API correcta
| Integrations API | Workspace API | |
|---|---|---|
| Diseñada para | Pipelines de CI/CD por app | Automatización a nivel de Workspace en varias Apps |
| Autenticación | App API Token (por app) | token de una cuenta de servicio (a nivel de Workspace) |
| Contexto de app | Implícito — el token ya está vinculado a una App | Explícito — se requieren organizationId y storeId en la ruta |
| Usuarios típicos | Scripts que publican automáticamente tras subir una Build | Platform engineers que gestionan Publicaciones de varias Apps |
El acceso a las distintas APIs puede no estar disponible en tu plan actual. Consulta la disponibilidad en nuestra página de precios.
Integrations API
Usa este endpoint para crear Publicaciones dentro del ámbito de una sola app. La autenticación usa un App API Token, vinculado a la App específica.
Para crear un App API Token, consulta Autenticación de la API de Apps.
Endpoint
POST https://api.applivery.io/v1/integrations/distributions
Autenticación
Authorization: Bearer <your_app_token>
Formato de la petición
application/json
Parámetros
Los parámetros están agrupados por área de configuración.
Parámetros obligatorios
| Parámetro | Tipo | Descripción |
|---|---|---|
slug |
String | El identificador amigable para URL de esta Publicación. Debe ser único en tu Workspace. Se usa para construir la URL de la Publicación: yourworkspace.applivery.com/{slug}. Solo se permiten letras minúsculas, números y guiones. |
security |
String | Modo de autenticación. Valores permitidos: public, password, logged. Consulta los modos de seguridad a continuación. |
visibility |
String | Visibilidad de la Publicación. Valores permitidos: active, inactive, unlisted. Consulta los modos de visibilidad a continuación. |
filter.type |
String | Estrategia de selección de Build. Valores permitidos: last, build, Builds, gitBranch, gitTag, tag. Consulta la configuración de filtros a continuación. |
Filtro de selección de Build
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
filter.type |
String | Sí | Estrategia de selección de Build. Consulta la configuración de filtros. |
filter.value |
String | Condicional | Obligatorio para los tipos de filtro gitBranch, gitTag y tag. El nombre de rama, git tag o build tag a coincidir. |
filter.ios |
String | Condicional | ID de la Build para iOS. Obligatorio cuando filter.type es build y la App tiene Builds de iOS. |
filter.android |
String | Condicional | ID de la Build para Android. Obligatorio cuando filter.type es build y la App tiene Builds de Android. |
filter.macos |
String | Condicional | ID de la Build para macOS. Obligatorio cuando filter.type es build y la App tiene Builds de macOS. |
filter.Builds |
Array | Condicional | Obligatorio cuando filter.type es Builds. Array de objetos con buildPlatform e id. |
filter.Builds[].buildPlatform |
String | Condicional | Identificador de plataforma. Valores admitidos: ios, macos, android, ps4, ps5, switch, xbox-one, xbox-series. |
filter.Builds[].id |
String | Condicional | ID de la Build para la plataforma especificada. |
Control de acceso
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
password |
String | Condicional | Obligatorio cuando security es password. La contraseña que deben introducir los usuarios para acceder a la Publicación. |
groups |
Array | No | Restringe el acceso a Grupos de usuarios específicos. Soporta lógica AND/OR. Cada array interno es una cláusula AND; cada elemento externo es una cláusula OR. P. ej. para permitir usuarios en group1 Y group2, O usuarios en group3: [["group1","group2"],["group3"]]. Solo aplica cuando security es logged. |
activateUserAudiences |
Boolean | No | Si se habilita el acceso basado en audiencias para esta Publicación. |
userAudienceMap |
Array | No | Array de asignaciones de audiencias. Cada elemento define una audiencia y su preferencia de notificación. |
userAudienceMap[].id |
String | Condicional | ID de la audiencia a asignar a esta Publicación. |
userAudienceMap[].notifyNewBuildsProcessed |
Boolean | No | Si los usuarios de esta audiencia deben recibir notificaciones cuando se procesa un nuevo Build. |
allowedCountries |
Array | No | Códigos de país ISO 3166-1 alpha-2 desde los que se permite el acceso. Si se configura, solo los usuarios de estos países pueden acceder a la Publicación. No puede combinarse con blockedCountries. |
blockedCountries |
Array | No | Códigos de país ISO 3166-1 alpha-2 desde los que se bloquea el acceso. No puede combinarse con allowedCountries. |
Opciones de visualización de Builds
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
tags |
Array | No | Tags para categorizar esta Publicación. P. ej. ["staging", "sprint-42"]. |
showHistory |
Boolean | No | Si los usuarios pueden explorar e instalar Builds anteriores de la App. Por defecto: false. |
showDevInfo |
Boolean | No | Si se muestra información técnica de la Build (metadatos de git, detalles del certificado, tags) a los usuarios. Por defecto: false. |
expirationDate |
String | No | Timestamp ISO 8601 a partir del cual la Publicación deja de estar disponible para descarga. Útil para distribuciones con fecha límite, programas beta o campañas promocionales. P. ej. "2025-12-31T23:59:59Z". Una vez caducada, la Publicación se comporta como si estuviera en inactive. |
Términos legales
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
terms.active |
Boolean | No | Si los usuarios deben aceptar los términos legales antes de acceder a la Publicación. |
terms.text |
String | Condicional | Obligatorio cuando terms.active es true. El texto de los términos legales a mostrar. |
Sobreescrituras de branding y configuración de app
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
configuration.application.name |
String | No | Sobreescribe el nombre de la App mostrado en la Publicación. |
configuration.application.description |
String | No | Sobreescribe la descripción de la App mostrada en la Publicación. |
configuration.branding.logo |
String | No | Sobreescribe el logo de la store para esta Publicación. |
configuration.branding.primaryColor |
String | No | Sobreescribe el color de branding primario (formato hex). P. ej. #FF5733. |
configuration.branding.buttonColor |
String | No | Sobreescribe el color del botón (formato hex). |
Modos de seguridad
| Valor | Descripción |
|---|---|
public |
No se requiere autenticación. Cualquier persona con la URL de la Publicación puede acceder y descargar. |
password |
Se requiere una contraseña (especificada en el campo password) para acceder a la Publicación. |
logged |
Los usuarios deben estar conectados con una cuenta de Applivery o tu SSO de Workspace para acceder a la Publicación. |
Modos de visibilidad
| Valor | Descripción |
|---|---|
active |
La Publicación está listada en la Store Enterprise y accesible para todos los usuarios autorizados. |
inactive |
La Publicación no es accesible para nadie. |
unlisted |
La Publicación no está listada en la Store Enterprise, pero es accesible para cualquier persona que tenga la URL directa. |
Configuración de filtros
filter.type |
Descripción |
|---|---|
last |
Sirve siempre la Build procesado más recientemente. No se necesita filter.value adicional. |
build |
Sirve una Build específico, identificado por filter.ios, filter.android o filter.macos. |
Builds |
Sirve Builds específicos por plataforma, definidos en filter.Builds. Soporta plataformas personalizadas. |
gitBranch |
Sirve el último Build que coincide con la rama git especificada en filter.value. P. ej. develop. |
gitTag |
Sirve la Build que coincide con el git tag especificado en filter.value. P. ej. v2.4.0. |
tag |
Sirve las Builds que coinciden con la Build tag de Applivery especificado en filter.value. |
Ejemplos de petición
Publicación mínima — pública, sirviendo siempre el último Build:
curl 'https://api.applivery.io/v1/integrations/distributions' \
-X POST \
-H 'Authorization: Bearer YOUR_APP_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"slug": "my-app-staging",
"security": "public",
"visibility": "active",
"filter": {
"type": "last"
}
}'
Publicación privada con control de acceso por grupos e historial de builds:
curl 'https://api.applivery.io/v1/integrations/distributions' \
-X POST \
-H 'Authorization: Bearer YOUR_APP_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"slug": "my-app-internal",
"security": "logged",
"visibility": "active",
"filter": {
"type": "gitBranch",
"value": "develop"
},
"groups": [["qa-team", "developers"]],
"showHistory": true,
"showDevInfo": true,
"tags": ["internal", "qa"]
}'
Respuestas
El campo distributionUrl de la respuesta contiene la URL pública completa de la Publicación creada. Comparte esta URL con tus usuarios para darles acceso a la Publicación.
{
"status": true,
"data": {
"id": "string",
"updatedAt": "string",
"createdAt": "string",
"application": "string",
"applicationInfo": {
"id": "string",
"slug": "string",
"name": "string",
"picture": "string"
},
"slug": "string",
"filter": {
"type": "last",
"value": "string",
"ios": "string",
"android": "string",
"windows": "string",
"macos": "string",
"builds": [
{
"buildPlatform": "string",
"id": "string"
}
]
},
"security": "public",
"tags": ["string"],
"groups": [["string"]],
"visibility": "active",
"showHistory": true,
"showDevInfo": true,
"distributionUrl": "string",
"terms": {
"active": true,
"text": "string"
}
}
}
El slug ya está en uso.
{
"status": false,
"error": {
"code": 5024,
"message": "Slug already used"
}
}
{
"status": false,
"error": {
"code": 4002,
"message": "No auth token"
}
}
{
"status": false,
"error": {
"code": 3001,
"message": "Entity not found"
}
}
Workspace API
Usa este endpoint para crear Publicaciones a nivel de Workspace — por ejemplo, en flujos de trabajo de platform engineering que operan en varias Apps usando una sola credencial.
La autenticación usa un token de cuenta de servicio, con ámbito de Workspace y no vinculado a ninguna app individual.
Para crear un token de una cuenta de servicio, consulta Cuentas de servicio.
Endpoint
POST https://api.applivery.io/v1/organizations/{organizationId}/stores/{storeId}/pubApps
Parámetros de ruta
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
organizationId |
String | Sí | El identificador único de tu organización en Applivery. |
storeId |
String | Sí | El identificador único de la store (proyecto de app) en la que crear la Publicación. |
Autenticación
Authorization: Bearer <your_service_account_token>
Ejemplo de petición
curl 'https://api.applivery.io/v1/organizations/ORG_ID/stores/STORE_ID/pubApps' \
-X POST \
-H 'Authorization: Bearer YOUR_SERVICE_ACCOUNT_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"slug": "my-app-release",
"security": "public",
"visibility": "active",
"filter": {
"type": "last"
}
}'
Los parámetros del cuerpo de la petición y el esquema de respuesta son idénticos a los de la Integrations API.