# Productboard

> Send customer feedback into Productboard as notes linked to the customer and the feature it is about, and keep products, components and features in step with the rest of your tools.

App · Project Management · 20 actions. Web page: https://docs.lodol.com/docs/integrations/productboard

## Actions

### Create entity

Create a feature, component, product, customer user or other entity. A feature needs a parent product or component, and a subfeature a parent feature. A customer user needs its email set before a note can be linked to it by that email. Returns the new entity's ID and link.

**Inputs**

- Entity type (`entity_type`, text, required): The kind of entity. The list shows the types this workspace has.
- Name (`name`, text, required): The entity's name.
- Email (`email`, text): For a 'user' entity: the email a note's customer relationship looks it up by. Only 'user' entities have this field; it is ignored on other types.
- Parent (`parent_id`, text): The entity this one sits under - its ID or Productboard URL. A feature needs a product or component; a subfeature needs a feature.
- Description (`description`, text): The entity's description. Plain text or HTML.
- Status (`status`, text): A status name as it appears in Productboard, such as 'In progress', or a status ID.
- Owner (`owner`, text): A workspace member. Pick one, or type their email or member ID.
- Teams (`teams`, list): The teams responsible. On an update, these replace the current teams.
- Tags (`tags`, list): Tag names. On an update, these replace the current tags.
- Start date (`start_date`, date): When the work starts. Needs an end date too.
- End date (`end_date`, date): When the work ends. Needs a start date too.
- Timeframe shown as (`granularity`, text): How Productboard shows the timeframe. Defaults to day. One of: `day`, `month`, `quarter`, `year`.
- Health (`health_status`, text): Set the health by hand. One of: `onTrack` (On track), `atRisk` (At risk), `offTrack` (Off track).
- Health comment (`health_comment`, text): Why the health is what it is. Needs a health value.
- Custom fields (`custom_fields`, object): Values for custom fields, keyed by the field's ID. 'List entity types' shows each field's ID.
- Source system (`source_system`, text): The system the record came from, such as 'zendesk'.
- Source record ID (`source_record_id`, text): The record's ID in that system.
- Source URL (`source_url`, text): A link back to the record in that system.

**Outputs**

- `id` (text)
- `links` (object)
- `type` (text)

**Example output**

```json
{
  "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "links": {
    "html": "https://example.productboard.com/entity-detail/features/1",
    "self": "https://api.productboard.com/v2/entities/3fa85f64-5717-4562-b3fc-2c963f66afa6"
  },
  "type": "feature"
}
```

### Create note

Capture customer feedback as a note in the Productboard Insights inbox. Attach it to a customer by email (the user is created if Productboard has not seen them) or to a company, and link it to the feature it is about. Returns the new note's ID and link.

**Inputs**

- Title (`name`, text, required): The note's title, up to 255 characters.
- Note type (`note_type`, text): A text note holds one piece of text. A conversation holds a list of messages between a customer and your agents. One of: `textNote` (Text note), `conversationNote` (Conversation). Default: `textNote`.
- Content (`content`, text): The feedback itself, for a text note. Plain text or HTML.
- Messages (`messages`, list): For a conversation only: a list of messages, each with externalId, authorType ('customer' or 'agent'), content, timestamp and, optionally, authorName.
- Tags (`tags`, list): Tag names. A tag that does not exist yet is created.
- Owner (`owner`, text): A workspace member. Pick one, or type their email or member ID.
- Customer email (`customer_email`, text): The customer this feedback is from, named by email. The user must already exist in Productboard - Productboard does not create one from an email given here. Create it first with 'Create entity' (entity type 'user', with its email field set).
- Customer company ID (`customer_company_id`, text): Instead of an email: the company this feedback is from. Use one or the other - a note has one customer.
- Linked feature (`entity_id`, text): A feature or other entity this feedback is about - its ID or Productboard URL.
- Source system (`source_system`, text): The system the record came from, such as 'zendesk'.
- Source record ID (`source_record_id`, text): The record's ID in that system.
- Source URL (`source_url`, text): A link back to the record in that system.

**Outputs**

- `id` (text)
- `links` (object)
- `type` (text)

**Example output**

```json
{
  "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "links": {
    "html": "https://example.productboard.com/all-notes/notes/1",
    "self": "https://api.productboard.com/v2/notes/3fa85f64-5717-4562-b3fc-2c963f66afa6"
  },
  "type": "textNote"
}
```

