ByteChef LogoByteChef

Productboard

Productboard is a product management platform that helps teams prioritize features, gather customer feedback, and align their product strategy to deliver better products.

Categories: Project Management

Type: productboard/v1


Connections

Version: 1

Bearer Token

Properties

NameLabelTypeDescriptionRequired
tokenTokenSTRINGtrue

OAuth2 Authorization Code

Properties

NameLabelTypeDescriptionRequired
clientIdClient IdSTRINGtrue
clientSecretClient SecretSTRINGtrue

Connection Setup

Connect Productboard to ByteChef using either a Public API Access Token (Bearer Token) or OAuth 2.0 Authorization Code.

Public API Access Token

  1. Log in to Productboard.
  2. Open SettingsIntegrations.
  3. Go to the Manage tab.
  4. Under Public APIs, click Access token.
  5. Click + Add token and follow the prompts.
  6. Copy the generated token value.

OAuth 2.0 Authorization Code

  1. In Productboard, open: https://app.productboard.com/oauth2/applications
  2. Click New OAuth2 Application.
  3. Enter a name, description, and any other required fields.
  4. Add the ByteChef OAuth redirect (callback) URL(s):
    • Cloud: https://app.bytechef.io/callback
    • Local development: http://localhost:5173/callback
  5. Select the scopes your app needs. For the ByteChef Productboard connector, enable:
    • notes:create
    • notes:read
    • notes:manage
    • product_hierarchy_data:read
  6. Click Create Application.
  7. Copy the generated Client ID and Client Secret.

Actions

Create Note

Name: createNote

Creates a new note.

Properties

NameLabelTypeDescriptionRequired
titleTitleSTRINGTitle of note.true
contentContentSTRINGHTML-encoded rich text supported by certain tags; unsupported tags will be stripped out.true

Example JSON Structure

{
  "label" : "Create Note",
  "name" : "createNote",
  "parameters" : {
    "title" : "",
    "content" : ""
  },
  "type" : "productboard/v1/createNote"
}

Output

Type: OBJECT

Properties

NameTypeDescription
linksOBJECT
Properties {STRING(html)}
dataOBJECT
Properties {STRING(id)}

Output Example

{
  "links" : {
    "html" : ""
  },
  "data" : {
    "id" : ""
  }
}

Delete Note

Name: deleteNote

Deletes a note.

Properties

NameLabelTypeDescriptionRequired
noteIdNote IDSTRINGID of the notetrue

Example JSON Structure

{
  "label" : "Delete Note",
  "name" : "deleteNote",
  "parameters" : {
    "noteId" : ""
  },
  "type" : "productboard/v1/deleteNote"
}

Output

This action does not produce any output.

Get Feature

Name: getFeature

Returns detail of a specific feature.

Properties

NameLabelTypeDescriptionRequired
featureIdFeature IdSTRINGID of the featuretrue

Example JSON Structure

{
  "label" : "Get Feature",
  "name" : "getFeature",
  "parameters" : {
    "featureId" : ""
  },
  "type" : "productboard/v1/getFeature"
}

Output

Type: OBJECT

Properties

NameTypeDescription
dataOBJECT
Properties {STRING(id), STRING(name), STRING(description), STRING(type), {STRING(id), STRING(name)}(status), {{STRING(id), {STRING(self)}(links)}(component)}(parent), {STRING(self), STRING(html)}(links), BOOLEAN(archived), {STRING(startDate), STRING(endDate), STRING(granularity)}(timeframe), {STRING(email), STRING(name)}(owner), DATE_TIME(createdAt), DATE_TIME(updatedAt), DATE_TIME(lastHealthUpdate)}

Output Example

{
  "data" : {
    "id" : "",
    "name" : "",
    "description" : "",
    "type" : "",
    "status" : {
      "id" : "",
      "name" : ""
    },
    "parent" : {
      "component" : {
        "id" : "",
        "links" : {
          "self" : ""
        }
      }
    },
    "links" : {
      "self" : "",
      "html" : ""
    },
    "archived" : false,
    "timeframe" : {
      "startDate" : "",
      "endDate" : "",
      "granularity" : ""
    },
    "owner" : {
      "email" : "",
      "name" : ""
    },
    "createdAt" : "2021-01-01T00:00:00",
    "updatedAt" : "2021-01-01T00:00:00",
    "lastHealthUpdate" : "2021-01-01T00:00:00"
  }
}

Get Note

Name: getNote

Returns detail of a specific note.

Properties

NameLabelTypeDescriptionRequired
noteIdNote IDSTRINGID of the notetrue

Example JSON Structure

{
  "label" : "Get Note",
  "name" : "getNote",
  "parameters" : {
    "noteId" : ""
  },
  "type" : "productboard/v1/getNote"
}

Output

Type: OBJECT

Properties

NameTypeDescription
dataOBJECT
Properties {STRING(id), STRING(title), STRING(content), STRING(displayUrl), STRING(externalDisplayUrl), {STRING(id)}(company), {STRING(id)}(user), {STRING(email), STRING(name)}(owner), [{STRING(memberId), STRING(memberName), STRING(memberEmail), STRING(teamId), STRING(teamName)}](followers), STRING(state), {STRING(origin), STRING(record_id)}(source), STRING(tags), [{STRING(id), STRING(type), INTEGER(importance)}](features), DATE_TIME(createdAt), DATE_TIME(updatedAt), {STRING(email), STRING(name), STRING(uuid)}(createdBy)}

Output Example

