Update an attachment
curl --request PATCH \
--url https://api.plane.so/api/v1/workspaces/{workspace_slug}/projects/{project_id}/work-items/{work_item_id}/attachments/{attachment_id}/ \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"attributes": {},
"asset": "<string>",
"entity_type": "<string>",
"entity_identifier": "<string>",
"is_deleted": true,
"is_archived": true,
"external_id": "<string>",
"external_source": "<string>",
"size": 123,
"is_uploaded": true,
"storage_metadata": {}
}
'import requests
url = "https://api.plane.so/api/v1/workspaces/{workspace_slug}/projects/{project_id}/work-items/{work_item_id}/attachments/{attachment_id}/"
payload = {
"attributes": {},
"asset": "<string>",
"entity_type": "<string>",
"entity_identifier": "<string>",
"is_deleted": True,
"is_archived": True,
"external_id": "<string>",
"external_source": "<string>",
"size": 123,
"is_uploaded": True,
"storage_metadata": {}
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
attributes: {},
asset: '<string>',
entity_type: '<string>',
entity_identifier: '<string>',
is_deleted: true,
is_archived: true,
external_id: '<string>',
external_source: '<string>',
size: 123,
is_uploaded: true,
storage_metadata: {}
})
};
fetch('https://api.plane.so/api/v1/workspaces/{workspace_slug}/projects/{project_id}/work-items/{work_item_id}/attachments/{attachment_id}/', 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.plane.so/api/v1/workspaces/{workspace_slug}/projects/{project_id}/work-items/{work_item_id}/attachments/{attachment_id}/",
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([
'attributes' => [
],
'asset' => '<string>',
'entity_type' => '<string>',
'entity_identifier' => '<string>',
'is_deleted' => true,
'is_archived' => true,
'external_id' => '<string>',
'external_source' => '<string>',
'size' => 123,
'is_uploaded' => true,
'storage_metadata' => [
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$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.plane.so/api/v1/workspaces/{workspace_slug}/projects/{project_id}/work-items/{work_item_id}/attachments/{attachment_id}/"
payload := strings.NewReader("{\n \"attributes\": {},\n \"asset\": \"<string>\",\n \"entity_type\": \"<string>\",\n \"entity_identifier\": \"<string>\",\n \"is_deleted\": true,\n \"is_archived\": true,\n \"external_id\": \"<string>\",\n \"external_source\": \"<string>\",\n \"size\": 123,\n \"is_uploaded\": true,\n \"storage_metadata\": {}\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("x-api-key", "<api-key>")
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://api.plane.so/api/v1/workspaces/{workspace_slug}/projects/{project_id}/work-items/{work_item_id}/attachments/{attachment_id}/")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"attributes\": {},\n \"asset\": \"<string>\",\n \"entity_type\": \"<string>\",\n \"entity_identifier\": \"<string>\",\n \"is_deleted\": true,\n \"is_archived\": true,\n \"external_id\": \"<string>\",\n \"external_source\": \"<string>\",\n \"size\": 123,\n \"is_uploaded\": true,\n \"storage_metadata\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.plane.so/api/v1/workspaces/{workspace_slug}/projects/{project_id}/work-items/{work_item_id}/attachments/{attachment_id}/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"attributes\": {},\n \"asset\": \"<string>\",\n \"entity_type\": \"<string>\",\n \"entity_identifier\": \"<string>\",\n \"is_deleted\": true,\n \"is_archived\": true,\n \"external_id\": \"<string>\",\n \"external_source\": \"<string>\",\n \"size\": 123,\n \"is_uploaded\": true,\n \"storage_metadata\": {}\n}"
response = http.request(request)
puts response.read_bodyWork Item Attachments
Update an attachment
Updates an existing attachment by setting the values of the parameters passed. Any parameters not provided will be left unchanged.
PATCH
/
api
/
v1
/
workspaces
/
{workspace_slug}
/
projects
/
{project_id}
/
work-items
/
{work_item_id}
/
attachments
/
{attachment_id}
/
Update an attachment
curl --request PATCH \
--url https://api.plane.so/api/v1/workspaces/{workspace_slug}/projects/{project_id}/work-items/{work_item_id}/attachments/{attachment_id}/ \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"attributes": {},
"asset": "<string>",
"entity_type": "<string>",
"entity_identifier": "<string>",
"is_deleted": true,
"is_archived": true,
"external_id": "<string>",
"external_source": "<string>",
"size": 123,
"is_uploaded": true,
"storage_metadata": {}
}
'import requests
url = "https://api.plane.so/api/v1/workspaces/{workspace_slug}/projects/{project_id}/work-items/{work_item_id}/attachments/{attachment_id}/"
payload = {
"attributes": {},
"asset": "<string>",
"entity_type": "<string>",
"entity_identifier": "<string>",
"is_deleted": True,
"is_archived": True,
"external_id": "<string>",
"external_source": "<string>",
"size": 123,
"is_uploaded": True,
"storage_metadata": {}
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
attributes: {},
asset: '<string>',
entity_type: '<string>',
entity_identifier: '<string>',
is_deleted: true,
is_archived: true,
external_id: '<string>',
external_source: '<string>',
size: 123,
is_uploaded: true,
storage_metadata: {}
})
};
fetch('https://api.plane.so/api/v1/workspaces/{workspace_slug}/projects/{project_id}/work-items/{work_item_id}/attachments/{attachment_id}/', 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.plane.so/api/v1/workspaces/{workspace_slug}/projects/{project_id}/work-items/{work_item_id}/attachments/{attachment_id}/",
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([
'attributes' => [
],
'asset' => '<string>',
'entity_type' => '<string>',
'entity_identifier' => '<string>',
'is_deleted' => true,
'is_archived' => true,
'external_id' => '<string>',
'external_source' => '<string>',
'size' => 123,
'is_uploaded' => true,
'storage_metadata' => [
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$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.plane.so/api/v1/workspaces/{workspace_slug}/projects/{project_id}/work-items/{work_item_id}/attachments/{attachment_id}/"
payload := strings.NewReader("{\n \"attributes\": {},\n \"asset\": \"<string>\",\n \"entity_type\": \"<string>\",\n \"entity_identifier\": \"<string>\",\n \"is_deleted\": true,\n \"is_archived\": true,\n \"external_id\": \"<string>\",\n \"external_source\": \"<string>\",\n \"size\": 123,\n \"is_uploaded\": true,\n \"storage_metadata\": {}\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("x-api-key", "<api-key>")
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://api.plane.so/api/v1/workspaces/{workspace_slug}/projects/{project_id}/work-items/{work_item_id}/attachments/{attachment_id}/")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"attributes\": {},\n \"asset\": \"<string>\",\n \"entity_type\": \"<string>\",\n \"entity_identifier\": \"<string>\",\n \"is_deleted\": true,\n \"is_archived\": true,\n \"external_id\": \"<string>\",\n \"external_source\": \"<string>\",\n \"size\": 123,\n \"is_uploaded\": true,\n \"storage_metadata\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.plane.so/api/v1/workspaces/{workspace_slug}/projects/{project_id}/work-items/{work_item_id}/attachments/{attachment_id}/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"attributes\": {},\n \"asset\": \"<string>\",\n \"entity_type\": \"<string>\",\n \"entity_identifier\": \"<string>\",\n \"is_deleted\": true,\n \"is_archived\": true,\n \"external_id\": \"<string>\",\n \"external_source\": \"<string>\",\n \"size\": 123,\n \"is_uploaded\": true,\n \"storage_metadata\": {}\n}"
response = http.request(request)
puts response.read_bodyPath parameters
string
required
The workspace_slug represents the unique workspace identifier for a workspace in Plane. It can be found in the URL. For example, in the URL
https://app.plane.so/my-team/projects/, the workspace slug is my-team.string
required
The unique identifier of the project.
string
required
The unique identifier of the work item.
string
required
The unique identifier of the attachment.
Body parameters
object
File metadata object containing name, size, and type.
string
Storage path/identifier for the attachment file.
string
Entity type of the attachment.
string
Entity identifier for the attachment.
boolean
Whether the attachment has been deleted.
boolean
Whether the attachment has been archived.
string
External identifier if the attachment is imported to Plane.
string
Name of the source if the attachment is imported to Plane.
number
File size in bytes.
boolean
Whether the file has been successfully uploaded.
object
Cloud storage metadata.
⌘I

