Skip to content

Core concepts ​

ReleaseDesk uses a small set of objects throughout the dashboard, API, and CLI. Understanding where each object lives makes the endpoint paths easier to read.

Organizations and members ​

An organization holds apps, members, testers, tokens, webhooks, and organization settings. Each API path that manages an organization's data contains its organization ID, for example /api/v1/orgs/:orgId/apps. The ID is an opaque value returned by the API. The organization's human-readable slug is used in public page URLs instead.

Members have one of four roles: viewer, developer, admin, or owner. Higher roles include the permissions of lower roles. A user can create an organization after signing in; its creator becomes that organization's owner. An organization can also be linked to a GitHub organization so membership and roles follow GitHub organization and team membership. See Authentication and access for the role and token rules.

Apps and channels ​

An app is the release history for one product. It has a name, an organization-unique slug, an optional description, and settings for its public download page. App IDs appear in management API paths; app slugs appear in public feed and download page URLs.

Creating an app also creates three channels:

ChannelInitial visibilityTypical use
devPrivateInternal builds
betaPrivateBuilds under test
stablePublicProduction downloads and updates

A channel is a named stream of promoted releases for one app. Promoting a release to beta does not promote it to stable. Channel visibility matters for artifact downloads: an artifact on a public channel is available without a dashboard session; private-channel artifacts require organization access or an expiring signed link. A release can be on more than one channel.

Releases and artifacts ​

A release has a version, a build number, optional Markdown notes, and one or more artifacts. An artifact is a specific uploaded file with a platform, architecture, format, optional build variant, size, SHA-256 hash, and SHA-512 hash. ReleaseDesk may also extract package metadata. A parse failure does not necessarily reject an otherwise valid upload; check the returned metadata before publishing.

The upload endpoint finds a release by the combination of app, version, and build number. If that release exists, a new artifact is attached to it. The same release cannot contain two artifacts with the same platform, architecture, format, and variant. Variants (such as tv or opengl) are declared per app; see Releases. Uploading creates a draft release: publishedAt remains empty until the first promotion. Revoking a release removes it from distribution; its artifacts then return 404 from the download endpoint.

An asset is an extra file attached to a release or one artifact, such as symbols or an updater payload. A depot is a named content set whose version can be uploaded or inherited by a later release without uploading its bytes again. See Files, assets, and depots for examples.

Promotion and staged rollout ​

A promotion connects a release to a channel. It can specify a rollout percentage from 1 to 100. Update feeds use a stable bucket derived from the requesting device ID to decide whether that device receives a staged release. A client that sends no X-Device-Id header can receive only releases at 100% rollout. Pausing a rollout, resuming it, changing its percentage, and rolling a channel back are separate management operations.

Rollout selection belongs to update feeds. The public download page displays releases promoted to public channels and is not a per-device rollout client. Do not use the page as proof that a particular installed device has entered a staged rollout.

Public downloads ​

An enabled public page lives at /d/:orgSlug/:appSlug. It shows the latest public release available for each platform and a changelog. The page can be branded and can hide selected platforms. An artifact download lives at /dl/:artifactId; a private artifact needs an organization session or a short-lived signed URL. iOS IPA artifacts can also have an OTA manifest at /dl/:artifactId/manifest.plist when the instance uses HTTPS.

The public page is enabled when an app is created, but it has no downloadable build until a release is promoted to a public channel. Disabling the page returns 404 for that page without deleting the app or its artifacts.

Update feeds ​

Update feeds live under /feeds/v1/. ReleaseDesk provides signed generic JSON, Sparkle, Electron updater, Tauri, MSIX App Installer, and an AppImage stable URL. Feed URLs identify an app by slug and a channel by name. Some formats also need a platform, architecture, current version, or device ID. A client must use the format expected by its updater; the feed formats are different representations of ReleaseDesk's release selection, not interchangeable files.

Testers and distributions ​

A tester is an email address registered within an organization. Testers can belong to groups. A distribution shares one app release with a group, optionally sending email. Automatic distribution rules can share releases when they are promoted to a chosen channel. Testers use email sign-in links and the /t portal; they do not need a GitHub account or organization membership.

Store publications ​

Google Play and App Store Connect connections are configured per app. A publication tracks a release pushed to an external store and its processing or rollout state. These store workflows have their own endpoints and background synchronization. A ReleaseDesk channel promotion does not itself create a Google Play or App Store Connect publication.