{
  "data" : {
    "id" : "",
    "title" : "",
    "content" : "",
    "displayUrl" : "",
    "externalDisplayUrl" : "",
    "company" : {
      "id" : ""
    },
    "user" : {
      "id" : ""
    },
    "owner" : {
      "email" : "",
      "name" : ""
    },
    "followers" : [ {
      "memberId" : "",
      "memberName" : "",
      "memberEmail" : "",
      "teamId" : "",
      "teamName" : ""
    } ],
    "state" : "",
    "source" : {
      "origin" : "",
      "record_id" : ""
    },
    "tags" : "",
    "features" : [ {
      "id" : "",
      "type" : "",
      "importance" : 1
    } ],
    "createdAt" : "2021-01-01T00:00:00",
    "updatedAt" : "2021-01-01T00:00:00",
    "createdBy" : {
      "email" : "",
      "name" : "",
      "uuid" : ""
    }
  }
}

Update Note

Name: updateNote

Updates a note.

Properties

NameLabelTypeDescriptionRequired
noteIdNote IDSTRINGID of the notetrue
dataDataOBJECT
Properties {STRING(content), {STRING(email), STRING(name)}(owner), [STRING](tags), STRING(title)}
true

Example JSON Structure

{
  "label" : "Update Note",
  "name" : "updateNote",
  "parameters" : {
    "noteId" : "",
    "data" : {
      "content" : "",
      "owner" : {
        "email" : "",
        "name" : ""
      },
      "tags" : [ "" ],
      "title" : ""
    }
  },
  "type" : "productboard/v1/updateNote"
}

Output

Type: OBJECT

Properties

NameTypeDescription
linksOBJECT
Properties {STRING(html)}
dataOBJECT
Properties {STRING(id)}

Output Example

{
  "links" : {
    "html" : ""
  },
  "data" : {
    "id" : ""
  }
}

List All Notes

Name: listNotes

Returns detail of all notes order by created_at desc

Example JSON Structure

{
  "label" : "List All Notes",
  "name" : "listNotes",
  "type" : "productboard/v1/listNotes"
}

Output

Type: ARRAY

Items Type: OBJECT

Properties

NameTypeDescription
idSTRINGID of the note.
titleSTRINGTitle of note.
contentSTRINGHTML-encoded rich text supported by certain tags; unsupported tags will be stripped out.
displayUrlSTRINGNote display url leading to Productboard detail page.
externalDisplayUrlSTRINGURL in an external system where the note originated.
companyOBJECT
Properties {STRING(id)}
userOBJECT
Properties {STRING(id)}
ownerOBJECT
Properties {STRING(email), STRING(name)}
followersARRAY
Items [{STRING(memberId), STRING(memberName), STRING(memberEmail), STRING(teamId), STRING(teamName)}]
The followers of the note.
stateSTRINGState of the note.
sourceOBJECT
Properties {STRING(origin), STRING(record_id)}
tagsSTRINGComma-separated list of tags.
featuresARRAY
Items [{STRING(id), STRING(type), INTEGER(importance)}]
All features related to a given note.
createdAtDATE_TIMEDate and time when the note was created.
updatedAtDATE_TIMEDate and time when the note was last updated.
createdByOBJECT
Properties {STRING(email), STRING(name), STRING(uuid)}

Output Example

[ {
  "id" : "",
  "title" : "",
  "content" : "",
  "displayUrl" : "",
  "externalDisplayUrl" : "",
  "company" : {
    "id" : ""
  },
  "user" : {
    "id" : ""
  },
  "owner" : {
    "email" : "",
    "name" : ""
  },
  "followers" : [ {
    "memberId" : "",
    "memberName" : "",
    "memberEmail" : "",
    "teamId" : "",
    "teamName" : ""
  } ],
  "state" : "",
  "source" : {
    "origin" : "",
    "record_id" : ""
  },
  "tags" : "",
  "features" : [ {
    "id" : "",
    "type" : "",
    "importance" : 1
  } ],
  "createdAt" : "2021-01-01T00:00:00",
  "updatedAt" : "2021-01-01T00:00:00",
  "createdBy" : {
    "email" : "",
    "name" : "",
    "uuid" : ""
  }
} ]

Triggers

New Note

Name: newNote

Triggers when a note is created.

Type: DYNAMIC_WEBHOOK

Output

Type: OBJECT

Properties

NameTypeDescription
idSTRINGID of the note.
eventTypeSTRINGType of the event that triggered the webhook.
linksOBJECT
Properties {STRING(target)}
Links to the updated entity.

JSON Example

{
  "label" : "New Note",
  "name" : "newNote",
  "type" : "productboard/v1/newNote"
}

Updated Feature

Name: updatedFeature

Triggers when a feature is updated.

Type: DYNAMIC_WEBHOOK

Output

Type: OBJECT

Properties

NameTypeDescription
idSTRINGID of the updated feature.
eventTypeSTRINGType of the event that triggered the webhook.
linksOBJECT
Properties {STRING(target)}
Links to the updated entity.
updatedAttributesARRAY
Items [STRING]
List of updated attributes.

JSON Example

{
  "label" : "Updated Feature",
  "name" : "updatedFeature",
  "type" : "productboard/v1/updatedFeature"
}

What to do if your action is not listed here?

If this component doesn't have the action you need, you can use Custom Action to create your own. Custom Actions empower you to define HTTP requests tailored to your specific requirements, allowing for greater flexibility in integrating with external services or APIs.

To create a Custom Action, simply specify the desired HTTP method, path, and any necessary parameters. This way, you can extend the functionality of your component beyond the predefined actions, ensuring that you can meet all your integration needs effectively.

How is this guide?

Last updated on

On this page