A valid request URL is required to generate request examples{
"post": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"environment_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"title": "<string>",
"body": "<string>",
"status": "open",
"votes": 123,
"weight": {
"currency": "<string>",
"amount_minor": 123,
"paying_customers": 123,
"other_currency_customers": 123,
"free_customers": 123
},
"author_contact_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"merged_into_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"created_by": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}
}{
"error": {
"code": "forbidden",
"message": "your role does not allow this action"
}
}{
"error": {
"code": "forbidden",
"message": "your role does not allow this action"
}
}{
"error": {
"code": "forbidden",
"message": "your role does not allow this action"
}
}{
"error": {
"code": "forbidden",
"message": "your role does not allow this action"
}
}Answer a feedback post
Requires feedback:write. The act, and it is an endpoint rather than a field on the edit: moving a post to planned is a commitment your users read on a public board, declined is a refusal, and shipped is what a changelog post aimed at the voters announces. All three publish feedback_post.status_changed to your webhooks, carrying both statuses so a subscriber acts on the transition rather than diffing two payloads.
Setting the status it already has answers 200 and announces nothing — a status_changed whose two statuses are equal would mail the voters twice.
A valid request URL is required to generate request examples{
"post": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"environment_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"title": "<string>",
"body": "<string>",
"status": "open",
"votes": 123,
"weight": {
"currency": "<string>",
"amount_minor": 123,
"paying_customers": 123,
"other_currency_customers": 123,
"free_customers": 123
},
"author_contact_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"merged_into_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"created_by": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}
}{
"error": {
"code": "forbidden",
"message": "your role does not allow this action"
}
}{
"error": {
"code": "forbidden",
"message": "your role does not allow this action"
}
}{
"error": {
"code": "forbidden",
"message": "your role does not allow this action"
}
}{
"error": {
"code": "forbidden",
"message": "your role does not allow this action"
}
}Authorizations
A staff session token, uk_st_…. Minted by sign-up, sign-in or the two-factor exchange. Only a 401 means it is spent; not_a_member (403) is about the organization named in X-Organization-Id and leaves the token good for the others.
Headers
The organization the caller is acting on — the org_… code that appears in the panel URL. It identifies; the membership JOIN is what authorizes, so a forged code reads nothing: the answer is not_a_member (403), which does not mean the session is over. Absent, the session's default organization answers, or — if that membership was revoked while the session was open — any other one the caller still holds.
Path Parameters
Body
open, planned, in_progress, shipped, declined Response
The post, at the status you asked for.
One thing somebody asked for. Written by one of your users or by your staff on their behalf, answered by a status, and folded into another post when it turns out to be a duplicate.
Show child attributes
Show child attributes