Portal
This page has all the methods related to the Portal.
All of the Portal endpoints are OPEN -- they're accessible without authentication.
However: some of the endpoints have additional functionality, or set convenient defaults, when you provide an access token.
Get portal projects
Gets all the information displayed on the Public Roadmap page
Params
- Name
organizationId- Type
- string
- (optional)
- Description
ID of the org that you want to get the Public Roadmap data from. If left out, this endpoint requires you to authenticate. It will then return your own org's data.
- Name
sort- (optional)
- Description
Sorts the projects. Only one property may be specified.
- Name
sort.upvotes- Type
- "asc" | "desc"
- Description
Result
- Name
result.organization- Type
- Organization
- Description
Info about the org. Theme colors, links, display names, and more
- Name
result.project- Type
- Project[]
- Description
List of projects that were made visible through the Dashboard. View all your projects
Request
{
"params": {
"organizationId": "922eb553-8dc5..."
}
}
Response
{
"result": {
"organization": {
"domain": "hello",
"changelogLink1Description": "Follow us on Twitter",
"changelogLink1Url": "https://twitter.com/productlane_",
"changelogLink2Description": "Sign up with Linear",
"changelogLink2Url": "https://productlane.io/",
"logoLink": "https://productlane.io/",
"id": "922eb553-8dc5-4a00-a16b-01735334be53",
"name": "Productlane",
"logoUrl": "https://...",
"darkMode": null,
"backgroundColor": "#fff",
"textColor": "#1F2023",
"accentColor": "#6A35FF",
"accentTextColor": "#FFFFFF",
"darkModeBackgroundColor": "#060606",
"darkModeTextColor": "#D0D6E0",
"darkModeAccentColor": "#26B5CE",
"darkModeAccentTextColor": "#000"
},
"projects": [
{
"id": "4375ad1e-a0de-4219-8c95-6426d560269f",
"name": "Invite Non Linear Users",
"icon": "Sun",
"color": "#26b5ce",
"milestone": "backlog",
"milestoneLinearId": null,
"milestoneSortOrder": 0,
"isVisible": null,
"painLevel": 29,
"targetDate": null,
"state": "backlog",
"description": "You can invite users to be able to see the portal. For now everyone needs a Linear account.",
"sortOrder": -70407,
"notes": null,
"progress": 0,
"segments": null,
"upvoteCount": 9,
},
{
"id": "6a4dda18-44e3-4331-a71d-20714305c017",
"name": "Figjam",
"icon": "Bolt",
"color": "#26b5ce",
"milestone": "backlog",
"milestoneLinearId": null,
"milestoneSortOrder": 0,
"isVisible": null,
"painLevel": 5,
"targetDate": null,
"state": "backlog",
"description": "To prioritize projects easier with RICE scores or other techniques",
"sortOrder": -70420,
"notes": null,
"progress": 0,
"segments": null,
"upvoteCount": 1,
}
],
"latestChangelog": {
"id": "803c51ca-f80a-4a6f-9cef-92fdeebde2e1",
"createdAt": "2022-10-24T08:21:53.593Z",
"updatedAt": "2022-10-31T14:54:28.731Z",
"date": null, // Custom date set through the dashboard, overriding createdAt
"published": true,
"projectId": null,
"title": "Hide selected Linear Teams",
"notes": /* Omitted for brevity. Contains text body of the changelog. */,
"archived": false,
"imageUrl": "https://...",
"organizationId": "922eb553-8dc5-4a00-a16b-01735334be53"
}
},
"error": null
}
Get portal changelogs
Gets all the information displayed on the Changelogs page
Params
- Name
orgId- Type
- string
- (optional)
- Description
ID of the org that you want to get the Changelog data from
Result
- Name
result.organization- Type
- Organization
- Description
Info about the org. Theme colors, links, display names, and more
- Name
result.changelogs- Type
- Project[]
- Description
List of changelogs that were published through the Dashboard. View all your changelogs
Request
{
"params": {
"orgId": "922eb553-8dc5..."
}
}
Response
{
"result": {
"organization": {
"domain": "hello",
"changelogLink1Description": "Follow us on Twitter",
"changelogLink1Url": "https://twitter.com/productlane_",
"changelogLink2Description": "Sign up with Linear",
"changelogLink2Url": "https://productlane.io/",
"logoLink": "https://productlane.io/",
"id": "922eb553-8dc5-4a00-a16b-01735334be53",
"name": "Productlane",
"logoUrl": "https://...",
"darkMode": null,
"backgroundColor": "#fff",
"textColor": "#1F2023",
"accentColor": "#6A35FF",
"accentTextColor": "#FFFFFF",
"darkModeBackgroundColor": "#060606",
"darkModeTextColor": "#D0D6E0",
"darkModeAccentColor": "#26B5CE",
"darkModeAccentTextColor": "#000"
},
"changelogs": [
{
"id": "0f9f574f-ad84-4960-a130-9747b14198db",
"createdAt": "2022-02-18T12:38:50.573Z", // You likely want to display this date
"updatedAt": "2022-05-18T06:59:48.703Z",
"published": true,
"projectId": "09bb7025-bf7e-426d-88e8-28cbca9c9a76",
"title": "New Changelog Builder",
"notes": {
// TipTap/ProseMirror document JSON
"type": "doc",
"content": ...
},
"imageUrl": "https://awsstack-useruploadsc4e4fe35-e6kyprroiz9v.s3.amazonaws.com/0f9f574f-ad84-4960-a130-9747b14198db_2022-05-18T06:59:46.273Z_changelog_banner",
"organizationId": "922eb553-8dc5-4a00-a16b-01735334be53"
},
...
],
},
"error": null
}
Upvote a project
Upvotes a project using a user's email address
Params
- Name
email- Type
- string
- Description
Email of the user who's upvoting the project
- Name
organizationId / organizationName- Type
- string
- Description
ID or name of the organization
- Name
projectId- Type
- string
- Description
ID of the project the user is upvoting
Result
- Name
result- Type
- null
- Description
Always null (even if the request succeeds)
To check whether the request succeeded, check if error is null
- Name
error- Type
- Error
- Description
Null if the request succeeded, otherwise an error object
- Name
error.code- Type
- string
- Description
Depending on the error,
"ALREADY_UPVOTED"or"PROJECT_NOT_FOUND"
Request
{
"params": {
"email": "raphael@productlane.io",
"projectId": "0040954e-8887-...",
// either one is required:
"organizationName": "Productlane",
"organizationId": "992eb553-8dc5-..."
}
}
Response
{
"result": null,
"error": null
}
Submit an insight
Submits an insight (feedback) using a user's email address
Params
- Name
text- Type
- string
- Description
Text to be included in the feedback
- Name
organizationId / organizationName- Type
- string
- Description
ID or name of the organization
- Name
painLevel- Type
- "UNKNOWN" | "LOW" | "MEDIUM" | "HIGH"
- Description
How critical this feature is to the user.
In the Productlane Portal and Dashboard, these are displayed differently:
"LOW"is called Medium "MEDIUM"is called High "HIGH"is called Critical
- Name
email- Type
- string
- Description
Email of the user who's submitting the feedback
- Name
projectId- Type
- string
- (optional)
- Description
ID of the project the user is submitting feedback for
- Name
notify- (optional)
- Description
- Name
notify.email- Type
- boolean
- (optional)
- Description
Whether to send an email notification to all users who have enabled email notifications
- Name
notify.slack- Type
- boolean
- (optional)
- Description
Whether to send a slack notification to the channel configured for the slack integration
Result
- Name
result- Type
- null
- Description
Always null (even if the request succeeds)
To check whether the request succeeded, check if error is null
- Name
error- Type
- Error
- Description
Null if the request succeeded, otherwise an error object
- Name
error.code- Type
- string
- Description
This is
"PROJECT_NOT_LINKED"if the feedback was created, but the project couldn't be linked. This commonly means theprojectIdparam was wrong
Request
{
"params": {
"text": "I just want to tell you how I'm feeling, gotta...",
"painLevel": "LOW",
"email": "rick@example.com",
"projectId": "0040954e-8887-...",
"organizationName": "Productlane"
}
}
Response
{
"result": null,
"error": null
}