Skip to content

`GET /v1/orgs/{org}/proposals/{proposal_id}/comments`.

GET
/v1/orgs/{org}/proposals/{proposal_id}/comments
curl --request GET \
--url https://api.updawg.net/v1/orgs/example/proposals/example/comments

Oldest first. The most recent [db::comments::PAGE] of them, with total saying how many there are — see that constant for why it is the recent end rather than the first page.

org
required
string

Organization slug.

proposal_id
required
string

The prp_… id.

The thread, oldest first — the most recent page of it, with total saying how many there are.

Media typeapplication/json
object
comments
required
Array<object>
object
author
required
object
email
required
string
id
required
string
name
string | null
body
required
string
id
required
string
mentions
required

Who this comment addressed, as resolved when it was written.

Always present, empty when there were none, because a portal that has to tell null from [] will get it wrong once.

Array<object>
object
email
required
string
id
required
string
name
string | null
written_at
required
string format: date-time
total
required

Every comment on the proposal, including any outside this page.

integer format: int64
Examplegenerated
{
"comments": [
{
"author": {
"email": "example",
"id": "example",
"name": "example"
},
"body": "example",
"id": "example",
"mentions": [
{
"email": "example",
"id": "example",
"name": "example"
}
],
"written_at": "2026-04-15T12:00:00Z"
}
],
"total": 1
}

No session.

Media typeapplication/json
object
detail
string | null
status
required
integer format: int32
title
required
string
type
required
string
Examplegenerated
{
"detail": "example",
"status": 1,
"title": "example",
"type": "example"
}

Not permitted for this role.

Media typeapplication/json
object
detail
string | null
status
required
integer format: int32
title
required
string
type
required
string
Examplegenerated
{
"detail": "example",
"status": 1,
"title": "example",
"type": "example"
}

No such proposal here.

Media typeapplication/json
object
detail
string | null
status
required
integer format: int32
title
required
string
type
required
string
Examplegenerated
{
"detail": "example",
"status": 1,
"title": "example",
"type": "example"
}

Over the organization’s request limit. Retry-After says when to try again; RateLimit-Limit is the burst.

Media typeapplication/json
object
detail
string | null
status
required
integer format: int32
title
required
string
type
required
string
Examplegenerated
{
"detail": "example",
"status": 1,
"title": "example",
"type": "example"
}