### Delete entity

Permanently delete an entity AND everything under it: deleting a component deletes its features and their subfeatures too. This cannot be undone - to hide an entity instead, archive it with 'Update entity'.

**Inputs**

- Entity (`entity_id`, text, required): The feature, component, product or other entity's ID, or its Productboard URL. 'List entities' returns it as 'id'.

**Outputs**

- `deleted` (true/false)
- `id` (text)

**Example output**

```json
{
  "deleted": true,
  "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}
```

### Delete note

Permanently delete a note. This cannot be undone - to keep it out of the way instead, archive it with 'Update note'.

**Inputs**

- Note (`note_id`, text, required): The note's ID, or its Productboard URL. 'List notes' returns it as 'id'.

**Outputs**

- `deleted` (true/false)
- `id` (text)

**Example output**

```json
{
  "deleted": true,
  "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}
```

### Get entity

Read one feature, component, product or other entity: its name, status, owner, timeframe, teams, health, tags, custom fields and relationships.

**Inputs**

- Entity (`entity_id`, text, required): The feature, component, product or other entity's ID, or its Productboard URL. 'List entities' returns it as 'id'.

**Outputs**

- `createdAt` (text)
- `fields` (object)
- `id` (text)
- `links` (object)
- `metadata` (object)
- `relationships` (object)
- `type` (text)
- `updatedAt` (text)

**Example output**

```json
{
  "createdAt": "2026-09-01T10:00:00Z",
  "fields": {
    "archived": false,
    "name": "CSV export",
    "owner": {
      "email": "pm@example.com",
      "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
    },
    "status": {
      "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
      "name": "In progress"
    },
    "tags": [
      {
        "name": "export"
      }
    ]
  },
  "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "links": {
    "html": "https://example.productboard.com/entity-detail/features/1",
    "self": "https://api.productboard.com/v2/entities/3fa85f64-5717-4562-b3fc-2c963f66afa6"
  },
  "type": "feature",
  "updatedAt": "2026-09-01T10:00:00Z"
}
```

### Get member

Read one workspace member: name, email, role and teams.

**Inputs**

- Member (`member_id`, text, required): The member's ID. 'List members' returns it as 'id'.

**Outputs**

- `fields` (object)
- `id` (text)
- `links` (object)
- `type` (text)

**Example output**

```json
{
  "fields": {
    "disabled": false,
    "email": "pm@example.com",
    "invitationPending": false,
    "name": "Pat Manager",
    "role": "admin",
    "teams": [],
    "username": "pat"
  },
  "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
  "links": {
    "self": "https://api.productboard.com/v2/members/7c9e6679-7425-40de-944b-e07fc1f90ae7"
  },
  "type": "member"
}
```

### Get note

Read one feedback note: its title, content, tags, owner, whether it is processed or archived, and its customer and linked features.

**Inputs**

- Note (`note_id`, text, required): The note's ID, or its Productboard URL. 'List notes' returns it as 'id'.

**Outputs**

- `createdAt` (text)
- `fields` (object)
- `id` (text)
- `links` (object)
- `metadata` (object)
- `relationships` (object)
- `type` (text)
- `updatedAt` (text)

**Example output**

```json
{
  "createdAt": "2026-09-01T10:00:00Z",
  "fields": {
    "archived": false,
    "content": "We need to export reports to CSV.",
    "name": "Export to CSV please",
    "owner": {
      "email": "pm@example.com",
      "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
    },
    "processed": false,
    "tags": [
      {
        "name": "export"
      }
    ]
  },
  "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "links": {
    "html": "https://example.productboard.com/all-notes/notes/1",
    "self": "https://api.productboard.com/v2/notes/3fa85f64-5717-4562-b3fc-2c963f66afa6"
  },
  "relationships": {
    "data": [],
    "links": {
      "next": null
    }
  },
  "type": "textNote",
  "updatedAt": "2026-09-01T10:00:00Z"
}
```

### Link entities

Link two entities, or record that one blocks or is blocked by the other. Productboard allows only some pairs of types. To move an entity under another, use 'Set entity parent'.

**Inputs**

