Update a roadmap item
curl --request PATCH \
--url https://api.plazza.ca/v1/roadmapBoards/{board}/items/{item} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"etag": "\"3\"",
"title": "Swap shifts between employees",
"body": "Let employees trade shifts, with a manager approving the swap."
}
'const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
etag: '"3"',
title: 'Swap shifts between employees',
body: JSON.stringify('Let employees trade shifts, with a manager approving the swap.')
})
};
fetch('https://api.plazza.ca/v1/roadmapBoards/{board}/items/{item}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.plazza.ca/v1/roadmapBoards/{board}/items/{item}"
payload = {
"etag": "\"3\"",
"title": "Swap shifts between employees",
"body": "Let employees trade shifts, with a manager approving the swap."
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text){
"name": "roadmapBoards/hire/items/019a7c2e-4b1d-7c3a-9d4e-5f6a7b8c9d0e",
"source": "PLAZZA",
"slug": "swap-shifts-between-employees",
"title": "Swap shifts between employees",
"body": "Let employees trade shifts, with a manager approving the swap.",
"kind": "FEATURE",
"tags": [
"Scheduling",
"Mobile"
],
"plans": [
"Pro"
],
"area": "Scheduling",
"status": "PLANNED",
"shipTime": "2026-11-04T14:32:08.512Z",
"state": "PUBLISHED",
"mergedInto": null,
"author": {
"displayName": "Camille Tremblay",
"staff": false
},
"voteCount": 42,
"commentCount": 7,
"etag": "\"3\"",
"createTime": "2026-11-04T14:32:08.512Z",
"updateTime": "2026-11-04T14:32:08.512Z",
"deleteTime": "2026-11-04T14:32:08.512Z"
}{
"error": {
"code": 401,
"message": "Unauthorized",
"status": "UNAUTHENTICATED",
"details": [
{
"@type": "type.googleapis.com/google.rpc.ErrorInfo",
"reason": "MISSING_CREDENTIALS",
"domain": "api.plazza.ca"
},
{
"@type": "type.googleapis.com/google.rpc.LocalizedMessage",
"locale": "en",
"message": "Sign in to continue."
}
]
}
}Roadmap
Update a roadmap item
Its author rewords their suggestion: the title and the description.
PATCH
/
v1
/
roadmapBoards
/
{board}
/
items
/
{item}
Update a roadmap item
curl --request PATCH \
--url https://api.plazza.ca/v1/roadmapBoards/{board}/items/{item} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"etag": "\"3\"",
"title": "Swap shifts between employees",
"body": "Let employees trade shifts, with a manager approving the swap."
}
'const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
etag: '"3"',
title: 'Swap shifts between employees',
body: JSON.stringify('Let employees trade shifts, with a manager approving the swap.')
})
};
fetch('https://api.plazza.ca/v1/roadmapBoards/{board}/items/{item}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.plazza.ca/v1/roadmapBoards/{board}/items/{item}"
payload = {
"etag": "\"3\"",
"title": "Swap shifts between employees",
"body": "Let employees trade shifts, with a manager approving the swap."
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text){
"name": "roadmapBoards/hire/items/019a7c2e-4b1d-7c3a-9d4e-5f6a7b8c9d0e",
"source": "PLAZZA",
"slug": "swap-shifts-between-employees",
"title": "Swap shifts between employees",
"body": "Let employees trade shifts, with a manager approving the swap.",
"kind": "FEATURE",
"tags": [
"Scheduling",
"Mobile"
],
"plans": [
"Pro"
],
"area": "Scheduling",
"status": "PLANNED",
"shipTime": "2026-11-04T14:32:08.512Z",
"state": "PUBLISHED",
"mergedInto": null,
"author": {
"displayName": "Camille Tremblay",
"staff": false
},
"voteCount": 42,
"commentCount": 7,
"etag": "\"3\"",
"createTime": "2026-11-04T14:32:08.512Z",
"updateTime": "2026-11-04T14:32:08.512Z",
"deleteTime": "2026-11-04T14:32:08.512Z"
}{
"error": {
"code": 401,
"message": "Unauthorized",
"status": "UNAUTHENTICATED",
"details": [
{
"@type": "type.googleapis.com/google.rpc.ErrorInfo",
"reason": "MISSING_CREDENTIALS",
"domain": "api.plazza.ca"
},
{
"@type": "type.googleapis.com/google.rpc.LocalizedMessage",
"locale": "en",
"message": "Sign in to continue."
}
]
}
}Authorizations
Path Parameters
Query Parameters
Body
application/json
What the author changes in their suggestion.
Response
A suggestion or a planned change on a roadmap board.
A suggestion or a planned change on a roadmap board.
PUBLISHED items are listed. Staff can UNPUBLISH one, its author can withdraw it, which erases its text but keeps the discussion, and staff can merge a duplicate into another item. The Linear sync SUSPENDED one while its issue can’t be read or left the Roadmap team.
Available options:
PUBLISHED, UNPUBLISHED, SUSPENDED, WITHDRAWN, MERGED Example:
"PUBLISHED"