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-4f70ce13a9d6 to '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_FAILEDtitle outside 5–255 characters (error.context.title); description longer 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 — unknown resource_id, a resource on another team's project, or one outside the token's scope:project: allow-list.
  • AUTHENTICATION_REQUIRED — no authenticated user on the request.
  • TOKEN_MISSING_ABILITY — token lacks project-resource:update.

How is this guide?

On this page

Subscriby is a product designed by you — for you.

No boardroom full of executives deciding what we ships next. Our roadmap always shaped by you with your feedback.

Share feedback or a request