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.


POSTgetPortalProjects

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

POST
/getPortalProjects
{
	"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
}

POSTgetPortalChangelogs

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

POST
/getPortalProjects
{
	"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
}

POSTupvoteProject

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

POST
/upvoteProject
{
	"params": {
		"email": "raphael@productlane.io",
		"projectId": "0040954e-8887-...",
		// either one is required:
		"organizationName": "Productlane",
		"organizationId": "992eb553-8dc5-..."
	}
}

Response

{
	"result": null,
	"error": null
}

POSTsubmitFeedback

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 the projectId param was wrong

Request

POST
/submitFeedback
{
	"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
}