Database - Snapshots
Restore Snapshot
Restore a database based on a snapshot of it.
POST
/
v2
/
databases
/
{database_id}
/
snapshots
/
restore
Restore Snapshot
curl --request POST \
--url https://api.squarecloud.app/v2/databases/{database_id}/snapshots/restore \
--header 'Authorization: <authorization>' \
--header 'Content-Type: application/json' \
--data '
{
"snapshotId": "<string>",
"versionId": "<string>"
}
'import requests
url = "https://api.squarecloud.app/v2/databases/{database_id}/snapshots/restore"
payload = {
"snapshotId": "<string>",
"versionId": "<string>"
}
headers = {
"Authorization": "<authorization>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<authorization>', 'Content-Type': 'application/json'},
body: JSON.stringify({snapshotId: '<string>', versionId: '<string>'})
};
fetch('https://api.squarecloud.app/v2/databases/{database_id}/snapshots/restore', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.squarecloud.app/v2/databases/{database_id}/snapshots/restore",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'snapshotId' => '<string>',
'versionId' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.squarecloud.app/v2/databases/{database_id}/snapshots/restore"
payload := strings.NewReader("{\n \"snapshotId\": \"<string>\",\n \"versionId\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<authorization>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.squarecloud.app/v2/databases/{database_id}/snapshots/restore")
.header("Authorization", "<authorization>")
.header("Content-Type", "application/json")
.body("{\n \"snapshotId\": \"<string>\",\n \"versionId\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.squarecloud.app/v2/databases/{database_id}/snapshots/restore")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<authorization>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"snapshotId\": \"<string>\",\n \"versionId\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"status":"success"
}
This route has a rate limit of 1 request every 60 seconds.
string
required
The API key for your account. You can find this in your account settings.
snapshotId and versionId returned from Create Snapshot or List Snapshots. The snapshot’s engine must match the target database’s type, you cannot restore a Redis snapshot onto a MongoDB database, for example.
This overwrites the database’s current data with the snapshot’s contents; there is no undo beyond taking another snapshot first. While the restore is running, Start, Stop and Delete Database are rejected for that database. Rate limited to 1 restore per 60 seconds per user, and 1 restore per 120 seconds per database.
Parameters
string
required
The ID of the database.
string
required
The ID of the snapshot to restore for this database (database_id).
string
required
The version key of the snapshot.
Response
string
Indicates whether the call was successful..
success if successful, error if not.{
"status":"success"
}
Common errors
| Code | HTTP | Meaning |
|---|---|---|
MISSING_PARAMETERS | 400 | snapshotId or versionId was not provided. |
INVALID_SNAPSHOT_ID | 400 | snapshotId is not a valid UUID v4. |
INVALID_VERSION_ID | 400 | versionId does not match the expected format. |
SNAPSHOT_DATABASE_MISMATCH | 400 | The snapshot’s engine does not match this database’s type. |
SNAPSHOT_NOT_FOUND | 404 | No snapshot exists for the given snapshotId and versionId. |
DATABASE_NOT_FOUND | 404 | The database does not exist or is not owned by the caller. |
SNAPSHOT_RESTORE_FAILED | 404 | The cluster rejected the restore operation. |
⌘I
Restore Snapshot
curl --request POST \
--url https://api.squarecloud.app/v2/databases/{database_id}/snapshots/restore \
--header 'Authorization: <authorization>' \
--header 'Content-Type: application/json' \
--data '
{
"snapshotId": "<string>",
"versionId": "<string>"
}
'import requests
url = "https://api.squarecloud.app/v2/databases/{database_id}/snapshots/restore"
payload = {
"snapshotId": "<string>",
"versionId": "<string>"
}
headers = {
"Authorization": "<authorization>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<authorization>', 'Content-Type': 'application/json'},
body: JSON.stringify({snapshotId: '<string>', versionId: '<string>'})
};
fetch('https://api.squarecloud.app/v2/databases/{database_id}/snapshots/restore', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.squarecloud.app/v2/databases/{database_id}/snapshots/restore",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'snapshotId' => '<string>',
'versionId' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.squarecloud.app/v2/databases/{database_id}/snapshots/restore"
payload := strings.NewReader("{\n \"snapshotId\": \"<string>\",\n \"versionId\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<authorization>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.squarecloud.app/v2/databases/{database_id}/snapshots/restore")
.header("Authorization", "<authorization>")
.header("Content-Type", "application/json")
.body("{\n \"snapshotId\": \"<string>\",\n \"versionId\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.squarecloud.app/v2/databases/{database_id}/snapshots/restore")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<authorization>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"snapshotId\": \"<string>\",\n \"versionId\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"status":"success"
}

