Skip to content

Upload a new release

POST
/v1/apps/{appName}/deployments/{deploymentName}/release
curl --request POST \
--url https://api.aetherpush.com/v1/apps/example/deployments/example/release \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: multipart/form-data' \
--form package=@file \
--form 'packageInfo={"appVersion":"1.0.0","description":"Bug fixes","isMandatory":false}'

Uploads a new release package to the deployment. Accepts either a flat JS bundle file or a zip archive containing the bundle plus assets. The packageInfo part is a JSON-encoded string containing release metadata (appVersion, description, isMandatory, rollout, etc.).

Rate limited to 100 uploads per IP per 15 minutes.

Returns 409 if the uploaded package is byte-identical to the current release on this deployment, or if the previous release is still in an unfinished rollout.

appName
required
string
deploymentName
required
string
Media typemultipart/form-data
object
package
required

The package archive to upload. Either a flat JS bundle file or a zip containing the bundle plus assets. Sent as a multipart file part.

string format: binary
packageInfo
required

JSON-encoded string containing a PackageInfo object. Note this is a string field in the multipart body, not a nested JSON object. Example value (URL-encoded by the multipart encoder):

{"appVersion":"1.0.0","description":"Bug fixes","isMandatory":false}

See the PackageInfo schema for valid fields.

string

Release uploaded and committed.

Media typeapplication/json
object
package
required
object
appVersion
string
blobUrl
required

Signed URL to download the package bundle.

string format: uri
description
string
diffPackageMap

Map of source package hash to diff blob info.

object
key
additional properties
object
size
required
integer format: int64
url
required
string format: uri
isDisabled
boolean
isMandatory
boolean
label
string
manifestBlobUrl

Signed URL to the package manifest (file hash map).

string format: uri
originalDeployment

Set when releaseMethod is Promote.

string
originalLabel

Set when releaseMethod is Promote or Rollback.

string
packageHash
string
releasedBy

Account email of the releaser.

string format: email
releaseMethod
string
Allowed values: Upload Promote Rollback
rollout
integer | null
>= 1 <= 100
size
required

Package size in bytes.

integer format: int64
uploadTime

Unix timestamp in milliseconds.

integer format: int64
Example
{
"package": {
"appVersion": "1.0.0",
"label": "v3",
"releaseMethod": "Upload"
}
}
Location
string

Missing file, invalid packageInfo JSON, or validation error.

Media typeapplication/json
One of:
object
error
required

Human-readable error message.

string
requestId

Unique identifier for the request, also exposed as the X-Request-Id response header.

string
Example
{
"error": "The requested resource was not found.",
"requestId": "req_abc123"
}

Unauthenticated, or not a collaborator.

Media typeapplication/json
object
error
required

Human-readable error message.

string
requestId

Unique identifier for the request, also exposed as the X-Request-Id response header.

string
Example
{
"error": "The requested resource was not found.",
"requestId": "req_abc123"
}

App or deployment not found.

Media typeapplication/json
object
error
required

Human-readable error message.

string
requestId

Unique identifier for the request, also exposed as the X-Request-Id response header.

string
Example
{
"error": "The requested resource was not found.",
"requestId": "req_abc123"
}

Either the uploaded package is identical to the current release on this deployment, or the previous release is still in an unfinished rollout.

Media typeapplication/json
object
error
required

Human-readable error message.

string
requestId

Unique identifier for the request, also exposed as the X-Request-Id response header.

string
Example
{
"error": "The requested resource was not found.",
"requestId": "req_abc123"
}

Upload rate limit exceeded.

Media typeapplication/json
object
error
required

Human-readable error message.

string
requestId

Unique identifier for the request, also exposed as the X-Request-Id response header.

string
Example
{
"error": "The requested resource was not found.",
"requestId": "req_abc123"
}