curl --request PATCH \
--url https://devtune.ai/api/v2/projects/{projectId}/actions/{actionId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"title": "<string>",
"assignedTo": "<string>",
"description": "<string>",
"channels": []
}
'import requests
url = "https://devtune.ai/api/v2/projects/{projectId}/actions/{actionId}"
payload = {
"title": "<string>",
"assignedTo": "<string>",
"description": "<string>",
"channels": []
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
title: '<string>',
assignedTo: '<string>',
description: '<string>',
channels: []
})
};
fetch('https://devtune.ai/api/v2/projects/{projectId}/actions/{actionId}', 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://devtune.ai/api/v2/projects/{projectId}/actions/{actionId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'title' => '<string>',
'assignedTo' => '<string>',
'description' => '<string>',
'channels' => [
]
]),
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://devtune.ai/api/v2/projects/{projectId}/actions/{actionId}"
payload := strings.NewReader("{\n \"title\": \"<string>\",\n \"assignedTo\": \"<string>\",\n \"description\": \"<string>\",\n \"channels\": []\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://devtune.ai/api/v2/projects/{projectId}/actions/{actionId}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"title\": \"<string>\",\n \"assignedTo\": \"<string>\",\n \"description\": \"<string>\",\n \"channels\": []\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://devtune.ai/api/v2/projects/{projectId}/actions/{actionId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"title\": \"<string>\",\n \"assignedTo\": \"<string>\",\n \"description\": \"<string>\",\n \"channels\": []\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"title": "<string>",
"description": "<string>",
"channels": [
"<string>"
],
"status": "suggested",
"assignedTo": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"ownerName": "<string>",
"updatedAt": "2023-11-07T05:31:56Z"
}
}Update an action
Changes the title, owner, channels or description of an accepted or live action. Restore an archived action first. DevTune’s suggestions, including dismissed and snoozed ones, keep their details and have no owner; accept one before changing it. assignedTo is the user id or sign-in email of a current member of the account that owns the project; null unassigns. channels is the full set of channels that own the work and replaces the current set; the same set in another order changes nothing. description changes only on an accepted action the team created: DevTune’s actions keep the description their evidence wrote (409), and a live action’s description is fixed until the action is reopened (409). A change queues an action.updated webhook whose changedFields name the columns that changed: title, assigned_to, description and/or channels. The owner is not notified and the brief is not marked out of date.
curl --request PATCH \
--url https://devtune.ai/api/v2/projects/{projectId}/actions/{actionId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"title": "<string>",
"assignedTo": "<string>",
"description": "<string>",
"channels": []
}
'import requests
url = "https://devtune.ai/api/v2/projects/{projectId}/actions/{actionId}"
payload = {
"title": "<string>",
"assignedTo": "<string>",
"description": "<string>",
"channels": []
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
title: '<string>',
assignedTo: '<string>',
description: '<string>',
channels: []
})
};
fetch('https://devtune.ai/api/v2/projects/{projectId}/actions/{actionId}', 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://devtune.ai/api/v2/projects/{projectId}/actions/{actionId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'title' => '<string>',
'assignedTo' => '<string>',
'description' => '<string>',
'channels' => [
]
]),
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://devtune.ai/api/v2/projects/{projectId}/actions/{actionId}"
payload := strings.NewReader("{\n \"title\": \"<string>\",\n \"assignedTo\": \"<string>\",\n \"description\": \"<string>\",\n \"channels\": []\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://devtune.ai/api/v2/projects/{projectId}/actions/{actionId}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"title\": \"<string>\",\n \"assignedTo\": \"<string>\",\n \"description\": \"<string>\",\n \"channels\": []\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://devtune.ai/api/v2/projects/{projectId}/actions/{actionId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"title\": \"<string>\",\n \"assignedTo\": \"<string>\",\n \"description\": \"<string>\",\n \"channels\": []\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"title": "<string>",
"description": "<string>",
"channels": [
"<string>"
],
"status": "suggested",
"assignedTo": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"ownerName": "<string>",
"updatedAt": "2023-11-07T05:31:56Z"
}
}Authorizations
API key with dtk_live_ prefix. Obtain it from API Keys in the account sidebar. New keys start with all supported scopes selected for the chosen project, and you can narrow them to specific read/write scopes as needed.
Body
New title. Surrounding whitespace is trimmed; a blank title is refused.
1 - 500The new owner as a user id or the email they sign in with, or null to unassign. The owner must be a current member of the account.
New description. Only for an accepted action the team created. Surrounding whitespace is trimmed; a blank description is refused.
1 - 10000Every channel that owns the work. Replaces the action's channels; order does not matter.
1docs, content, devrel, pr, engineering, product, other Response
The updated action
Show child attributes
Show child attributes