Product Releases
A product release describes one version of a product: version, releaseDate, channel (stable or insider), public and requiresMaintenance. A release has assemblies that ship with it, license templates created for it, and downloads: the files users install, one per platform and kind. Downloads can be added only to releases of application products (isApplication: true) with a major.minor.patch version.
The downloads of a release are what the Updates feed serves. The feed offers a release only when it is public, is on the channel the client asks for and has an artifact for the client’s platform. A release that requires maintenance can be installed only by licenses whose maintenance covers the release date. Release routes need an API key of an Administrator, LicenseManager or Sales user; the download routes need Administrator or LicenseManager.
Adding downloads
POST /v1/products/{productId}/releases/{releaseId}/downloads accepts two request formats on the same route.
A JSON body registers a file that is hosted somewhere else. sourceKind must be url, the url must be an absolute https:// address without credentials, and you supply size, sha256 (lowercase hex) and sha512 (base64), because the service never sees the bytes. Clients downloading the file are redirected to the URL.
A multipart/form-data body uploads the file itself. The service computes size, sha256 and sha512. Use sourceKind=local (the default) to store it on disk under Extensions:DownloadRoot, which must be configured, or sourceKind=resource to store it in the database, up to Extensions:MaxResourceArtifactBytes (64 MiB by default).
platform is one of win-x64, win-arm64, darwin-arm64, darwin-x64, linux-x64, linux-arm64, and kind is one of installer, zip, delta, blockmap. A release can hold one artifact for each platform and kind. Both formats answer 201 with the id, size and hashes of the new artifact.
JSON (hosted file)
curl -X POST https://your-licensing-server/v1/products/3/releases/1/downloads \
-H 'x-api-key: <key>' \
-H 'Content-Type: application/json' \
-d '{
"releaseDownload": {
"platform": "win-x64",
"kind": "installer",
"fileName": "AcmeApp-Setup-2.1.0.exe",
"sourceKind": "url",
"url": "https://downloads.example.com/acme/AcmeApp-Setup-2.1.0.exe",
"size": 84523776,
"sha256": "<sha-256, lowercase hex>",
"sha512": "<sha-512, base64>"
}
}'PUT .../downloads changes the platform, kind, file name, signature or URL of an artifact, never its size or hashes: to replace the bytes, delete the artifact and add it again. POST .../downloads/verify hashes every uploaded artifact of the release again and returns the ids of those that are missing or no longer match in drifted. Hosted (url) artifacts are not checked.
Pages
Create, update, list and delete the releases of a product.
Assemblies attached to a release.
License templates of a release.
Register, upload, update, verify and delete release artifacts.
Endpoints
| Endpoint | Page |
|---|---|
GET /v1/products/{productId}/releases | Releases |
POST /v1/products/{productId}/releases | Releases |
PUT /v1/products/{productId}/releases | Releases |
DELETE /v1/products/{productId}/releases/{releaseId} | Releases |
GET /v1/products/{productId}/releases/{releaseId}/assemblies | Release Assemblies |
POST /v1/products/{productId}/releases/{releaseId}/assemblies | Release Assemblies |
PUT /v1/products/{productId}/releases/{releaseId}/assemblies | Release Assemblies |
DELETE /v1/products/{productId}/releases/{releaseId}/assemblies/{assemblyId} | Release Assemblies |
GET /v1/products/{productId}/releases/{releaseId}/license-templates | Release License Templates |
GET /v1/products/{productId}/releases/{releaseId}/downloads | Downloads |
POST /v1/products/{productId}/releases/{releaseId}/downloads | Downloads |
PUT /v1/products/{productId}/releases/{releaseId}/downloads | Downloads |
DELETE /v1/products/{productId}/releases/{releaseId}/downloads/{downloadId} | Downloads |
POST /v1/products/{productId}/releases/{releaseId}/downloads/verify | Downloads |