Cherry-pick commit
curl --request POST \
--url https://api.diversion.dev/v0/repos/{repo_id}/workspaces/{workspace_id}/cherry-pick \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"ref_id": "<string>"
}
'import requests
url = "https://api.diversion.dev/v0/repos/{repo_id}/workspaces/{workspace_id}/cherry-pick"
payload = { "ref_id": "<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({ref_id: '<string>'})
};
fetch('https://api.diversion.dev/v0/repos/{repo_id}/workspaces/{workspace_id}/cherry-pick', 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.diversion.dev/v0/repos/{repo_id}/workspaces/{workspace_id}/cherry-pick",
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([
'ref_id' => '<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.diversion.dev/v0/repos/{repo_id}/workspaces/{workspace_id}/cherry-pick"
payload := strings.NewReader("{\n \"ref_id\": \"<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.diversion.dev/v0/repos/{repo_id}/workspaces/{workspace_id}/cherry-pick")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"ref_id\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.diversion.dev/v0/repos/{repo_id}/workspaces/{workspace_id}/cherry-pick")
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 \"ref_id\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"merge_id": "example_id"
}{
"status": 123,
"detail": "<string>",
"title": "<string>",
"type": "<string>"
}Repository Workspace Manipulation
Cherry-pick commit
Cherry-picks changes from a specific commit (identified by ref_id) into the current workspace.
Process:
- Creates a temporary patch from the source commit
- Applies it to the workspace
- If conflicts occur, returns a merge ID that must be resolved before proceeding
Requirements: Requires WRITE access.
Returns:
404 Not Foundif the reference doesn’t exist202 Acceptedwith merge_id if conflicts occurred204 No Contenton clean application
POST
/
repos
/
{repo_id}
/
workspaces
/
{workspace_id}
/
cherry-pick
Cherry-pick commit
curl --request POST \
--url https://api.diversion.dev/v0/repos/{repo_id}/workspaces/{workspace_id}/cherry-pick \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"ref_id": "<string>"
}
'import requests
url = "https://api.diversion.dev/v0/repos/{repo_id}/workspaces/{workspace_id}/cherry-pick"
payload = { "ref_id": "<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({ref_id: '<string>'})
};
fetch('https://api.diversion.dev/v0/repos/{repo_id}/workspaces/{workspace_id}/cherry-pick', 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.diversion.dev/v0/repos/{repo_id}/workspaces/{workspace_id}/cherry-pick",
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([
'ref_id' => '<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.diversion.dev/v0/repos/{repo_id}/workspaces/{workspace_id}/cherry-pick"
payload := strings.NewReader("{\n \"ref_id\": \"<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.diversion.dev/v0/repos/{repo_id}/workspaces/{workspace_id}/cherry-pick")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"ref_id\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.diversion.dev/v0/repos/{repo_id}/workspaces/{workspace_id}/cherry-pick")
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 \"ref_id\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"merge_id": "example_id"
}{
"status": 123,
"detail": "<string>",
"title": "<string>",
"type": "<string>"
}Authorizations
This API uses OAuth 2 with the implicit grant flow
Path Parameters
The repo ID of the repository. Repo name can be used instead of the ID, but usage of ID for permanent linking and API requests is preferred.
Required string length:
3 - 128Example:
"example_id"
The repo ID of the workspace.
Required string length:
3 - 128Example:
"example_id"
Body
application/json
The commit to cherry-pick
Required string length:
7 - 128Response
The cherry-pick is in progress. It has conflicts requiring active input from the user for conflict resolution. The response contains a merge ID, which can be used for querying /repos/{repo_id}/merges/{merge_id}
Required string length:
3 - 128Example:
"example_id"

