List the open proposals in an idea bank. The response is paginated with an encrypted cursor and, when the panelist can vote, each proposal is merged with the panelist’s own vote on that proposal.
This endpoint requires the canViewProposals capability (see Get Idea Bank). When the panelist cannot view proposals, the endpoint returns an empty items array.
Request
GET /public/ideabank/proposals
Headers
Header
Required
Description
Authorization
Yes
Compound idea-bank token from Tenant API
Query Parameters
Parameter
Required
Description
sort
No
Sort order: recent (default) or votes
limit
No
Page size
cursor
No
Encrypted cursor from a previous response; omit for the first page
Response
{"items":[{"proposalId":"p-abc123","title":"Dark mode","description":"Please add a dark theme.","votes":12,"totalVotes":15,"tsCreated":1700000000,"myVote":{"vote":1,"isMutable":true,"tsVoted":1700001000}}],"cursor":"encrypted-cursor-token"}
Response Fields
Field
Type
Description
items
array
List of proposal objects
cursor
string
(Optional) Encrypted cursor for the next page. Absent on last page.
Proposal Object
Field
Type
Description
proposalId
string
Unique proposal identifier (use in voting and comment endpoints)
title
string
Proposal title
description
string
Proposal description
votes
integer
Net vote score for the proposal
totalVotes
integer
Total number of votes cast on the proposal
tsCreated
integer
Unix timestamp (seconds) when the proposal was created
myVote
object
(Optional) The panelist’s own vote, present only when they have voted
myVote Object
Field
Type
Description
vote
integer
The panelist’s vote: 1 for, -1 against
isMutable
boolean
Whether the panelist may still change or remove this vote
tsVoted
integer
Unix timestamp (seconds) when the panelist cast this vote
The myVote field is only merged into proposals when the panelist has the canVote capability. If the panelist has not voted on a proposal, myVote is absent for that proposal.
Pagination
Pages are traversed with an opaque, encrypted cursor. Request the first page without a cursor, then pass the cursor from each response into the next request until the response omits cursor, which signals the last page.