Favicon

You are here: Home > Distribución de Apps > API > Publicaciones > PUT - Actualizar una Publicación

PUT - Actualizar una Publicación

Actualiza Publicaciones existentes de Applivery usando la Integrations API o la Workspace API. Controla seguridad, visibilidad, filtros de Build y más.

10 min read

TL;DR

Actualiza tus aplicaciones publicadas en Applivery vía API usando la API de Integraciones (por app) o la API de Workspace (multi-app).

Actualiza la configuración de una Publicación existente. Todos los campos actualizables del endpoint POST – Crear una Publicación están soportados aquí, incluyendo el modo de seguridad, el filtro de Build, el control de acceso, la visibilidad, las sobreescrituras de branding y los términos legales.

Warning

Esta es una sustitución completa (PUT), no una actualización parcial (PATCH). Cualquier campo no incluido en el cuerpo de la petición se reseteará a su valor por defecto. Recupera siempre el estado actual de la Publicación primero e incluye todos los campos que quieras conservar.

Applivery proporciona dos APIs independientes para actualizar 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 actualizan el filtro de Build de una Publicación tras una nueva subida Platform engineers que gestionan Publicaciones de varias Apps
Warning

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 actualizar 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

PUT https://api.applivery.io/v1/integrations/distributions/{publishedApplicationId}

Autenticación

Authorization: Bearer <your_app_token>

Formato de la petición

application/json

Parámetros de ruta

Parámetro Tipo Obligatorio Descripción
publishedApplicationId String El identificador único de la Publicación a actualizar. P. ej. 552ae3cfcb5abfc58d733b81. Devuelto por POST – Crear una Publicación y GET – Lista de Publicaciones.

Parámetros

Identidad y visibilidad

Parámetro Tipo Descripción
slug String El identificador amigable para URL de esta Publicación. Debe ser único en el Workspace. Cambiar el slug cambia la URL de la Publicación — los enlaces existentes dejarán de funcionar.
visibility String Visibilidad de la Publicación. Valores permitidos: active, inactive, unlisted.

Seguridad y control de acceso

Parámetro Tipo Descripción
security String Modo de autenticación. Valores permitidos: public, password, logged.
password String Obligatorio cuando security es password. La contraseña que deben introducir los usuarios para acceder a la Publicación.
groups Array 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. [["group1","group2"],["group3"]]. Solo aplica cuando security es logged.
activateUserAudiences Boolean Si se habilita el acceso basado en audiencias para esta Publicación.
userAudienceMap Array Array de asignaciones de audiencias para esta Publicación.
userAudienceMap[].id String ID de la audiencia a asignar.
userAudienceMap[].notifyNewBuildsProcessed Boolean Si los usuarios de esta audiencia deben recibir notificaciones cuando se procesa un nuevo Build.
allowedCountries Array Códigos de país ISO 3166-1 alpha-2 desde los que se permite el acceso. No puede combinarse con blockedCountries.
blockedCountries Array Códigos de país ISO 3166-1 alpha-2 desde los que se bloquea el acceso. No puede combinarse con allowedCountries.

Filtro de selección de Build

Parámetro Tipo Descripción
filter.type String Estrategia de selección de Build. Valores permitidos: last, build, Builds, gitBranch, gitTag, tag.
filter.value String Obligatorio para los tipos de filtro gitBranch, gitTag y tag. El nombre de rama, git tag o build tag a coincidir.
filter.ios String ID de la Build para iOS. Usado cuando filter.type es build.
filter.android String ID de la Build para Android. Usado cuando filter.type es build.
filter.macos String ID de la Build para macOS. Usado cuando filter.type es build.
filter.windows String ID de la Build para Windows. Usado cuando filter.type es build.
filter.Builds Array Array de objetos { buildPlatform, id }. Usado cuando filter.type es Builds. Soporta plataformas personalizadas: ios, macos, android, ps4, ps5, switch, xbox-one, xbox-series.

Opciones de visualización de Builds

Parámetro Tipo Descripción
tags Array Tags para categorizar esta Publicación.
showHistory Boolean Si los usuarios pueden explorar e instalar Builds anteriores.
showDevInfo Boolean Si se muestra información técnica de la Build (metadatos de git, detalles del certificado, tags) a los usuarios.
expirationDate String 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". Establece en null para eliminar una fecha de caducidad existente.

Términos legales

