curl --request POST \
--url https://platform.versori.com/api/v2/o/{organisation_id}/projects/{project_id}/environments/sync \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"sourceEnvName": "<string>",
"targetEnvName": "<string>"
}
'import requests
url = "https://platform.versori.com/api/v2/o/{organisation_id}/projects/{project_id}/environments/sync"
payload = {
"sourceEnvName": "<string>",
"targetEnvName": "<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({sourceEnvName: '<string>', targetEnvName: '<string>'})
};
fetch('https://platform.versori.com/api/v2/o/{organisation_id}/projects/{project_id}/environments/sync', 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://platform.versori.com/api/v2/o/{organisation_id}/projects/{project_id}/environments/sync",
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([
'sourceEnvName' => '<string>',
'targetEnvName' => '<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://platform.versori.com/api/v2/o/{organisation_id}/projects/{project_id}/environments/sync"
payload := strings.NewReader("{\n \"sourceEnvName\": \"<string>\",\n \"targetEnvName\": \"<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://platform.versori.com/api/v2/o/{organisation_id}/projects/{project_id}/environments/sync")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"sourceEnvName\": \"<string>\",\n \"targetEnvName\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://platform.versori.com/api/v2/o/{organisation_id}/projects/{project_id}/environments/sync")
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 \"sourceEnvName\": \"<string>\",\n \"targetEnvName\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"environments": [
{
"id": "<string>",
"name": "<string>",
"status": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"publicUrl": "<string>",
"config": {
"deploymentSpec": {
"replicas": 123,
"autoscaling": {
"maxReplicas": 123
},
"staticIP": true,
"resources": {
"limits": {
"cpu": "<string>",
"memory": "<string>"
},
"requests": {
"cpu": "<string>",
"memory": "<string>"
}
},
"serviceAccountName": "<string>"
}
},
"executionPool": "<string>",
"files": [
{
"filename": "<string>",
"content": "<string>"
}
],
"labels": {},
"deployedVersion": {
"id": "<string>",
"name": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"description": "<string>",
"labels": {}
}
}
],
"name": "<string>",
"currentFiles": {
"files": [
{
"filename": "<string>",
"content": "<string>"
}
],
"labels": {}
},
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"settings": {
"acceptCodeChangesAutomatically": true,
"testingMockWithAI": true,
"planningChatVersion": "<string>",
"chatStoredInDB": true
},
"metadata": {
"sentimentHistory": [
{
"timestamp": "2023-11-07T05:31:56Z",
"sentimentScore": 123,
"messageId": "<string>"
}
]
},
"dynamicVariablesSchema": {}
}{
"code": "<string>",
"message": "<string>",
"fields": [
{
"field": "<string>",
"message": "<string>"
}
],
"details": "<string>"
}Sync Environments
SyncEnvironments copies the deployment configuration (currently the deployed docker image/version) from one environment to another within the same project.
curl --request POST \
--url https://platform.versori.com/api/v2/o/{organisation_id}/projects/{project_id}/environments/sync \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"sourceEnvName": "<string>",
"targetEnvName": "<string>"
}
'import requests
url = "https://platform.versori.com/api/v2/o/{organisation_id}/projects/{project_id}/environments/sync"
payload = {
"sourceEnvName": "<string>",
"targetEnvName": "<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({sourceEnvName: '<string>', targetEnvName: '<string>'})
};
fetch('https://platform.versori.com/api/v2/o/{organisation_id}/projects/{project_id}/environments/sync', 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://platform.versori.com/api/v2/o/{organisation_id}/projects/{project_id}/environments/sync",
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([
'sourceEnvName' => '<string>',
'targetEnvName' => '<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://platform.versori.com/api/v2/o/{organisation_id}/projects/{project_id}/environments/sync"
payload := strings.NewReader("{\n \"sourceEnvName\": \"<string>\",\n \"targetEnvName\": \"<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://platform.versori.com/api/v2/o/{organisation_id}/projects/{project_id}/environments/sync")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"sourceEnvName\": \"<string>\",\n \"targetEnvName\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://platform.versori.com/api/v2/o/{organisation_id}/projects/{project_id}/environments/sync")
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 \"sourceEnvName\": \"<string>\",\n \"targetEnvName\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"environments": [
{
"id": "<string>",
"name": "<string>",
"status": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"publicUrl": "<string>",
"config": {
"deploymentSpec": {
"replicas": 123,
"autoscaling": {
"maxReplicas": 123
},
"staticIP": true,
"resources": {
"limits": {
"cpu": "<string>",
"memory": "<string>"
},
"requests": {
"cpu": "<string>",
"memory": "<string>"
}
},
"serviceAccountName": "<string>"
}
},
"executionPool": "<string>",
"files": [
{
"filename": "<string>",
"content": "<string>"
}
],
"labels": {},
"deployedVersion": {
"id": "<string>",
"name": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"description": "<string>",
"labels": {}
}
}
],
"name": "<string>",
"currentFiles": {
"files": [
{
"filename": "<string>",
"content": "<string>"
}
],
"labels": {}
},
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"settings": {
"acceptCodeChangesAutomatically": true,
"testingMockWithAI": true,
"planningChatVersion": "<string>",
"chatStoredInDB": true
},
"metadata": {
"sentimentHistory": [
{
"timestamp": "2023-11-07T05:31:56Z",
"sentimentScore": 123,
"messageId": "<string>"
}
]
},
"dynamicVariablesSchema": {}
}{
"code": "<string>",
"message": "<string>",
"fields": [
{
"field": "<string>",
"message": "<string>"
}
],
"details": "<string>"
}Authorizations
Bearer token authentication used by the Versori Platform. External consumers must provide an API key, however internal consumers must provide a JWT id_token issued by our IdP.
Body
SyncEnvironmentsRequest is the request payload to sync the deployment configuration from a source environment to a target environment within a project.
Response
OK
The Project represents a deployable unit within our platform that includes both the functional components (files) and configuration. It serves as the backbone of custom or predefined functionalities, allowing organizations to create, update, and manage APIs and projects.
The unique identifier for the project.
List of environments for the project.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
ProjectSettings hold configuration for the project
Show child attributes
Show child attributes
ProjectMetadata hold metadata for the project
Show child attributes
Show child attributes
DynamicVariablesSchema is the JSON schema for the project's dynamic variables.