- Entity (`entity_id`, text, required): The feature, component, product or other entity's ID, or its Productboard URL. 'List entities' returns it as 'id'.
- Link to (`target_id`, text, required): The other entity - its ID or Productboard URL.
- Relationship (`relationship_type`, text): A plain link, or a dependency. Productboard allows only some pairs of entity types; 'List entity types' shows which. One of: `link`, `isBlockedBy` (Is blocked by), `isBlocking` (Is blocking). Default: `link`.

**Outputs**

- `target` (object)
- `type` (text)

**Example output**

```json
{
  "target": {
    "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
    "links": {
      "self": "https://api.productboard.com/v2/entities/7c9e6679-7425-40de-944b-e07fc1f90ae7"
    },
    "type": "feature"
  },
  "type": "link"
}
```

### Link note

Link a note to a feature or other entity, or attach its customer by email or company. A note has one customer: Productboard refuses a second one.

**Inputs**

- Note (`note_id`, text, required): The note's ID, or its Productboard URL. 'List notes' returns it as 'id'.
- Feature or entity (`entity_id`, text): Link the note to this feature or other entity (ID or Productboard URL). Fill in this, a customer email or a company ID - just one.
- Customer email (`customer_email`, text): Attach the customer with this email, creating the user if needed. Productboard refuses this when the note already has a customer.
- Customer company ID (`customer_company_id`, text): Attach this company as the note's customer.

**Outputs**

- `target` (object)
- `type` (text)

**Example output**

```json
{
  "target": {
    "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
    "links": {
      "self": "https://api.productboard.com/v2/entities/7c9e6679-7425-40de-944b-e07fc1f90ae7"
    },
    "type": "feature"
  },
  "type": "link"
}
```

### List entities

List features, components, products or any other entity type, filtered by name, owner, status, team, parent or archived state. Every filter must match. Returns one page; pass 'next_cursor' back to get the next.

**Inputs**

- Entity type (`entity_type`, text): Only entities of this type. Leave blank for every type.
- Name (`name`, text): Only entities with this name.
- Owner (`owner`, text): Only records owned by this member (email or member ID).
- Status (`status`, text): Only entities with this status (name or ID).
- Team (`team`, text): Only entities assigned to this team.
- Archived (`archived`, text): Leave blank for both archived and active entities. One of: `true` (Archived only), `false` (Not archived only).
- Parent (`parent_id`, text): Only entities directly under this one (ID or Productboard URL).
- Source system (`source_system`, text): The system the record came from, such as 'zendesk'.
- Source record ID (`source_record_id`, text): The record's ID in that system.
- Page cursor (`page_cursor`, text): Leave blank for the first page. For the next one, pass 'next_cursor' from the previous result.

**Outputs**

- `count` (number)
- `entities` (list)
- `has_more` (true/false)
- `next_cursor` (text)

**Example output**

```json
{
  "count": 1,
  "entities": [
    {
      "createdAt": "2026-09-01T10:00:00Z",
      "fields": {
        "archived": false,
        "name": "CSV export",
        "owner": {
          "email": "pm@example.com",
          "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
        },
        "status": {
          "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
          "name": "In progress"
        },
        "tags": [
          {
            "name": "export"
          }
        ]
      },
      "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "links": {
        "html": "https://example.productboard.com/entity-detail/features/1",
        "self": "https://api.productboard.com/v2/entities/3fa85f64-5717-4562-b3fc-2c963f66afa6"
      },
      "type": "feature",
      "updatedAt": "2026-09-01T10:00:00Z"
    }
  ],
  "has_more": false,
  "next_cursor": null
}
```

### List entity relationships

List an entity's parent, children, links and dependencies (what it blocks and what blocks it).

**Inputs**

- Entity (`entity_id`, text, required): The feature, component, product or other entity's ID, or its Productboard URL. 'List entities' returns it as 'id'.
- Relationship (`relationship_type`, text): Only this kind of relationship. Leave blank for all. One of: `parent`, `child`, `link`, `isBlockedBy` (Is blocked by), `isBlocking` (Is blocking).
- Related type (`target_type`, text): Only relationships to this entity type.
- Related entity (`target_id`, text): Only relationships to this entity (ID or Productboard URL).
- Page cursor (`page_cursor`, text): Leave blank for the first page. For the next one, pass 'next_cursor' from the previous result.

**Outputs**

- `count` (number)
- `has_more` (true/false)
- `next_cursor` (text)
- `relationships` (list)

**Example output**