Parámetro Tipo Descripción
terms.active Boolean Si los usuarios deben aceptar los términos legales antes de acceder a la Publicación.
terms.text String El texto de los términos legales a mostrar. Obligatorio cuando terms.active es true.

Sobreescrituras de branding y configuración de app

Parámetro Tipo Descripción
configuration.application.name String Sobreescribe el nombre de la App mostrado en la Publicación.
configuration.application.description String Sobreescribe la descripción de la App mostrada en la Publicación.
configuration.branding.logo String Sobreescribe el logo de la store para esta Publicación.
configuration.branding.primaryColor String Sobreescribe el color de branding primario (formato hex). P. ej. #FF5733.
configuration.branding.buttonColor String Sobreescribe el color del botón (formato hex).

Ejemplo de petición

Actualiza una Publicación para apuntar a una rama de git específica y restringe el acceso a usuarios conectados de un grupo concreto:

curl 'https://api.applivery.io/v1/integrations/distributions/552ae3cfcb5abfc58d733b81' \
  -X PUT \
  -H 'Authorization: Bearer YOUR_APP_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
    "slug": "my-app-staging",
    "security": "logged",
    "visibility": "active",
    "filter": {
      "type": "gitBranch",
      "value": "develop"
    },
    "groups": [["qa-team"]],
    "showHistory": true,
    "showDevInfo": true
  }'

Respuestas

{
  "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 actualizar Publicaciones a nivel de Workspace usando una sola credencial en varias Apps.

La autenticación usa un token de cuenta de servicio. Para crear un token de una cuenta de servicio, consulta Cuentas de servicio.

Endpoint

PUT https://api.applivery.io/v1/organizations/{organizationId}/stores/{storeId}/pubApps/{publishedApplicationId}

Parámetros de ruta

Parámetro Tipo Obligatorio Descripción
organizationId String El identificador único de tu organización en Applivery.
storeId String El identificador único de la store (proyecto de app).
publishedApplicationId String El identificador único de la Publicación a actualizar.

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/PUB_APP_ID' \
  -X PUT \
  -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.


Gestión de usuarios con acceso OTP

El acceso OTP (One-Time Password) es una opción de seguridad a nivel de Publicación que te permite compartir Builds de forma segura con usuarios externos — freelancers, estudios de QA, contratistas — sin que necesiten tener una cuenta de Applivery ni pasar por tu SSO. Esto es especialmente útil para organizaciones con políticas de SSO estrictas que necesitan compartir Builds externamente sin relajar su configuración global de autenticación.

El acceso OTP se configura por Publicación y no afecta a ninguna otra Publicación ni a la configuración global de autenticación de la Store Enterprise.

Note

La configuración OTP solo puede aplicarse en modo de edición — debe configurarse después de que la Publicación ya haya sido creada. Actívala estableciendo security en "private" y habilitando OTP en el panel de Applivery, o usando el endpoint API descrito a continuación para añadir usuarios a la lista de acceso.

Note

Los usuarios OTP tienen ámbito sobre la Publicación específica a la que accedieron. No pueden explorar ni acceder a otras Publicaciones de la Store Enterprise.

Cómo funciona

Por parte del administrador:

  1. Crea o actualiza una Publicación con el acceso OTP habilitado (security: "private" + lista de acceso OTP configurada).

  2. Añade las direcciones de email de los usuarios externos autorizados a la lista de acceso OTP, y configura el ciclo de vida y la configuración de uso único de cada usuario.

Por parte del usuario:

  1. El usuario visita la URL de la Publicación e introduce su dirección de email.

  2. Si su email está en la lista de acceso, recibe un OTP con tiempo limitado por email (válido 5–10 minutos).

  3. Introduce el código para verificar su identidad y obtener acceso para descargar la App.

  4. Si el uso único está habilitado, su email se elimina automáticamente de la lista de acceso tras la primera descarga correcta.

Añadir usuarios OTP mediante API

Los usuarios OTP se gestionan de forma independiente a la configuración de la Publicación en sí, a través de un endpoint dedicado. Este endpoint se llama después de crear o actualizar una Publicación para añadir usuarios a su lista de acceso OTP.

Endpoint

POST https://api.applivery.io/v1/organizations/{organizationSlug}/stores/{storeId}/otp-users

Autenticación

Authorization: Bearer <your_service_account_token>

Parámetros de ruta

Parámetro Tipo Obligatorio Descripción
organizationSlug String El slug amigable para URL de tu organización en Applivery (no el ID numérico).
storeId String El identificador único de la store a la que pertenece la Publicación.

Parámetros del cuerpo

Parámetro Tipo Obligatorio Descripción
email String La dirección de email del usuario externo a añadir a la lista de acceso OTP.
temporal Boolean No Si el usuario debe eliminarse automáticamente tras 30 días. Por defecto: true. Establece en false para acceso persistente.
singleUse Boolean No Si el acceso del usuario debe invalidarse tras la primera descarga correcta. Una vez descargado, el email se elimina de la lista de acceso y el usuario debe ser añadido de nuevo para recuperar el acceso. Por defecto: false.

Ejemplo de petición

curl 'https://api.applivery.io/v1/organizations/my-org-slug/stores/STORE_ID/otp-users' \
  -X POST \
  -H 'Authorization: Bearer YOUR_SERVICE_ACCOUNT_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
    "email": "[email protected]",
    "temporal": true,
    "singleUse": false
  }'

