// Releases

Get a release

Read one release with the snapshot it will deploy - packages, steps, variables and lifecycle phases.

GET/api/release/details

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.
  • projectId together with version - 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

NameInTypeRequiredDescription
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 •••••• with isSecret set to true - 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. hasScript says whether the step has one.
  • Step property values are omitted entirely. Step template properties include SecureString controls, and nothing here could reliably tell a credential apart from an ordinary setting. hasProperties says 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

FieldTypeDescription
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

StatusMeaning
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.