```json
{
  "count": 1,
  "has_more": false,
  "next_cursor": null,
  "relationships": [
    {
      "target": {
        "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
        "links": {
          "self": "https://api.productboard.com/v2/entities/7c9e6679-7425-40de-944b-e07fc1f90ae7"
        },
        "type": "feature"
      },
      "type": "link"
    }
  ]
}
```

### List entity types

List the entity types this workspace has - such as product, component, feature and subfeature - with each type's fields (including custom field IDs), which fields are required, and which relationships it allows. Types differ between workspaces.

**Inputs**

- Page cursor (`page_cursor`, text): Leave blank for the first page. For the next one, pass 'next_cursor' from the previous result.

**Outputs**

- `count` (number)
- `entity_types` (list)
- `has_more` (true/false)
- `next_cursor` (text)

**Example output**

```json
{
  "count": 1,
  "entity_types": [
    {
      "fields": {},
      "relationships": {},
      "type": "feature"
    }
  ],
  "has_more": false,
  "next_cursor": null
}
```

### List members

List the workspace's members, oldest first, with their name, email, role and teams. Productboard may show names and emails as '[redacted]'; use the member ID then.

**Inputs**

- Search (`query`, text): Part of a member's name or email.
- Roles (`roles`, list): Only members with these roles. Leave empty for all. One or more of: `admin`, `maker`, `contributor`, `viewer`.
- Include disabled members (`include_disabled`, true/false): Also list members whose access has been turned off. Default: `false`.
- Include pending invitations (`include_invitation_pending`, true/false): Also list people invited who have not joined yet. Default: `false`.
- Page cursor (`page_cursor`, text): Leave blank for the first page. For the next one, pass 'next_cursor' from the previous result.

**Outputs**

- `count` (number)
- `has_more` (true/false)
- `members` (list)
- `next_cursor` (text)

**Example output**

```json
{
  "count": 1,
  "has_more": false,
  "members": [
    {
      "fields": {
        "disabled": false,
        "email": "pm@example.com",
        "invitationPending": false,
        "name": "Pat Manager",
        "role": "admin",
        "teams": [],
        "username": "pat"
      },
      "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
      "links": {
        "self": "https://api.productboard.com/v2/members/7c9e6679-7425-40de-944b-e07fc1f90ae7"
      },
      "type": "member"
    }
  ],
  "next_cursor": null
}
```

### List note relationships

List what a note is attached to: its customer (a user or a company - at most one) and the features and other entities it is linked to.

**Inputs**

- Note (`note_id`, text, required): The note's ID, or its Productboard URL. 'List notes' returns it as 'id'.
- Relationship (`relationship_type`, text): Only this kind of relationship. Leave blank for both. One of: `customer`, `link` (Linked feature or other entity).
- Linked to (`target_type`, text): Only relationships to this kind of record. Leave blank for all. One of: `user`, `company`, `feature`, `subfeature`, `product`, `component`.
- How many (`limit`, number): How many relationships per page. Leave blank for Productboard's default. At least 1.
- Page cursor (`page_cursor`, text): Leave blank for the first page. For the next one, pass 'next_cursor' from the previous result.

**Outputs**

- `count` (number)
- `has_more` (true/false)
- `next_cursor` (text)
- `relationships` (list)

**Example output**

```json
{
  "count": 1,
  "has_more": false,
  "next_cursor": null,
  "relationships": [
    {
      "target": {
        "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
        "links": {
          "self": "https://api.productboard.com/v2/entities/7c9e6679-7425-40de-944b-e07fc1f90ae7"
        },
        "type": "feature"
      },
      "type": "link"
    }
  ]
}
```

### List notes

List feedback notes, newest first, filtered by type, owner, creator, archived or processed state, when they were created or updated, or the system they came from. Returns one page; pass 'next_cursor' back to get the next.

**Inputs**

- Note type (`note_type`, text): Only notes of this type. Leave blank for all. One of: `textNote` (Text note), `conversationNote` (Conversation).
- Archived (`archived`, text): Leave blank for both. Productboard reports archived notes as unprocessed. One of: `true` (Archived only), `false` (Not archived only).
- Processed (`processed`, text): Leave blank for both processed and unprocessed notes. One of: `true` (Processed only), `false` (Unprocessed only).
- Owner (`owner`, text): Only records owned by this member (email or member ID).
- Created by (`creator`, text): Only notes created by this member (email or member ID).
- Created from (`created_from`, date and time): Only notes created at or after this moment.
- Created to (`created_to`, date and time): Only notes created at or before this moment.
- Updated from (`updated_from`, date and time): Only notes updated at or after this moment.
- Updated to (`updated_to`, date and time): Only notes updated at or before this moment.
- Source system (`source_system`, text): The system the record came from, such as 'zendesk'.
- Source record ID (`source_record_id`, text): The record's ID in that system.
- Page cursor (`page_cursor`, text): Leave blank for the first page. For the next one, pass 'next_cursor' from the previous result.

