Emit cutover swap commands
curl --request POST \
--url https://api.arcuserp.com/v1/entities/{entity_id}/migration/cutover/swap \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"snapshot_id": "<string>",
"freeze_token": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"lambda_alias_target_version": "<string>"
}
'import requests
url = "https://api.arcuserp.com/v1/entities/{entity_id}/migration/cutover/swap"
payload = {
"snapshot_id": "<string>",
"freeze_token": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"lambda_alias_target_version": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
snapshot_id: '<string>',
freeze_token: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
lambda_alias_target_version: '<string>'
})
};
fetch('https://api.arcuserp.com/v1/entities/{entity_id}/migration/cutover/swap', 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.arcuserp.com/v1/entities/{entity_id}/migration/cutover/swap",
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([
'snapshot_id' => '<string>',
'freeze_token' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'lambda_alias_target_version' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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.arcuserp.com/v1/entities/{entity_id}/migration/cutover/swap"
payload := strings.NewReader("{\n \"snapshot_id\": \"<string>\",\n \"freeze_token\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"lambda_alias_target_version\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.arcuserp.com/v1/entities/{entity_id}/migration/cutover/swap")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"snapshot_id\": \"<string>\",\n \"freeze_token\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"lambda_alias_target_version\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.arcuserp.com/v1/entities/{entity_id}/migration/cutover/swap")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"snapshot_id\": \"<string>\",\n \"freeze_token\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"lambda_alias_target_version\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"object": "cutover_swap_initiated",
"entity_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"swap_emitted_at": "2023-11-07T05:31:56Z",
"cutover_log_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"snapshot_id": "<string>",
"env": "<string>",
"instructions": {
"title": "<string>",
"lambda_alias_swap": "<string>",
"dns_flip": "<string>",
"cognito_swap": "<string>",
"operator_confirms": "<string>"
}
}{
"error": "not_found",
"code": "not_found",
"type": "not_found",
"hint": "The requested order does not exist or does not belong to this entity.",
"param": "expand[0]",
"required": "accounts:read",
"request_id": "req_abc123"
}{
"error": "not_found",
"code": "not_found",
"type": "not_found",
"hint": "The requested order does not exist or does not belong to this entity.",
"param": "expand[0]",
"required": "accounts:read",
"request_id": "req_abc123"
}{
"error": "not_found",
"code": "not_found",
"type": "not_found",
"hint": "The requested order does not exist or does not belong to this entity.",
"param": "expand[0]",
"required": "accounts:read",
"request_id": "req_abc123"
}Migration
Emit cutover swap commands
Records a swap action in the cutover audit log and returns the manual command list for the Lambda alias swap, DNS flip, and Cognito swap needed to complete cutover. It does not execute any of these steps itself; requires migration:admin and migration:write scopes.
POST
/
entities
/
{entity_id}
/
migration
/
cutover
/
swap
Emit cutover swap commands
curl --request POST \
--url https://api.arcuserp.com/v1/entities/{entity_id}/migration/cutover/swap \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"snapshot_id": "<string>",
"freeze_token": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"lambda_alias_target_version": "<string>"
}
'import requests
url = "https://api.arcuserp.com/v1/entities/{entity_id}/migration/cutover/swap"
payload = {
"snapshot_id": "<string>",
"freeze_token": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"lambda_alias_target_version": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
snapshot_id: '<string>',
freeze_token: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
lambda_alias_target_version: '<string>'
})
};
fetch('https://api.arcuserp.com/v1/entities/{entity_id}/migration/cutover/swap', 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.arcuserp.com/v1/entities/{entity_id}/migration/cutover/swap",
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([
'snapshot_id' => '<string>',
'freeze_token' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'lambda_alias_target_version' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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.arcuserp.com/v1/entities/{entity_id}/migration/cutover/swap"
payload := strings.NewReader("{\n \"snapshot_id\": \"<string>\",\n \"freeze_token\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"lambda_alias_target_version\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.arcuserp.com/v1/entities/{entity_id}/migration/cutover/swap")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"snapshot_id\": \"<string>\",\n \"freeze_token\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"lambda_alias_target_version\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.arcuserp.com/v1/entities/{entity_id}/migration/cutover/swap")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"snapshot_id\": \"<string>\",\n \"freeze_token\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"lambda_alias_target_version\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"object": "cutover_swap_initiated",
"entity_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"swap_emitted_at": "2023-11-07T05:31:56Z",
"cutover_log_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"snapshot_id": "<string>",
"env": "<string>",
"instructions": {
"title": "<string>",
"lambda_alias_swap": "<string>",
"dns_flip": "<string>",
"cognito_swap": "<string>",
"operator_confirms": "<string>"
}
}{
"error": "not_found",
"code": "not_found",
"type": "not_found",
"hint": "The requested order does not exist or does not belong to this entity.",
"param": "expand[0]",
"required": "accounts:read",
"request_id": "req_abc123"
}{
"error": "not_found",
"code": "not_found",
"type": "not_found",
"hint": "The requested order does not exist or does not belong to this entity.",
"param": "expand[0]",
"required": "accounts:read",
"request_id": "req_abc123"
}{
"error": "not_found",
"code": "not_found",
"type": "not_found",
"hint": "The requested order does not exist or does not belong to this entity.",
"param": "expand[0]",
"required": "accounts:read",
"request_id": "req_abc123"
}Authorizations
API key issued per entity via Settings > Developers > API Keys.
Each key carries scopes (e.g. orders:read, products:write).
Bearer token format: Authorization: Bearer ark_live_ent_Test keys use ark_test_ent_. Both are issued per entity
via Settings > Developers > API Keys.
Path Parameters
Body
application/json
Response
Swap command list emitted
Operator command list returned by cutover/swap endpoint.
Was this page helpful?

