curl --request POST \
--url https://api.getcargo.io/v1/workspaceManagement/states/{uuid}/connection \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"githubOwner": "<string>",
"githubRepo": "<string>",
"connectorUuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"productionBranch": "<string>",
"directory": "<string>",
"autoDeploy": true,
"runAsUserUuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
'import requests
url = "https://api.getcargo.io/v1/workspaceManagement/states/{uuid}/connection"
payload = {
"githubOwner": "<string>",
"githubRepo": "<string>",
"connectorUuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"productionBranch": "<string>",
"directory": "<string>",
"autoDeploy": True,
"runAsUserUuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
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({
githubOwner: '<string>',
githubRepo: '<string>',
connectorUuid: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
productionBranch: '<string>',
directory: '<string>',
autoDeploy: true,
runAsUserUuid: '3c90c3cc-0d44-4b50-8888-8dd25736052a'
})
};
fetch('https://api.getcargo.io/v1/workspaceManagement/states/{uuid}/connection', 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.getcargo.io/v1/workspaceManagement/states/{uuid}/connection",
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([
'githubOwner' => '<string>',
'githubRepo' => '<string>',
'connectorUuid' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'productionBranch' => '<string>',
'directory' => '<string>',
'autoDeploy' => true,
'runAsUserUuid' => '3c90c3cc-0d44-4b50-8888-8dd25736052a'
]),
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.getcargo.io/v1/workspaceManagement/states/{uuid}/connection"
payload := strings.NewReader("{\n \"githubOwner\": \"<string>\",\n \"githubRepo\": \"<string>\",\n \"connectorUuid\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"productionBranch\": \"<string>\",\n \"directory\": \"<string>\",\n \"autoDeploy\": true,\n \"runAsUserUuid\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\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.getcargo.io/v1/workspaceManagement/states/{uuid}/connection")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"githubOwner\": \"<string>\",\n \"githubRepo\": \"<string>\",\n \"connectorUuid\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"productionBranch\": \"<string>\",\n \"directory\": \"<string>\",\n \"autoDeploy\": true,\n \"runAsUserUuid\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getcargo.io/v1/workspaceManagement/states/{uuid}/connection")
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 \"githubOwner\": \"<string>\",\n \"githubRepo\": \"<string>\",\n \"connectorUuid\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"productionBranch\": \"<string>\",\n \"directory\": \"<string>\",\n \"autoDeploy\": true,\n \"runAsUserUuid\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}"
response = http.request(request)
puts response.read_body{
"state": {
"uuid": "<string>",
"workspaceUuid": "<string>",
"githubOwner": "<string>",
"githubRepo": "<string>",
"defaultBranch": "<string>",
"connection": {
"directory": "<string>",
"productionBranch": "<string>",
"autoDeploy": true,
"userUuid": "<string>",
"runAsUserUuid": "<string>",
"createdAt": "<string>"
},
"contents": {},
"previousContents": {},
"contentsVersion": 123,
"lock": {
"holderId": "<string>",
"host": "<string>",
"command": "<string>",
"acquiredAt": "<string>",
"expiresAt": "<string>"
},
"createdAt": "<string>",
"updatedAt": "<string>",
"deletedAt": "<string>"
}
}{
"errorMessage": "<string>",
"reason": "<string>"
}{
"errorMessage": "<string>",
"reason": "<string>"
}{
"errorMessage": "<string>",
"reason": "<string>"
}{
"errorMessage": "<string>",
"reason": "<string>"
}{
"errorMessage": "<string>",
"reason": "<string>"
}{
"errorMessage": "<string>",
"reason": "<string>"
}{
"errorMessage": "<string>",
"reason": "<string>"
}Connect repository
Connect a GitHub repository to this project, so Cargo plans its pull requests and deploys its production branch as a service user. Refused unless the Cargo GitHub app is installed on the repository and the workspace’s GitHub account administers it, when the project is already connected, and when that repository directory is connected elsewhere. (POST /workspaceManagement/states//connection).
curl --request POST \
--url https://api.getcargo.io/v1/workspaceManagement/states/{uuid}/connection \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"githubOwner": "<string>",
"githubRepo": "<string>",
"connectorUuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"productionBranch": "<string>",
"directory": "<string>",
"autoDeploy": true,
"runAsUserUuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
'import requests
url = "https://api.getcargo.io/v1/workspaceManagement/states/{uuid}/connection"
payload = {
"githubOwner": "<string>",
"githubRepo": "<string>",
"connectorUuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"productionBranch": "<string>",
"directory": "<string>",
"autoDeploy": True,
"runAsUserUuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
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({
githubOwner: '<string>',
githubRepo: '<string>',
connectorUuid: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
productionBranch: '<string>',
directory: '<string>',
autoDeploy: true,
runAsUserUuid: '3c90c3cc-0d44-4b50-8888-8dd25736052a'
})
};
fetch('https://api.getcargo.io/v1/workspaceManagement/states/{uuid}/connection', 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.getcargo.io/v1/workspaceManagement/states/{uuid}/connection",
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([
'githubOwner' => '<string>',
'githubRepo' => '<string>',
'connectorUuid' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'productionBranch' => '<string>',
'directory' => '<string>',
'autoDeploy' => true,
'runAsUserUuid' => '3c90c3cc-0d44-4b50-8888-8dd25736052a'
]),
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.getcargo.io/v1/workspaceManagement/states/{uuid}/connection"
payload := strings.NewReader("{\n \"githubOwner\": \"<string>\",\n \"githubRepo\": \"<string>\",\n \"connectorUuid\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"productionBranch\": \"<string>\",\n \"directory\": \"<string>\",\n \"autoDeploy\": true,\n \"runAsUserUuid\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\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.getcargo.io/v1/workspaceManagement/states/{uuid}/connection")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"githubOwner\": \"<string>\",\n \"githubRepo\": \"<string>\",\n \"connectorUuid\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"productionBranch\": \"<string>\",\n \"directory\": \"<string>\",\n \"autoDeploy\": true,\n \"runAsUserUuid\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getcargo.io/v1/workspaceManagement/states/{uuid}/connection")
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 \"githubOwner\": \"<string>\",\n \"githubRepo\": \"<string>\",\n \"connectorUuid\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"productionBranch\": \"<string>\",\n \"directory\": \"<string>\",\n \"autoDeploy\": true,\n \"runAsUserUuid\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}"
response = http.request(request)
puts response.read_body{
"state": {
"uuid": "<string>",
"workspaceUuid": "<string>",
"githubOwner": "<string>",
"githubRepo": "<string>",
"defaultBranch": "<string>",
"connection": {
"directory": "<string>",
"productionBranch": "<string>",
"autoDeploy": true,
"userUuid": "<string>",
"runAsUserUuid": "<string>",
"createdAt": "<string>"
},
"contents": {},
"previousContents": {},
"contentsVersion": 123,
"lock": {
"holderId": "<string>",
"host": "<string>",
"command": "<string>",
"acquiredAt": "<string>",
"expiresAt": "<string>"
},
"createdAt": "<string>",
"updatedAt": "<string>",
"deletedAt": "<string>"
}
}{
"errorMessage": "<string>",
"reason": "<string>"
}{
"errorMessage": "<string>",
"reason": "<string>"
}{
"errorMessage": "<string>",
"reason": "<string>"
}{
"errorMessage": "<string>",
"reason": "<string>"
}{
"errorMessage": "<string>",
"reason": "<string>"
}{
"errorMessage": "<string>",
"reason": "<string>"
}{
"errorMessage": "<string>",
"reason": "<string>"
}Authorizations
API token from cargo-ai login. Send as Authorization: Bearer <token>.
Headers
Client-generated key that makes this write safe to retry. Reusing the same key with the same request returns the original response instead of creating a second record. Reusing it with a different request returns 422. A concurrent retry while the first request is still running returns 409. Keys expire after 24 hours. Not accepted on multipart file uploads. Optional: a request without one is processed as it always was.
255"8e03978e-40d5-43e8-bc93-6894a57f9324"
Path Parameters
Project to connect a repository to.
Body
Request body schema.
Owner of the repository to connect.
1 - 255Repository to connect.
1 - 255The workspace's GitHub connector. Its account must be an admin of the repository.
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$Pushes to this branch deploy. Every other branch only plans.
1 - 255Project directory inside the repository. Defaults to the repository root.
1024Whether pushes to the production branch deploy. Pull requests are planned either way. Defaults to true.
Service user a deploy runs as, whose permissions must be covered by the caller's. Each deploy gets a temporary CARGO_API_TOKEN for that user. Without one, a service user is created for this repository with the caller's permissions.
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$Response
Connect repository
Show child attributes
Show child attributes
Was this page helpful?