Respuestas

{
  "status": true,
  "data": {
    "id": "string",
    "email": "[email protected]",
    "temporal": true,
    "singleUse": false,
    "createdAt": "string"
  }
}

El email ya existe en la lista de acceso OTP para esta store.

Token de cuenta de servicio inválido o ausente.

Slug de organización o ID de store no encontrados.

Referencia de opciones de configuración OTP

Opción Descripción
Lista de acceso La lista de direcciones de email autorizadas para solicitar un OTP para esta Publicación.
Ciclo de vida del usuario temporal: true — los usuarios OTP se eliminan automáticamente tras 30 días. temporal: false — los usuarios OTP se conservan indefinidamente.
Acceso de uso único singleUse: true — el email se elimina de la lista de acceso tras la primera descarga correcta. El usuario no puede solicitar otro OTP a menos que un administrador le añada de nuevo.
Caducidad del OTP Los OTPs tienen tiempo limitado y son de uso único — válidos 5–10 minutos y no pueden reutilizarse aunque estén dentro del período de validez.
Notificaciones de nuevos Builds Cuando se publica un nuevo Build, los usuarios OTP de la lista de acceso pueden recibir un email de notificación con un OTP nuevo, lo que les permite descargar sin solicitar acceso de nuevo manualmente.

Cuándo usar el acceso OTP

Escenario Enfoque recomendado
Compartir una Build con un freelancer externo para una revisión puntual OTP + singleUse: true
Compartir una beta con un estudio de QA externo durante un período de prueba limitado OTP + Publicación con caducidad
Distribuir a una lista de testers externos sin cuentas permanentes OTP + temporal: true (limpieza automática a los 30 días)
Colaboradores externos a largo plazo que necesitan acceso continuado Publicación privada + acceso basado en audiencias en lugar de OTP
Tip

Para un control máximo sobre el acceso externo con límite de tiempo, combina OTP con una Publicación con caducidad. Esto garantiza que el acceso esté tanto verificado por identidad (a través de la lista OTP) como limitado en el tiempo (a través de la caducidad de la Publicación) — sin necesidad de limpieza manual una vez superada la fecha límite.

Cualquier campo no incluido en el cuerpo de la petición se reseteará a su valor por defecto. Es una sustitución completa, no una actualización parcial.

Applivery ofrece la Integrations API (para actualizaciones por app con App API Token) y la Workspace API (para actualizaciones a nivel de workspace con token de una cuenta de servicio).

Usa la Integrations API para actualizar publicaciones dentro del ámbito de una sola app, normalmente en pipelines de CI/CD. Usa un App API Token para la autenticación.

Usa la Workspace API para automatización a nivel de workspace en varias apps. Requiere un token de una cuenta de servicio y `organizationId` y `storeId` explícitos en la ruta.

Autentícate con la Integrations API usando un App API Token en la cabecera `Authorization`: `Authorization: Bearer <your_app_token>`.

Autentícate con la Workspace API usando un token de una cuenta de servicio en la cabecera `Authorization`: `Authorization: Bearer <your_service_account_token>`.

Se usa una petición `PUT` para actualizar una publicación, tanto con la Integrations API como con la Workspace API.

Establece el parámetro `security` en `logged` y proporciona un array de nombres de grupos en el parámetro `groups`. Soporta lógica AND/OR para múltiples grupos.

Last updated: June 8, 2026