Deployments API
All Squash APIs are currently not available for accounts under the free plan. For more details please go to our plans page.
See API Authentication before starting with the API calls below.
You can start any Squash deployment by using the API calls described in this page. We will list below each API call in detail as well as some API request samples.
Start a Deployment
URL format: https://api.squash.io/a/deployment/start/?repo=<repository_name>&branch_name=<branch>&expire=<expire_time>
HTTP Method: GET Success Response Code: 200 Success Response Body: JSON data
Supported fields:
- branch_name: The branch name (non-escaped) as represented in Github/Gitlab/Bitbucket.
- repo: The repository name as represented in Github/Gitlab/Bitbucket.
- expire (optional): This is the expiration time used by Squash's auto-shutdown policies. Available choices:
- 30m, 1h, 2h, 3h, 4h, 5h, 6h, 8h, 10h, 12h, 16h, 1d, 2d, 3d, 4d, 5d, 15d, 30d, 45d, 60d
- If this field is not provided Squash will use the default expire time defined in the repository settings page.
- app_name (optional): This is only needed when using repositories with multiple applications. For such cases you can specify the exact application name in this field as defined in the Squash YAML file.
- expiration_type (optional): If this field is not provided Squash will use the Auto Shutdown policy defined in the repository settings page. Available choices:
- idle: Squash will apply the Inactivity based policy. For example, if you provide the value "4h" for the "expire" field then Squash will automatically shut it down when the deployment is inactive for a 4 hour period.
- datetime: Squash will apply the Date & Time policy. For example, if you specify the value "4h" for the "expire" field then Squash will automatically shut down the deployment after 4 hours from the time the deployment is commissioned, regardless of activity in the deployment.
Request Sample:
$ curl -i -H 'Squash-Key: your-squash-api-key' \
'https://api.squash.io/a/deployment/start/?repo=MyRepoName&branch_name=my-feature-branch&expire=1h'
Stop a Deployment
URL format: https://api.squash.io/a/deployment/stop/?repo=<repository_name>&branch_name=<branch>
HTTP Method: GET Success Response Code: 200 Success Response Body: JSON data
Supported fields:
- branch_name: The branch name (non-escaped) as represented in Github/Gitlab/Bitbucket.
- repo: The repository name as represented in Github/Gitlab/Bitbucket.
- app_name (optional): This is only needed when using repositories with multiple applications. For such cases you can specify the exact application name in this field as defined in the Squash YAML file.
- include_dependencies: This will automatically shutdown any dependencies included in a dependency chain, if defined for a specific deployment. See deployment dependencies for more information.
Request Sample:
$ curl -i -H 'Squash-Key: your-squash-api-key' \
'https://api.squash.io/a/deployment/stop/?repo=MyRepoName&branch_name=my-feature-branch'
Restart a Deployment
URL format: https://api.squash.io/a/deployment/restart/?repo=<repository_name>&branch_name=<branch>
HTTP Method: GET Success Response Code: 200 Success Response Body: JSON data
Supported fields:
- branch_name: The branch name (non-escaped) as represented in Github/Gitlab/Bitbucket.
- repo: The repository name as represented in Github/Gitlab/Bitbucket.
- app_name (optional): This is only needed when using repositories with multiple applications. For such cases you can specify the exact application name in this field as defined in the Squash YAML file.
- include_dependencies: This will automatically shutdown any dependencies included in a dependency chain, if defined for a specific deployment. See deployment dependencies for more information.
- with_cache: By default Squash will restart deployments without the Deployment Cache. If any value is provided for this field the cache will be used if available.
- with_storage: if any value is provided, the restart is performed with Persistent storage (if available).
Sample Request:
$ curl -i -H 'Squash-Key: your-squash-api-key' \
'https://api.squash.io/a/deployment/restart/?repo=MyRepoName&branch_name=my-feature-branch'
Response Sample
{"status": "ready", "ssh_port": "6512", "ssh_ip": "18.118.123.123", "deployment_url": "https://cart-v2-a3fg1.squash.io", "execution_id": "0f0d8890-ad2f-4c38-8457-b166c36bffe3", "msg": "deployment is starting up" }
status
has the following options: “pending”, “ready” and “error”pending
: the deployment has started successfully and is in progressready
: the deployment start up process is ready and you can now connect to the server through SSH.error
: an error message and error code are included within themsg
field
ssh_port
: only available when status isready
ssh_ip
: only available when status isready
deployment_url
: This is the Squash URL of this deployment that you can use for testingexecution_id
: This is a long unique identifier that represents an specific deployment run.msg
: Squash will display status or error messages in this field
Deployment Status
URL format: https://api.squash.io/a/deployment/status/?repo=<repository_name>&branch_name=<branch>
HTTP Method: GET Success Response Code: 200 Success Response Body: JSON data
Supported fields:
- branch_name: The branch name (non-escaped) as represented in Github/Gitlab/Bitbucket.
- repo: The repository name as represented in Github/Gitlab/Bitbucket.
- app_name (optional): This is only needed when using repositories with multiple applications. For such cases you can specify the exact application name in this field as defined in the Squash YAML file.
Request Sample:
$ curl -i -H 'Squash-Key: your-squash-api-key' \
'https://api.squash.io/a/deployment/status/?repo=MyRepoName&branch_name=my-feature-branch'
Sample Response:
The response format for this specific call has two additional fields:
- build_time: this is the time taken to build the application and right before Squash starts performing the checks for a success response.
- total_route_time: this is the build_time + the total time to actually receive a success response and route to the application.
{"status":"ready", "deployment_url":"https://my-branch-1adxq.squash.io", "execution_id":"a2xxad87-a214-4ab3-117b-53998d473db6", "ssh_port":41167, "ssh_ip":"3.211.211.164", "msg":"deployment is up and accepting requests", "build_time":"01m38s", "total_route_time":"01m52s"}
How to SSH to a deployment VM
Once you receive an API response with status ready
you can then assemble an SSH connection as follows. Always use the username test-instance
when connecting to a deployment VM:
$ ssh -p <ssh_port> test-instance@<ssh_ip>
Example:
$ ssh -p 6512 test-instance@18.123.23.123
More details on the Squash deployment environment and how to SSH to Squash VMs.