update_resource
Retitle, describe or switch a project resource. Partial by design — anything omitted keeps its stored value; the kind and the place are fixed.
Purpose
Change what the dashboard's resource editor lets a creator change: the title, the description
and the active switch. Only the arguments present are written; anything omitted is filled from the
stored row, so a title-only change never touches the description and is never logged as a
description edit.
Emits project.resource.updated with the fields that
actually moved. A call whose arguments change nothing returns the current row and emits nothing.
`kind`, `connector` and `space` are silently ignored
The resource kind is its identity and the connector place (space) is its binding;
neither can be set here. Sending them is not an error — they are simply not
read. A place is linked through the connector with
request_resource_link, and cleared with
unlink_resource.
`active` here, or the dedicated switches
active is accepted alongside the other fields. When the switch is the only
thing changing, activate_resource and
deactivate_resource do the same thing with
a one-argument call.
Required ability
project-resource:update
Input schema
{
"type": "object",
"required": ["resource_id"],
"properties": {
"resource_id": {
"type": "string",
"description": "UUID of the resource to change."
},
"title": {
"type": "string",
"description": "New title, 5 to 255 characters."
},
"description": {
"type": "string",
"description": "New description, up to 1000 characters of well-formed HTML. Pass null or an empty string to clear it."
},
"active": {
"type": "boolean",
"description": "true offers the resource on the plans that link it, false switches it off without touching those plans."
}
}
}Output shape
{
"data": {
"id": "b73c5f21-9d80-4a6e-8215-4f70ce13a9d6",
"project_id": "7f3d1c92-8b45-4e6a-9d21-5c8e0a4b6f13",
"kind": "telegram:channel",
"connector": "telegram",
"space": {
"id": "3c1f7a58-2b6e-4d90-8f41-6a2e9c5d7b10",
"external_id": "-1001234567890",
"title": "Members lounge"
},
"title": "Members lounge (VIP)",
"description": "Where the regulars hang out.",
"active": true,
"created_at": "2026-05-18T10:05:00+00:00",
"updated_at": "2026-09-06T08:30:12+00:00"
}
}The full get_resource row. description comes back purified, so the
HTML you read may be tidier than the HTML you sent. space is null on a manual perk and on a resource not yet linked
to a place on its connector.
Example prompts
"Rename resource
b73c5f21-9d80-4a6e-8215-4f70ce13a9d6to 'Members lounge (VIP)'."
"Update the Research Channel's description to say it posts on weekdays only — keep the title."
"Clear the description on the onboarding group resource."
Failure modes
VALIDATION_FAILED—titleoutside 5–255 characters (error.context.title);descriptionlonger than 1000 characters or not well-formed HTML (error.context.description); or the caller is a team member whose role lacks the team's resource-update permission (error.context.resource).RESOURCE_NOT_FOUND— unknownresource_id, a resource on another team's project, or one outside the token'sscope:project:allow-list.AUTHENTICATION_REQUIRED— no authenticated user on the request.TOKEN_MISSING_ABILITY— token lacksproject-resource:update.
Related
get_resource— read the current values first.activate_resource/deactivate_resource— the switch alone.unlink_resource— the only API way to change the place binding.list_resources- Resources API — the REST equivalent,
PATCH /projects/{project}/resources/{resource}. - Resources — the dashboard walkthrough.
How is this guide?
unlink_resource
Clear the connector place from a resource, reverting it to an unlinked placeholder the creator can relink through the connector.
activate_payment_method
Offer a configured payment method to buyers again and re-queue its plan sync. Refuses a Stripe method whose Connect onboarding never finished.