Description
Returns a single release together with the snapshot it locked in when it was created: the package versions chosen, the deployment plan (steps) as it stood, the variables as they stood, and where the release currently sits in its lifecycle.
There are two ways to name the release, because both are what a caller actually holds:
releaseId- what Create a release handed back to the job that cut it.projectIdtogether withversion- what a later job usually knows, having only ever asked for a version.
Give one or the other. Sending neither is a 400. version is matched exactly first and then as a SemVer equivalent, so 6.1 finds a release stored as 6.1.0 and a caller does not have to guess which spelling the build system used.
Deployments are not part of this response. A release can be deployed any number of times, so its deployments are a paged list in their own right - List deployments - and the status and logs of a single deployment are on Get deployment status.
Parts of the snapshot are secrets and do not leave the server - see below.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
releaseId |
query | string | no | ID of the release. Give this, or projectId and version together. |
projectId |
query | string | no | ID of the project. Only meaningful together with version, and ignored when releaseId is given. |
version |
query | string | no | The release version within that project. Only meaningful together with projectId. Matched exactly first, then as a SemVer equivalent - 6.1 finds 6.1.0. |
Secrets in the snapshot
A release snapshot holds things that must not leave the server, and three of them are withheld here. There is no parameter that turns any of it off.
- Variable values are masked whenever the snapshot encrypted them or the variable is typed
Secret. The value reads back as •••••• withisSecretset totrue- the same test and the same mask the rest of Jaws applies before showing a value. - Step scripts are omitted entirely. A script can carry a literal credential, and a full script body would dominate the response besides.
hasScriptsays whether the step has one. - Step property values are omitted entirely. Step template properties include
SecureStringcontrols, and nothing here could reliably tell a credential apart from an ordinary setting.hasPropertiessays whether the step has any.
Step fields
A release step is a copy of the project step as it stood when the release was cut, so changing the project afterwards does not change what this release will run.
runOn is TargetMachine, Worker or WorkerToCloudTargets.
scriptLanguage is powershell (PowerShell 7), powershell5 (Windows PowerShell 5.1), python or json.
ignoreErrors is the snapshot of the project step's errorAction: true is Continue, false is Stop. onStepFailure (ContinueToNextStep or StopDeployment) and runAfterStop are the separate question of what a failed step does to the rest of the deployment - see Update a project step for how the two interact.
machineOrder (MachineName or TagPriority), onMachineFailure (ContinueToOtherMachines or StopStep) and waitBetweenMachineGroups describe the rolling behaviour; isRolling and rollingGroupId say whether the step is part of a rolling group, and that id names the snapshotted group, not the project's.
Lifecycle phases
phases is empty for a release whose channel binds no lifecycle - such a release can be deployed to any environment its project reaches.
Where there is a lifecycle, each phase reports whether it isAvailable (the release may be deployed into it now), whether it isCompleted, whether it isOptional, and how many of its deploymentsRequired have been completed so far. howToTrigger on a phase environment is Manual or Automatic - Automatic is an environment a completed preceding phase deploys into on its own.
This is the same progression that decides whether a deploy is allowed, so reading it first tells you what Deploy a release will accept: an environment blocked by phase progression is refused there with some environments are not available.
Response
| Field | Type | Description |
|---|---|---|
releaseId |
string | The release's id. |
projectId |
string | The project the release belongs to. |
projectName |
string | That project's name as it reads now, not as it read when the snapshot was taken. |
workspaceId |
string | The workspace the project belongs to. |
version |
string | The release version, as it was stored. |
notes |
string | The release notes, or null. |
metadata |
object | The free-form document attached at creation, exactly as it was stored, or null. See Create a release. |
created |
string | When the release was created, ISO 8601 with offset. |
createdBy |
object | Who created it: userId, name, email. null when the creator no longer resolves. |
channelId |
string | The channel the release is bound to, or null. |
channelName |
string | Name of that channel, or null. |
lifecycleName |
string | Name of the lifecycle the channel binds the release to, or null when the release is not phase-controlled. |
packages |
object[] | The package versions the release pinned. Empty when the project has no packages. |
packages[].feedId |
string | The feed the package is pulled from. |
packages[].packageId |
string | The package id. |
packages[].packageType |
string | The package type - see Package types and naming. |
packages[].version |
string | The exact version pinned into this release. |
steps |
object[] | The deployment plan as it stood when the release was cut, ordered by order. |
steps[].releaseStepId |
string | Id of the snapshotted step. Distinct from the project step it was copied from. |
steps[].originalStepId |
string | Id of the project step it was copied from, which may since have changed or been deleted. |
steps[].order |
integer | Position in the plan. Steps are returned in this order. |
steps[].name |
string | Step name. This is what Deploy a release matches excludeStepNames against. |
steps[].description |
string | Step description, or null. |
steps[].runOn |
string (enum) | TargetMachine, Worker or WorkerToCloudTargets. |
steps[].scriptLanguage |
string (enum) | powershell, powershell5, python or json. |
steps[].hasScript |
boolean | Whether the step has a script body. The body itself is never returned. |
steps[].hasProperties |
boolean | Whether the step has step-template property values. The values themselves are never returned. |
steps[].ignoreErrors |
boolean | The snapshot of the step's errorAction: true is Continue, false is Stop. |
steps[].environmentIds |
string[] | Environments the step is restricted to. Empty means every environment of the deployment. |
steps[].machineNameFilter |
string[] | Machine filter carried into the snapshot. Empty means no filter. |
steps[].workerTagId |
string | Tag identifying the worker pool, or null. |
steps[].parallelMachines |
integer | How many machines the step runs on at once. |
steps[].parallelCloudTargets |
integer | How many cloud targets the step runs on at once, or null. |
steps[].isRolling |
boolean | Whether the step is part of a rolling group. |
steps[].rollingGroupId |
string | The snapshotted rolling group the step belongs to, or null. Not the project's group id. |
steps[].machineOrder |
string (enum) | MachineName or TagPriority. |
steps[].onMachineFailure |
string (enum) | ContinueToOtherMachines or StopStep. |
steps[].onStepFailure |
string (enum) | ContinueToNextStep or StopDeployment. |
steps[].runAfterStop |
boolean | Whether the step still runs after an earlier step stopped the deployment. |
steps[].waitBetweenMachineGroups |
boolean | Whether each tag rank finishes before the next one starts. |
variables |
object[] | The variables as they stood when the release was cut, ordered by name. Secret values are masked. |
variables[].name |
string | Variable name, as referenced from scripts and step properties. |
variables[].description |
string | Variable description, or null. |
variables[].type |
string | Text, Secret, Script, Number, Boolean, Date, Map or Json. |
variables[].values |
object[] | The scoped values of the variable. |
variables[].values[].value |
string | The value, or the mask when it is a secret. |
variables[].values[].isSecret |
boolean | true when the value was masked - set when the snapshot encrypted it or the variable is typed Secret. |
variables[].values[].environmentsFilter |
string[] | Environments this value applies to. Empty means all. |
variables[].values[].machineFilter |
string[] | Machines this value applies to. Empty means all. |
variables[].values[].cloudTargetFilter |
string[] | Cloud targets this value applies to. Empty means all. |
variables[].values[].stepFilter |
string[] | Steps this value applies to. Empty means all. |
phases |
object[] | Where the release sits in its lifecycle, ordered by sortOrder. Empty when the release is not phase-controlled. |
phases[].phaseId |
string | Id of the snapshotted phase. |
phases[].name |
string | Phase name. |
phases[].sortOrder |
integer | Position in the lifecycle. Phases are returned in this order. |
phases[].isAvailable |
boolean | Whether the release may be deployed into this phase's environments now. |
phases[].isCompleted |
boolean | Whether the phase's progress requirement has been met. |
phases[].isOptional |
boolean | Whether the phase can be skipped without blocking the ones after it. |
phases[].isAnyDeploymentRunning |
boolean | Whether a deployment into this phase is in flight, or null when that is not known. |
phases[].deploymentsRequired |
integer | How many completed deployments the phase needs before it counts as completed. |
phases[].deploymentsCompleted |
integer | How many it has had. |
phases[].environments |
object[] | The environments in the phase. |
phases[].environments[].environmentId |
string | The environment's id. |
phases[].environments[].environmentName |
string | The environment's name. |
phases[].environments[].howToTrigger |
string (enum) | Manual or Automatic. An Automatic environment is deployed into on its own once the preceding phase completes. |
phases[].environments[].deploymentsCompleted |
integer | How many deployments of this release into this environment have completed. |
Errors
| Status | Meaning |
|---|---|
400 |
Neither a releaseId nor a projectId and version pair was given - the response reads a release ID, or a project ID together with a version, is required. |
400 |
Invalid releaseId. A release in another organization is reported the same way as one that does not exist, so an id cannot be probed for existence. |
400 |
Invalid projectId, or no release with that version exists for the project. |
401 |
Missing or invalid Basic auth credentials, or the service account lacks permission to view releases of this project. |