Part of Customer Portal.
| Method |
Path |
Summary |
| GET |
/api/v1/orgs/{org_slug}/portal/community/forum/me |
Forum viewer summary |
| POST |
/api/v1/orgs/{org_slug}/portal/community/forum/moderation/members/{handle}/role |
Set member role |
| POST |
/api/v1/orgs/{org_slug}/portal/community/forum/moderation/members/{handle}/suspend |
Suspend member |
| GET |
/api/v1/orgs/{org_slug}/portal/community/forum/moderation/reports |
Moderation reports |
| POST |
/api/v1/orgs/{org_slug}/portal/community/forum/moderation/reports/{report_id}/resolve |
Close a report, optionally acting on what it pointed at |
| POST |
/api/v1/orgs/{org_slug}/portal/community/forum/moderation/threads/{thread_id}/flags |
Pin, lock, move or mark a thread as a duplicate |
| PUT |
/api/v1/orgs/{org_slug}/portal/community/forum/posts/{post_id} |
Update post |
| DELETE |
/api/v1/orgs/{org_slug}/portal/community/forum/posts/{post_id} |
Delete post |
| POST |
/api/v1/orgs/{org_slug}/portal/community/forum/posts/{post_id}/react |
React to post |
| POST |
/api/v1/orgs/{org_slug}/portal/community/forum/posts/{post_id}/vote |
Vote post |
| POST |
/api/v1/orgs/{org_slug}/portal/community/forum/reports |
Report content |
| GET |
/api/v1/orgs/{org_slug}/portal/community/forum/subscriptions |
Threads the member follows, with how many posts they have not seen |
| POST |
/api/v1/orgs/{org_slug}/portal/community/forum/subscriptions/read |
Mark subscriptions read |
| POST |
/api/v1/orgs/{org_slug}/portal/community/forum/threads |
Create thread |
| PUT |
/api/v1/orgs/{org_slug}/portal/community/forum/threads/{thread_id} |
Update thread |
| DELETE |
/api/v1/orgs/{org_slug}/portal/community/forum/threads/{thread_id} |
Delete thread |
| POST |
/api/v1/orgs/{org_slug}/portal/community/forum/threads/{thread_id}/bump |
Bump thread |
| POST |
/api/v1/orgs/{org_slug}/portal/community/forum/threads/{thread_id}/posts |
Create post |
| POST |
/api/v1/orgs/{org_slug}/portal/community/forum/threads/{thread_id}/solution |
Accept a reply as the answer |
| DELETE |
/api/v1/orgs/{org_slug}/portal/community/forum/threads/{thread_id}/solution |
Clear solution |
| POST |
/api/v1/orgs/{org_slug}/portal/community/forum/threads/{thread_id}/subscription |
Toggle subscription |
| DELETE |
/api/v1/orgs/{org_slug}/portal/community/forum/threads/{thread_id}/subscription |
Stop following, idempotently |
| GET |
/api/v1/orgs/{org_slug}/portal/community/guides/articles |
My articles |
| POST |
/api/v1/orgs/{org_slug}/portal/community/guides/articles |
Create article |
| GET |
/api/v1/orgs/{org_slug}/portal/community/guides/articles/{article_id} |
Get my article |
| PUT |
/api/v1/orgs/{org_slug}/portal/community/guides/articles/{article_id} |
Propose or update |
| DELETE |
/api/v1/orgs/{org_slug}/portal/community/guides/articles/{article_id} |
The author removing their own guide, whatever state it is in |
| GET |
/api/v1/orgs/{org_slug}/portal/community/guides/articles/{article_id}/diff |
Article diff |
| POST |
/api/v1/orgs/{org_slug}/portal/community/guides/articles/{article_id}/proposal/withdraw |
Withdraw proposal |
| POST |
/api/v1/orgs/{org_slug}/portal/community/guides/articles/{article_id}/propose |
Propose or update |
| GET |
/api/v1/orgs/{org_slug}/portal/community/guides/moderation |
Moderation queue |
| POST |
/api/v1/orgs/{org_slug}/portal/community/guides/moderation/articles/{article_id}/approve |
Publish a guide's pending proposal as a customer moderator |
| POST |
/api/v1/orgs/{org_slug}/portal/community/guides/moderation/articles/{article_id}/reject |
Reject a guide's pending proposal as a customer moderator |
| POST |
/api/v1/orgs/{org_slug}/portal/community/guides/moderation/articles/{article_id}/request-changes |
Ask the author of a pending proposal to change it, as a customer moderator |
| POST |
/api/v1/orgs/{org_slug}/portal/community/guides/moderation/comments/{comment_id}/approve |
Mod approve comment |
| POST |
/api/v1/orgs/{org_slug}/portal/community/guides/moderation/comments/{comment_id}/reject |
Mod reject comment |
| POST |
/api/v1/orgs/{org_slug}/portal/community/guides/moderation/reports/{report_id}/resolve |
Close a report |
| GET |
/api/v1/orgs/{org_slug}/portal/community/guides/notifications |
List notifications |
| POST |
/api/v1/orgs/{org_slug}/portal/community/guides/notifications/{notification_id}/read |
Mark notification read |
| GET |
/api/v1/orgs/{org_slug}/portal/community/media |
The signed-in member's newest images, and how much of their space they use |
| POST |
/api/v1/orgs/{org_slug}/portal/community/media |
Store an image the signed-in member uploads, and answer with its path |
| POST |
/api/v1/orgs/{org_slug}/portal/community/media/link |
Copy the image at a link into the organization's storage |
| DELETE |
/api/v1/orgs/{org_slug}/portal/community/media/{token} |
Delete one of the member's images that no saved guide, post or profile uses |
| POST |
/api/v1/orgs/{org_slug}/portal/community/members/{handle}/wall |
Create wall post |
| GET |
/api/v1/orgs/{org_slug}/portal/community/profile |
Get own profile |
| PUT |
/api/v1/orgs/{org_slug}/portal/community/profile |
Update own profile |
| DELETE |
/api/v1/orgs/{org_slug}/portal/community/wall/comments/{comment_id} |
Delete wall comment |
| DELETE |
/api/v1/orgs/{org_slug}/portal/community/wall/{wall_post_id} |
Delete wall post |
| POST |
/api/v1/orgs/{org_slug}/portal/community/wall/{wall_post_id}/comments |
Create wall comment |
GET /api/v1/orgs/{org_slug}/portal/community/forum/me
The signed-in member as the forum chrome sees them: handle, role,
unread followed threads, and the open report count for staff.
Also the one request a member who only reads makes with their token, so
ensure_profile stamping them present here is what keeps Active … ago
honest for somebody who never posts; the storefront asks again when its
copy is a few minutes old.
| Name |
In |
Type |
Required |
org_slug |
path |
string |
yes |
| Status |
Meaning |
200 |
Success. |
422 |
The request is not valid. detail lists each problem. |
POST /api/v1/orgs/{org_slug}/portal/community/forum/moderation/members/{handle}/role
| Name |
In |
Type |
Required |
org_slug |
path |
string |
yes |
handle |
path |
string |
yes |
application/json (required)
| Field |
Type |
Required |
role |
string |
yes |
| Status |
Meaning |
200 |
Success. |
422 |
The request is not valid. detail lists each problem. |
POST /api/v1/orgs/{org_slug}/portal/community/forum/moderation/members/{handle}/suspend
| Name |
In |
Type |
Required |
org_slug |
path |
string |
yes |
handle |
path |
string |
yes |
application/json (required)
| Field |
Type |
Required |
suspend |
boolean |
no |
reason |
string or null |
no |
| Status |
Meaning |
200 |
Success. |
422 |
The request is not valid. detail lists each problem. |
GET /api/v1/orgs/{org_slug}/portal/community/forum/moderation/reports
| Name |
In |
Type |
Required |
Description |
org_slug |
path |
string |
yes |
|
status |
query |
string |
no |
Default: open. |
page |
query |
integer |
no |
Default: 1. |
page_size |
query |
integer |
no |
Default: 25. |
| Status |
Meaning |
200 |
Success. |
422 |
The request is not valid. detail lists each problem. |
POST /api/v1/orgs/{org_slug}/portal/community/forum/moderation/reports/{report_id}/resolve
Close a report, optionally acting on what it pointed at.
The action and the closing are one request, so the queue cannot end up
with a removed post and a report still open against it. Nor can it end up
the other way round, which is worse: a dismissed report and content nobody
looked at.
| Name |
In |
Type |
Required |
org_slug |
path |
string |
yes |
report_id |
path |
integer |
yes |
application/json (required)
| Field |
Type |
Required |
resolution |
string or null |
no |
action |
string |
no |
note |
string or null |
no |
| Status |
Meaning |
200 |
Success. |
422 |
The request is not valid. detail lists each problem. |
POST /api/v1/orgs/{org_slug}/portal/community/forum/moderation/threads/{thread_id}/flags
Pin, lock, move or mark a thread as a duplicate.
The duplicate marker is the one that matters for search: it takes the newer
thread out of the index and leaves the older one holding the ranking, which
is the opposite of what happens if you simply delete the repost.
| Name |
In |
Type |
Required |
org_slug |
path |
string |
yes |
thread_id |
path |
integer |
yes |
application/json (required)
| Field |
Type |
Required |
is_sticky |
boolean or null |
no |
is_locked |
boolean or null |
no |
category_slug |
string or null |
no |
duplicate_of_thread_id |
integer or null |
no |
| Status |
Meaning |
200 |
Success. |
422 |
The request is not valid. detail lists each problem. |
PUT /api/v1/orgs/{org_slug}/portal/community/forum/posts/{post_id}
| Name |
In |
Type |
Required |
org_slug |
path |
string |
yes |
post_id |
path |
integer |
yes |
application/json (required)
| Field |
Type |
Required |
body_markdown |
string |
yes |
edit_reason |
string or null |
no |
| Status |
Meaning |
200 |
Success. |
422 |
The request is not valid. detail lists each problem. |
DELETE /api/v1/orgs/{org_slug}/portal/community/forum/posts/{post_id}
| Name |
In |
Type |
Required |
org_slug |
path |
string |
yes |
post_id |
path |
integer |
yes |
| Status |
Meaning |
200 |
Success. |
422 |
The request is not valid. detail lists each problem. |
POST /api/v1/orgs/{org_slug}/portal/community/forum/posts/{post_id}/react
| Name |
In |
Type |
Required |
org_slug |
path |
string |
yes |
post_id |
path |
integer |
yes |
application/json (required)
| Field |
Type |
Required |
reaction_type |
string |
yes |
| Status |
Meaning |
200 |
Success. |
422 |
The request is not valid. detail lists each problem. |
POST /api/v1/orgs/{org_slug}/portal/community/forum/posts/{post_id}/vote
| Name |
In |
Type |
Required |
org_slug |
path |
string |
yes |
post_id |
path |
integer |
yes |
application/json (required)
| Field |
Type |
Required |
value |
integer |
yes |
| Status |
Meaning |
200 |
Success. |
422 |
The request is not valid. detail lists each problem. |
POST /api/v1/orgs/{org_slug}/portal/community/forum/reports
| Name |
In |
Type |
Required |
org_slug |
path |
string |
yes |
thread_id |
query |
integer or null |
no |
post_id |
query |
integer or null |
no |
handle |
query |
string or null |
no |
application/json (required)
| Field |
Type |
Required |
category |
string |
no |
reason |
string or null |
no |
| Status |
Meaning |
200 |
Success. |
422 |
The request is not valid. detail lists each problem. |
GET /api/v1/orgs/{org_slug}/portal/community/forum/subscriptions
Threads the member follows, with how many posts they have not seen.
| Name |
In |
Type |
Required |
Description |
org_slug |
path |
string |
yes |
|
unread |
query |
boolean |
no |
Default: False. |
page |
query |
integer |
no |
Default: 1. |
page_size |
query |
integer |
no |
Default: 20. |
| Status |
Meaning |
200 |
Success. |
422 |
The request is not valid. detail lists each problem. |
POST /api/v1/orgs/{org_slug}/portal/community/forum/subscriptions/read
| Name |
In |
Type |
Required |
org_slug |
path |
string |
yes |
| Status |
Meaning |
200 |
Success. |
422 |
The request is not valid. detail lists each problem. |
POST /api/v1/orgs/{org_slug}/portal/community/forum/threads
| Name |
In |
Type |
Required |
org_slug |
path |
string |
yes |
application/json (required)
| Field |
Type |
Required |
category_slug |
string |
yes |
title |
string |
yes |
body_markdown |
string |
yes |
kind |
string |
no |
tags |
array of string or null |
no |
| Status |
Meaning |
200 |
Success. |
422 |
The request is not valid. detail lists each problem. |
PUT /api/v1/orgs/{org_slug}/portal/community/forum/threads/{thread_id}
| Name |
In |
Type |
Required |
org_slug |
path |
string |
yes |
thread_id |
path |
integer |
yes |
application/json (required)
| Field |
Type |
Required |
title |
string or null |
no |
body_markdown |
string or null |
no |
tags |
array of string or null |
no |
edit_reason |
string or null |
no |
| Status |
Meaning |
200 |
Success. |
422 |
The request is not valid. detail lists each problem. |
DELETE /api/v1/orgs/{org_slug}/portal/community/forum/threads/{thread_id}
| Name |
In |
Type |
Required |
org_slug |
path |
string |
yes |
thread_id |
path |
integer |
yes |
| Status |
Meaning |
200 |
Success. |
422 |
The request is not valid. detail lists each problem. |
POST /api/v1/orgs/{org_slug}/portal/community/forum/threads/{thread_id}/bump
| Name |
In |
Type |
Required |
org_slug |
path |
string |
yes |
thread_id |
path |
integer |
yes |
| Status |
Meaning |
200 |
Success. |
422 |
The request is not valid. detail lists each problem. |
POST /api/v1/orgs/{org_slug}/portal/community/forum/threads/{thread_id}/posts
| Name |
In |
Type |
Required |
org_slug |
path |
string |
yes |
thread_id |
path |
integer |
yes |
application/json (required)
| Field |
Type |
Required |
body_markdown |
string |
yes |
parent_post_id |
integer or null |
no |
| Status |
Meaning |
200 |
Success. |
422 |
The request is not valid. detail lists each problem. |
POST /api/v1/orgs/{org_slug}/portal/community/forum/threads/{thread_id}/solution
Accept a reply as the answer.
The reference forum has no such thing, which is why its question boards are
thousands of pages that end without one. An accepted answer is the single
strongest signal in the relevance score, and the only one that promotes a
thread into the assistant-facing export.
| Name |
In |
Type |
Required |
org_slug |
path |
string |
yes |
thread_id |
path |
integer |
yes |
post_id |
query |
integer |
yes |
| Status |
Meaning |
200 |
Success. |
422 |
The request is not valid. detail lists each problem. |
DELETE /api/v1/orgs/{org_slug}/portal/community/forum/threads/{thread_id}/solution
| Name |
In |
Type |
Required |
org_slug |
path |
string |
yes |
thread_id |
path |
integer |
yes |
| Status |
Meaning |
200 |
Success. |
422 |
The request is not valid. detail lists each problem. |
POST /api/v1/orgs/{org_slug}/portal/community/forum/threads/{thread_id}/subscription
| Name |
In |
Type |
Required |
org_slug |
path |
string |
yes |
thread_id |
path |
integer |
yes |
| Status |
Meaning |
200 |
Success. |
422 |
The request is not valid. detail lists each problem. |
DELETE /api/v1/orgs/{org_slug}/portal/community/forum/threads/{thread_id}/subscription
Stop following, idempotently. The toggle is wrong for a list of
Unfollow buttons, where a double click would follow again.
| Name |
In |
Type |
Required |
org_slug |
path |
string |
yes |
thread_id |
path |
integer |
yes |
| Status |
Meaning |
200 |
Success. |
422 |
The request is not valid. detail lists each problem. |
GET /api/v1/orgs/{org_slug}/portal/community/guides/articles
| Name |
In |
Type |
Required |
org_slug |
path |
string |
yes |
| Status |
Meaning |
200 |
Success. |
422 |
The request is not valid. detail lists each problem. |
POST /api/v1/orgs/{org_slug}/portal/community/guides/articles
| Name |
In |
Type |
Required |
org_slug |
path |
string |
yes |
application/json (required)
| Field |
Type |
Required |
Description |
title |
string or null |
no |
|
slug |
string or null |
no |
|
summary |
string or null |
no |
|
body_markdown |
string or null |
no |
|
category |
string or null |
no |
|
tags |
array of string or null |
no |
|
difficulty |
string or null |
no |
|
game_slug |
string or null |
no |
|
cover_data_uri |
string or null |
no |
PNG data URI for the guide cover. 128 KB or smaller. We store it and save the stored image's path. |
cover_url |
string or null |
no |
The url of an image the customer added with purpose guide_cover. Used in place of cover_data_uri when both are sent. An empty string removes the cover. |
seo_title |
string or null |
no |
|
seo_description |
string or null |
no |
|
change_note |
string or null |
no |
|
submit |
boolean |
no |
|
| Status |
Meaning |
200 |
Success. |
422 |
The request is not valid. detail lists each problem. |
GET /api/v1/orgs/{org_slug}/portal/community/guides/articles/{article_id}
| Name |
In |
Type |
Required |
Description |
article_id |
path |
integer |
yes |
|
org_slug |
path |
string |
yes |
|
view |
query |
string |
no |
Default: live. |
| Status |
Meaning |
200 |
Success. |
422 |
The request is not valid. detail lists each problem. |
PUT /api/v1/orgs/{org_slug}/portal/community/guides/articles/{article_id}
| Name |
In |
Type |
Required |
article_id |
path |
integer |
yes |
org_slug |
path |
string |
yes |
application/json (required)
| Field |
Type |
Required |
Description |
title |
string or null |
no |
|
slug |
string or null |
no |
|
summary |
string or null |
no |
|
body_markdown |
string or null |
no |
|
category |
string or null |
no |
|
tags |
array of string or null |
no |
|
difficulty |
string or null |
no |
|
game_slug |
string or null |
no |
|
cover_data_uri |
string or null |
no |
PNG data URI for the guide cover. 128 KB or smaller. We store it and save the stored image's path. |
cover_url |
string or null |
no |
The url of an image the customer added with purpose guide_cover. Used in place of cover_data_uri when both are sent. An empty string removes the cover. |
seo_title |
string or null |
no |
|
seo_description |
string or null |
no |
|
change_note |
string or null |
no |
|
submit |
boolean |
no |
|
| Status |
Meaning |
200 |
Success. |
422 |
The request is not valid. detail lists each problem. |
DELETE /api/v1/orgs/{org_slug}/portal/community/guides/articles/{article_id}
The author removing their own guide, whatever state it is in.
A hard delete, on purpose: the author is withdrawing something they
wrote, and a row kept around "archived" would still be theirs to find in
the library and staff's to stumble over in the queue. Revisions, review
history, comments, votes, reports and notifications go with it. The rows are removed in
dependency order rather than left to the cascades, because the two
article→revision keys were added best-effort and may not exist on an
older database.
| Name |
In |
Type |
Required |
article_id |
path |
integer |
yes |
org_slug |
path |
string |
yes |
| Status |
Meaning |
200 |
Success. |
422 |
The request is not valid. detail lists each problem. |
GET /api/v1/orgs/{org_slug}/portal/community/guides/articles/{article_id}/diff
| Name |
In |
Type |
Required |
article_id |
path |
integer |
yes |
org_slug |
path |
string |
yes |
| Status |
Meaning |
200 |
Success. |
422 |
The request is not valid. detail lists each problem. |
POST /api/v1/orgs/{org_slug}/portal/community/guides/articles/{article_id}/proposal/withdraw
| Name |
In |
Type |
Required |
article_id |
path |
integer |
yes |
org_slug |
path |
string |
yes |
| Status |
Meaning |
200 |
Success. |
422 |
The request is not valid. detail lists each problem. |
POST /api/v1/orgs/{org_slug}/portal/community/guides/articles/{article_id}/propose
| Name |
In |
Type |
Required |
article_id |
path |
integer |
yes |
org_slug |
path |
string |
yes |
application/json (required)
| Field |
Type |
Required |
Description |
title |
string or null |
no |
|
slug |
string or null |
no |
|
summary |
string or null |
no |
|
body_markdown |
string or null |
no |
|
category |
string or null |
no |
|
tags |
array of string or null |
no |
|
difficulty |
string or null |
no |
|
game_slug |
string or null |
no |
|
cover_data_uri |
string or null |
no |
PNG data URI for the guide cover. 128 KB or smaller. We store it and save the stored image's path. |
cover_url |
string or null |
no |
The url of an image the customer added with purpose guide_cover. Used in place of cover_data_uri when both are sent. An empty string removes the cover. |
seo_title |
string or null |
no |
|
seo_description |
string or null |
no |
|
change_note |
string or null |
no |
|
submit |
boolean |
no |
|
| Status |
Meaning |
200 |
Success. |
422 |
The request is not valid. detail lists each problem. |
GET /api/v1/orgs/{org_slug}/portal/community/guides/moderation
| Name |
In |
Type |
Required |
org_slug |
path |
string |
yes |
| Status |
Meaning |
200 |
Success. |
422 |
The request is not valid. detail lists each problem. |
POST /api/v1/orgs/{org_slug}/portal/community/guides/moderation/articles/{article_id}/approve
Publish a guide's pending proposal as a customer moderator.
The optional note goes to the author in a notification and an email.
Send revision_id (the proposed revision you read) to be refused with 409
when the author replaced it meanwhile. Answers the new proposal_status.
| Name |
In |
Type |
Required |
article_id |
path |
integer |
yes |
org_slug |
path |
string |
yes |
application/json
| Field |
Type |
Required |
Description |
revision_id |
integer or null |
no |
The proposed revision you read. Answers 409 when the author has replaced it since. |
note |
string or null |
no |
A note the author sees with the approval. |
| Status |
Meaning |
200 |
Success. |
422 |
The request is not valid. detail lists each problem. |
POST /api/v1/orgs/{org_slug}/portal/community/guides/moderation/articles/{article_id}/reject
Reject a guide's pending proposal as a customer moderator.
reason (3 to 1000 characters) goes to the author. The author may still
edit the guide and submit it again. Send revision_id to be refused with
409 when the proposal changed since you read it.
| Name |
In |
Type |
Required |
article_id |
path |
integer |
yes |
org_slug |
path |
string |
yes |
application/json (required)
| Field |
Type |
Required |
Description |
revision_id |
integer or null |
no |
The proposed revision you read. Answers 409 when the author has replaced it since. |
reason |
string |
yes |
Why it was not accepted, 3 to 1000 characters. |
| Status |
Meaning |
200 |
Success. |
422 |
The request is not valid. detail lists each problem. |
POST /api/v1/orgs/{org_slug}/portal/community/guides/moderation/articles/{article_id}/request-changes
Ask the author of a pending proposal to change it, as a customer moderator.
note (3 to 1000 characters) says what to change. The proposal stays on
the guide for the author to edit and submit again. Send revision_id to be
refused with 409 when the proposal changed since you read it.
| Name |
In |
Type |
Required |
article_id |
path |
integer |
yes |
org_slug |
path |
string |
yes |
application/json (required)
| Field |
Type |
Required |
Description |
revision_id |
integer or null |
no |
The proposed revision you read. Answers 409 when the author has replaced it since. |
note |
string |
yes |
What to change, 3 to 1000 characters. |
| Status |
Meaning |
200 |
Success. |
422 |
The request is not valid. detail lists each problem. |
POST /api/v1/orgs/{org_slug}/portal/community/guides/moderation/comments/{comment_id}/approve
| Name |
In |
Type |
Required |
comment_id |
path |
integer |
yes |
org_slug |
path |
string |
yes |
| Status |
Meaning |
200 |
Success. |
422 |
The request is not valid. detail lists each problem. |
POST /api/v1/orgs/{org_slug}/portal/community/guides/moderation/comments/{comment_id}/reject
| Name |
In |
Type |
Required |
comment_id |
path |
integer |
yes |
org_slug |
path |
string |
yes |
application/json (required)
| Field |
Type |
Required |
reason |
string |
yes |
| Status |
Meaning |
200 |
Success. |
422 |
The request is not valid. detail lists each problem. |
POST /api/v1/orgs/{org_slug}/portal/community/guides/moderation/reports/{report_id}/resolve
Close a report. Without this the queue only ever grew.
| Name |
In |
Type |
Required |
report_id |
path |
integer |
yes |
org_slug |
path |
string |
yes |
| Status |
Meaning |
200 |
Success. |
422 |
The request is not valid. detail lists each problem. |
GET /api/v1/orgs/{org_slug}/portal/community/guides/notifications
| Name |
In |
Type |
Required |
org_slug |
path |
string |
yes |
| Status |
Meaning |
200 |
Success. |
422 |
The request is not valid. detail lists each problem. |
POST /api/v1/orgs/{org_slug}/portal/community/guides/notifications/{notification_id}/read
| Name |
In |
Type |
Required |
notification_id |
path |
integer |
yes |
org_slug |
path |
string |
yes |
| Status |
Meaning |
200 |
Success. |
422 |
The request is not valid. detail lists each problem. |
GET /api/v1/orgs/{org_slug}/portal/community/media
The signed-in member's newest images, and how much of their space they use.
Answers items (the 24 newest images the member added, each with url,
preview, width, height, bytes and used), used_bytes,
quota_bytes, max_upload_mb and uploads_enabled.
| Name |
In |
Type |
Required |
org_slug |
path |
string |
yes |
| Status |
Meaning |
200 |
Success. |
422 |
The request is not valid. detail lists each problem. |
POST /api/v1/orgs/{org_slug}/portal/community/media
Store an image the signed-in member uploads, and answer with its path.
purpose says where it goes: guide_image or guide_cover for a guide,
forum_image for a thread, reply or wall post, forum_avatar or
forum_banner for their profile. The file is a PNG, JPEG, WebP or GIF of
at most the organization's max_upload_mb (10 by default). It is decoded
and stored again as WebP, without its camera metadata. Refused with a
code the storefront translates: uploads_off when that feature takes no
images, suspended for a member suspended or muted in the forum,
rate_limited past the hourly or daily limit, quota when the member's
images already fill their space, too_large, too_many_pixels or
not_an_image for the file itself, blocked for a file the site's staff
removed before, and storage_unavailable (503) while storage cannot take
it. The same file added twice is one image, except an avatar or banner,
which is each member's own.
| Name |
In |
Type |
Required |
org_slug |
path |
string |
yes |
multipart/form-data (required)
| Field |
Type |
Required |
purpose |
string |
yes |
file |
string (binary) |
yes |
| Status |
Meaning |
201 |
Success. |
422 |
The request is not valid. detail lists each problem. |
POST /api/v1/orgs/{org_slug}/portal/community/media/link
Copy the image at a link into the organization's storage.
The platform fetches url once (http or https, public addresses only,
at most three redirects) and stores it the way an upload is stored, so the
image keeps working when the other site deletes it. The answer is the same
as an upload's. A link that does not open an image, or that the other site
refuses, answers 422 with code link_failed and a detail saying why.
The member's upload limits count links too.
| Name |
In |
Type |
Required |
org_slug |
path |
string |
yes |
application/json (required)
| Field |
Type |
Required |
url |
string |
yes |
purpose |
string |
yes |
| Status |
Meaning |
201 |
Success. |
422 |
The request is not valid. detail lists each problem. |
DELETE /api/v1/orgs/{org_slug}/portal/community/media/{token}
Delete one of the member's images that no saved guide, post or profile uses.
Frees its space. An image something already uses stays, and answers 409
with code in_use; the member removes it from that content first, and
the site's staff can remove any image. Another member's image, or one
already gone, answers 404.
| Name |
In |
Type |
Required |
org_slug |
path |
string |
yes |
token |
path |
string |
yes |
| Status |
Meaning |
200 |
Success. |
422 |
The request is not valid. detail lists each problem. |
POST /api/v1/orgs/{org_slug}/portal/community/members/{handle}/wall
| Name |
In |
Type |
Required |
org_slug |
path |
string |
yes |
handle |
path |
string |
yes |
application/json (required)
| Field |
Type |
Required |
body_markdown |
string |
yes |
| Status |
Meaning |
200 |
Success. |
422 |
The request is not valid. detail lists each problem. |
GET /api/v1/orgs/{org_slug}/portal/community/profile
| Name |
In |
Type |
Required |
org_slug |
path |
string |
yes |
| Status |
Meaning |
200 |
Success. |
422 |
The request is not valid. detail lists each problem. |
PUT /api/v1/orgs/{org_slug}/portal/community/profile
| Name |
In |
Type |
Required |
org_slug |
path |
string |
yes |
application/json (required)
| Field |
Type |
Required |
display_name |
string or null |
no |
biography |
string or null |
no |
location |
string or null |
no |
website_url |
string or null |
no |
signature |
string or null |
no |
avatar_data_uri |
string or null |
no |
banner_data_uri |
string or null |
no |
wall_enabled |
boolean or null |
no |
index_opt_out |
boolean or null |
no |
| Status |
Meaning |
200 |
Success. |
422 |
The request is not valid. detail lists each problem. |
DELETE /api/v1/orgs/{org_slug}/portal/community/wall/comments/{comment_id}
| Name |
In |
Type |
Required |
org_slug |
path |
string |
yes |
comment_id |
path |
integer |
yes |
| Status |
Meaning |
200 |
Success. |
422 |
The request is not valid. detail lists each problem. |
DELETE /api/v1/orgs/{org_slug}/portal/community/wall/{wall_post_id}
| Name |
In |
Type |
Required |
org_slug |
path |
string |
yes |
wall_post_id |
path |
integer |
yes |
| Status |
Meaning |
200 |
Success. |
422 |
The request is not valid. detail lists each problem. |
POST /api/v1/orgs/{org_slug}/portal/community/wall/{wall_post_id}/comments
| Name |
In |
Type |
Required |
org_slug |
path |
string |
yes |
wall_post_id |
path |
integer |
yes |
application/json (required)
| Field |
Type |
Required |
body_markdown |
string |
yes |
| Status |
Meaning |
200 |
Success. |
422 |
The request is not valid. detail lists each problem. |