**Outputs**

- `count` (number)
- `has_more` (true/false)
- `next_cursor` (text)
- `notes` (list)

**Example output**

```json
{
  "count": 1,
  "has_more": false,
  "next_cursor": null,
  "notes": [
    {
      "createdAt": "2026-09-01T10:00:00Z",
      "fields": {
        "archived": false,
        "content": "We need to export reports to CSV.",
        "name": "Export to CSV please",
        "owner": {
          "email": "pm@example.com",
          "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
        },
        "processed": false,
        "tags": [
          {
            "name": "export"
          }
        ]
      },
      "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "links": {
        "html": "https://example.productboard.com/all-notes/notes/1",
        "self": "https://api.productboard.com/v2/notes/3fa85f64-5717-4562-b3fc-2c963f66afa6"
      },
      "relationships": {
        "data": [],
        "links": {
          "next": null
        }
      },
      "type": "textNote",
      "updatedAt": "2026-09-01T10:00:00Z"
    }
  ]
}
```

### List teams

List the workspace's teams, newest first, by exact name, exact handle or part of the name.

**Inputs**

- Name (`name`, text): Only the team with exactly this name (any case).
- Handle (`handle`, text): Only the team with exactly this handle.
- Search (`query`, text): Part of a team's name.
- Page cursor (`page_cursor`, text): Leave blank for the first page. For the next one, pass 'next_cursor' from the previous result.

**Outputs**

- `count` (number)
- `has_more` (true/false)
- `next_cursor` (text)
- `teams` (list)

**Example output**

```json
{
  "count": 1,
  "has_more": false,
  "next_cursor": null,
  "teams": [
    {
      "fields": {
        "description": "",
        "handle": "platform",
        "name": "Platform"
      },
      "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
      "links": {
        "self": "https://api.productboard.com/v2/teams/7c9e6679-7425-40de-944b-e07fc1f90ae7"
      },
      "type": "team"
    }
  ]
}
```

### Search entities

Find entities of one type by name, IDs, owner, status, teams, parent, archived state or custom field values. Unlike 'List entities' it can match custom fields and several owners or teams at once. Every filter must match.

**Inputs**

- Entity type (`entity_type`, text, required): The kind of entity. The list shows the types this workspace has.
- Name (`name`, text): Only entities with this name.
- Entity IDs (`entity_ids`, list): Only these entities.
- Owner (`owner`, text): Only records owned by this member (email or member ID).
- Status (`status`, text): Only entities with this status (name or ID).
- Teams (`teams`, list): Only entities assigned to these teams.
- Archived (`archived`, text): Leave blank for both archived and active entities. One of: `true` (Archived only), `false` (Not archived only).
- Parent (`parent_id`, text): Only entities directly under this one (ID or Productboard URL).
- Custom field values (`custom_fields`, object): Only entities whose custom fields have these values, keyed by field ID.
- Source system (`source_system`, text): The system the record came from, such as 'zendesk'.
- Source record ID (`source_record_id`, text): The record's ID in that system.
- Fields returned (`return_fields`, text): Whether to include fields that have no value. One of: `default` (Fields that have a value), `all` (Every field, including empty ones). Default: `default`.
- Page cursor (`page_cursor`, text): Leave blank for the first page. For the next one, pass 'next_cursor' from the previous result.

**Outputs**

- `count` (number)
- `entities` (list)
- `has_more` (true/false)
- `next_cursor` (text)

**Example output**

```json
{
  "count": 1,
  "entities": [
    {
      "createdAt": "2026-09-01T10:00:00Z",
      "fields": {
        "archived": false,
        "name": "CSV export",
        "owner": {
          "email": "pm@example.com",
          "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
        },
        "status": {
          "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
          "name": "In progress"
        },
        "tags": [
          {
            "name": "export"
          }
        ]
      },
      "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "links": {
        "html": "https://example.productboard.com/entity-detail/features/1",
        "self": "https://api.productboard.com/v2/entities/3fa85f64-5717-4562-b3fc-2c963f66afa6"
      },
      "type": "feature",
      "updatedAt": "2026-09-01T10:00:00Z"
    }
  ],
  "has_more": false,
  "next_cursor": null
}
```

