apps

Start installing an app from a zip upload (multipart, field file) or a git source (JSON body).

uv sync runs in the background; only the fast fetch+validate half runs before this returns. Once accepted, a sync/swap failure surfaces on GET /apps/jobs/{id} or the app's own last_job, not here.

Raises: PortalError: 422 manifest_invalid / 422 install_failed / 422 zip_too_large / 507 disk_full for the synchronous fetch+validate half; 422 git_credential_missing / git_credential_rejected / git_not_found / git_network_unreachable / git_unknown for a git source's clone failure; 409 app_exists if the manifest's name is already installed; 409 update_in_progress / 409 app_job_in_progress / 409 platform_not_ready for the mutual-exclusion and platform-readiness refusals; 503 platform_not_ready if apps_dir itself is unavailable.

post/api/v1/apps/install

Request

  • The document declares no server URL.
  • Auth: none declared

Response

Successful Response

Changes