### Set entity parent

Move an entity under a new parent, replacing the one it had - for example, move a feature to another component.

**Inputs**

- Entity (`entity_id`, text, required): The feature, component, product or other entity's ID, or its Productboard URL. 'List entities' returns it as 'id'.
- New parent (`parent_id`, text, required): The entity to move this one under - its ID or Productboard URL. A feature goes under a product or component; a subfeature under a feature.

**Outputs**

- `target` (object)
- `type` (text)

**Example output**

```json
{
  "target": {
    "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
    "links": {
      "self": "https://api.productboard.com/v2/entities/7c9e6679-7425-40de-944b-e07fc1f90ae7"
    },
    "type": "feature"
  },
  "type": "parent"
}
```

### Update entity

Change an entity's name, description, status, owner, teams, tags, timeframe, health, custom fields or archived state. Blank fields are left as they are; teams and tags given here replace the current ones.

**Inputs**

- Entity (`entity_id`, text, required): The feature, component, product or other entity's ID, or its Productboard URL. 'List entities' returns it as 'id'.
- Name (`name`, text): A new name. Leave blank to keep it.
- Description (`description`, text): The entity's description. Plain text or HTML.
- Status (`status`, text): A status name as it appears in Productboard, such as 'In progress', or a status ID.
- Owner (`owner`, text): A workspace member. Pick one, or type their email or member ID.
- Teams (`teams`, list): The teams responsible. On an update, these replace the current teams.
- Tags (`tags`, list): Tag names. On an update, these replace the current tags.
- Start date (`start_date`, date): When the work starts. Needs an end date too.
- End date (`end_date`, date): When the work ends. Needs a start date too.
- Timeframe shown as (`granularity`, text): How Productboard shows the timeframe. Defaults to day. One of: `day`, `month`, `quarter`, `year`.
- Health (`health_status`, text): Set the health by hand. One of: `onTrack` (On track), `atRisk` (At risk), `offTrack` (Off track).
- Health comment (`health_comment`, text): Why the health is what it is. Needs a health value.
- Archive (`archived`, text): Leave blank to keep as is. One of: `true` (Archive it), `false` (Unarchive it).
- Custom fields (`custom_fields`, object): Values for custom fields, keyed by the field's ID. 'List entity types' shows each field's ID.

**Outputs**

- `id` (text)
- `links` (object)
- `type` (text)

**Example output**

```json
{
  "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "links": {
    "html": "https://example.productboard.com/entity-detail/features/1",
    "self": "https://api.productboard.com/v2/entities/3fa85f64-5717-4562-b3fc-2c963f66afa6"
  },
  "type": "feature"
}
```

### Update note

Change a note's title, content or owner, archive or unarchive it, mark it processed, or add and remove tags without touching the others. Blank fields are left as they are. Archiving marks a note unprocessed, and unarchiving marks it processed.

**Inputs**

- Note (`note_id`, text, required): The note's ID, or its Productboard URL. 'List notes' returns it as 'id'.
- Title (`name`, text): A new title. Leave blank to keep it.
- Content (`content`, text): New text, replacing the old - text notes only. Productboard refuses this for a note whose text has highlights linked to features.
- Owner (`owner`, text): A workspace member. Pick one, or type their email or member ID.
- Archive (`archived`, text): Leave blank to keep as is. Archiving marks the note unprocessed; unarchiving marks it processed. One of: `true` (Archive it), `false` (Unarchive it).
- Processed (`processed`, text): Leave blank to keep as is. One of: `true` (Mark processed), `false` (Mark unprocessed).
- Add tags (`add_tags`, list): Tag names to add. Tags already on the note stay.
- Remove tags (`remove_tags`, list): Tag names to take off the note.

**Outputs**

- `id` (text)
- `links` (object)
- `type` (text)

**Example output**

```json
{
  "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "links": {
    "html": "https://example.productboard.com/all-notes/notes/1",
    "self": "https://api.productboard.com/v2/notes/3fa85f64-5717-4562-b3fc-2c963f66afa6"
  },
  "type": "textNote"
}
```
