# API Reference
Overview of Epochtalk API
- Ads
- Auth
- AutoModeration
- Bans
- Boards
- Breadcrumbs
- Categories
- Conversations
- Legal
- Mentions
- Messages
- Moderation
- Moderators
- MOTD
- Notifications
- Portal
- Posts
- Rank
- Reports
- (Admin) Create Message Report Note
- (Admin) Create Post Report Note
- (Admin) Create User Report Note
- (Admin) Page Message Report
- (Admin) Page Message Report Notes
- (Admin) Page Post Report
- (Admin) Page Post Report Notes
- (Admin) Page User Report
- (Admin) Page User Report Notes
- (Admin) Update Message Report
- (Admin) Update Message Report Note
- (Admin) Update Post Report
- (Admin) Update Post Report Note
- (Admin) Update User Report
- (Admin) Update User Report Note
- Create Message Report
- Create Post Report
- Create User Report
- Roles
- Settings
- ThreadNotifications
- Threads
- Trust
- Users
- (Admin) Add Roles
- (Admin) Count Users
- (Admin) Create User Note
- (Admin) Delete User Note
- (Admin) Page User Notes
- (Admin) Page Users
- (Admin) Recover Account
- (Admin) Remove Roles
- (Admin) Search Usernames
- (Admin) Update User Note
- Deactivate
- Delete
- Find
- Ignore User Posts
- Invitation Exists
- Invitations
- Invite
- Page Ignored Users
- Page Users
- Preferences
- Reactivate
- Remove Invite
- Resend
- Unignore User Posts
- Update
- User Lookup
- Watchlist
# Ads
# Ad Analytics
Returns analytics for the current ad round
GET /ads/analytics/:round
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
round | object | Object containing data about the round |
round.viewing | number | The round of ads that analytics are being displayed for |
round.current | number | The round of ads that are currentlying running |
round.previous | number | The previous round |
round.next | number | The next round |
round.start_time | timestamp | The timestamp of when the round started |
round.end_time | timestamp | The timestamp of when the round ended |
analytics | object[] | Object containing analytics data about each ad in the round, index of ad corresponds the ad number |
analytics.total_impressions | number | The total number of impressions for this ad |
analytics.total_authed_impressions | number | The total number of impressions for this ad from authorized users (not unique) |
analytics.total_unique_ip_impressions | number | The total number of impressions for this ad from unique ip addresses |
analytics.total_unique_authed_users_impressions | number | The total number of impressions for this ad from authorized users (unique) |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an error viewing the analytics for ads |
# Create Ad
Used to create a new ad within a round
POST /ads
# Parameters - Payload
Name | Type | Description |
---|---|---|
round | number | The number of the round to create ad for |
html | string | The html source of the ad |
css | string | optional The css backing the html source |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
id | string | The id of the created ad |
round | number | The round in which the ad was created |
html | string | The html source for the ad |
css | string | The css source for the ad |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an error creating the ad |
# Create Ad Round
Used to create a new ad round
POST /ads/rounds
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
round | number | The number of the round which was created |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an error creating the ad round |
# Create Factoid
Used to create a new factoid
POST /ads/factoids
# Parameters - Payload
Name | Type | Description |
---|---|---|
text | string | The factoid text |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
id | string | The id of the created factoid |
text | string | The factoid text |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an error creating the factoid |
# Disable Factoid
Used to disable factoids
PUT /ads/factoids/:id/disable
# Parameters - Parameter
Name | Type | Description |
---|---|---|
id | string | The unique id of the factoid to disable, pass 'all' in to disable all factoids |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
Sucess | Object | 200 OK |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an error disabling the factoid |
# Duplicate Ad
Used to duplicate an ad within a round
POST /ads/:id/duplicate
# Parameters - Parameter
Name | Type | Description |
---|---|---|
id | string | The unique id of the ad to duplicate |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
id | id | The id of the duplicated ad |
round | string | The round in which the ad was created |
html | string | The html source for the ad |
css | string | The css source for the ad |
created_at | timestamp | The created at timestamp for the ad |
updated_at | timestamp | The updated at timestamp for the ad |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an error duplicating the ad |
# Enable Factoid
Used to enable factoids
PUT /ads/factoids/:id/enable
# Parameters - Parameter
Name | Type | Description |
---|---|---|
id | string | The unique id of the factoid to enable, pass 'all' in to enable all factoids |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
Sucess | Object | 200 OK |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an error enabling the factoid |
# Remove Ad
Used to remove an ad
DELETE /ads/:id
# Parameters - Parameter
Name | Type | Description |
---|---|---|
id | string | The unique id of the ad to remove |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
HTTP | object | Code STATUS 200 OK |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an error removing the ad |
# Remove Factoid
Used to remove a factoid
DELETE /ads/factoids/:id
# Parameters - Parameter
Name | Type | Description |
---|---|---|
id | string | The unique id of the factoid to remove |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
HTTP | object | Code STATUS 200 OK |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an error removing the factoid |
# Rotate Ad Round
Used to put a round of ads into rotation
POST /ads/rounds/rotate
# Parameters - Payload
Name | Type | Description |
---|---|---|
round | number | The round of ads to rotate to |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
round | number | The integer value of the round |
current | boolean | Boolean indicating if this is the current round |
start_time | timestamp | Start of the round timestamp |
end_time | timestamp | End of the round timestamp |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an error rotating the ad round |
# Save Ad View Text
Used to save ad info and disclaimer text to be displayed in Ad related views
POST /ads/text
# Parameters - Payload
Name | Type | Description |
---|---|---|
disclaimer | string | The disclaimer text html source for ads |
info | string | The information text html source for ads |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
disclaimer | string | The disclaimer text html source for ads |
info | string | The information text html source for ads |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an error saving the ad view text |
# Update Ad
Used to update an ad
PUT /ads/:id
# Parameters - Parameter
Name | Type | Description |
---|---|---|
id | string | The unique id of the ad to update |
# Parameters - Payload
Name | Type | Description |
---|---|---|
html | string | The updated html source |
css | string | The updated css source |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
id | string | The unique id of the ad to update |
html | string | The updated html source |
css | string | The updated css source |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an error updating the ad |
# Update Factoid
Used to update a factoid
PUT /ads/factoids/:id
# Parameters - Parameter
Name | Type | Description |
---|---|---|
id | string | The unique id of the factoid to update |
# Parameters - Payload
Name | Type | Description |
---|---|---|
text | string | The updated factoid text |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
id | string | The unique id of the factoid which was update |
text | string | The updated factoid text |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an error updating the factoid |
# View Ad
Returns a random ad out of the round of circulated ads
GET /ads/
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
id | string | The id of the ad |
round | string | The round in which the ad is running |
html | string | The html source for the ad |
css | string | The css source for the ad |
created_at | timestamp | The created at timestamp for the ad |
updated_at | timestamp | The updated at timestamp for the ad |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an error viewing the ad |
# View Ad Round
Returns ads, factoids, and data for specified round
GET /ads/rounds/:roundNumber
# Parameters - Parameter
Name | Type | Description |
---|---|---|
roundNumber | string | The round number to view, or "current" to view current round |
# Parameters - Query
Name | Type | Description |
---|---|---|
type | string | optional What html source text to bring back with the data Allowed values: "disclaimer","info","both" |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
ads | object[] | An array of ads in the specified round |
ads.id | string | The id of the ad |
ads.round | number | The round number of the ad |
ads.html | string | The html source for the ad |
ads.css | string | The css source for the ad |
ads.display_html | string | The compiled display html |
ads.display_css | string | The compiled display css |
ads.created_at | timestamp | The created at timestamp for the ad |
ads.updated_at | timestamp | The updated at timestamp for the ad |
factoids | object[] | An array of factoids in circulation |
factoids.id | string | The id of the factoid |
factoids.text | string | The factoid text |
factoids.enabled | boolean | Boolean indicating if factoid is enabled |
factoids.created_at | timestamp | The created at timestamp for the factoid |
factoids.updated_at | timestamp | The updated at timestamp for the factoid |
text | object | Object which contains ad disclaimers and informations |
text.info | string | HTML source for ad info to be displayed |
text.disclaimer | string | HTML source for ads disclaimer to be displayed |
round | object | Object containing data about the round |
round.viewing | number | The round of ads that analytics are being displayed for |
round.current | number | The round of ads that are currentlying running |
round.previous | number | The previous round |
round.next | number | The next round |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an error viewing the round |
# View Round Information
Returns information about the current ad round
GET /ads/rounds/info
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
ads | object[] | An array of ads in the current round |
ads.id | string | The id of the ad |
ads.round | number | The round number of the ad |
ads.html | string | The html source for the ad |
ads.css | string | The css source for the ad |
ads.display_html | string | The compiled display html |
ads.display_css | string | The compiled display css |
ads.created_at | timestamp | The created at timestamp for the ad |
ads.updated_at | timestamp | The updated at timestamp for the ad |
factoids | object[] | An array of factoids in circulation |
factoids.id | string | The id of the factoid |
factoids.text | string | The factoid text |
factoids.enabled | boolean | Boolean indicating if factoid is enabled |
factoids.created_at | timestamp | The created at timestamp for the factoid |
factoids.updated_at | timestamp | The updated at timestamp for the factoid |
text | object | Object which contains info to be displayed on the /ads/info view |
text.info | string | HTML source to be displayed on the /ads/info view |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an error viewing the round information |
# Auth
# Authenticate User
Used to check the logged in user's authentication.
GET /authenticate
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
token | string | User's unique session token |
id | string | User's unique id |
username | string | User's username |
avatar | string | User's avatar url |
roles | string[] | Array of user's roles lookup strings |
moderating | string[] | Array of user's moderatered board ids |
permissions | object | Object containing user's permissions |
# Error response
# Error response - Error 401
Name | Type | Description |
---|---|---|
Unauthorized | returned when user is not authenticated |
# Confirm Account
Used to confirm a newly registered account when account verification is enabled in the admin panel.
POST /confirm
# Parameters - Payload
Name | Type | Description |
---|---|---|
username | string | User's unique username. |
token | string | User's confirmation token. |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
token | string | User's unique session token |
id | string | User's unique id |
username | string | User's username |
avatar | string | User's avatar url |
roles | string[] | Array of user's roles lookup strings |
moderating | string[] | Array of user's moderatered board ids |
permissions | object | Object containing user's permissions |
# Error response
# Error response - Error 400
Name | Type | Description |
---|---|---|
BadRequest | Account was not found or confirmation token doesn't match |
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue confirming the user account |
# Email Availability
Used to check if an email is available when registering a new account.
GET /register/email/:email
# Parameters - Parameter
Name | Type | Description |
---|---|---|
string | The email to check |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
found | boolean | true if email exists false if not |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue checking email availability |
# Login
Used to log a user into their account.
POST /login
# Parameters - Payload
Name | Type | Description |
---|---|---|
username | string | User's unique username |
password | string | User's password |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
token | string | User's authentication token |
id | string | User's unique id |
username | string | The user account username |
avatar | string | User's avatar url |
permissions | object | Object containing user's permissions |
moderating | string[] | Array of user's moderated board ids |
roles | string[] | Array of user's roles |
# Error response
# Error response - Error 400
Name | Type | Description |
---|---|---|
BadRequest | Invalid credentials were provided or the account hasn't been confirmed |
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue logging in |
# Login/Auth with Google
Used to log a user into their account with Google oAuth2.
POST /auth/google
# Parameters - Payload
Name | Type | Description |
---|---|---|
access_token | string | Oauth2 access token |
username | string | User's account name |
remember_me | boolean | Keep user logged in |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
token | string | User's authentication token |
has_account | boolean | if the user has an existing account |
id | string | User's unique id |
username | string | The user account username |
avatar | string | User's avatar url |
permissions | object | Object containing user's permissions |
moderating | string[] | Array of user's moderated board ids |
roles | string[] | Array of user's roles |
# Error response
# Error response - Error 400
Name | Type | Description |
---|---|---|
BadRequest | Invalid credentials were provided or the account hasn't been confirmed |
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue logging in |
# Logout
Used to log a user out of their account.
DELETE /logout
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
success | object | 200 OK |
# Error response
# Error response - Error 401
Name | Type | Description |
---|---|---|
Unauthorized | Occurs when logging out on a view that requires special permissions |
# Error response - Error 400
Name | Type | Description |
---|---|---|
BadRequest | No user is currently logged in |
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue deleteing user's web token |
# Recover Account
Used to recover an account by username or email. Sends an email with a URL to visit to reset the user's account password.
POST /recover/
# Parameters - Payload
Name | Type | Description |
---|---|---|
query | string | The email or username to attempt to recover |
recaptcha | string | The recaptcha token |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
success | object | 200 OK |
# Error response
# Error response - Error 400
Name | Type | Description |
---|---|---|
BadRequest | Recaptcha not submitted |
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an error recovering the user's account |
# Register (via invitation)
Used to register a new account via invitation.
POST /join
# Parameters - Payload
Name | Type | Description |
---|---|---|
hash | string | User's Invitation Hash. |
username | string | User's unique username. |
string | The email address to send the invite to. | |
password | string | User's password |
confirmation | string | User's confirmed password |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
token | string | User's authentication token |
id | string | User's unique id |
username | string | The user account username |
avatar | string | User's avatar url |
permissions | object | Object containing user's permissions |
moderating | string[] | Array of user's moderated board ids |
roles | string[] | Array of user's roles |
# Error response
# Error response - Error 400
Name | Type | Description |
---|---|---|
BadRequest | There was an error creating the user via invitation. |
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue registering user |
# Register (w/ account verification)
Used to register a new account with account verification enabled in admin settings. This will send an email to the user with the account verification link.
POST /register
# Parameters - Payload
Name | Type | Description |
---|---|---|
username | string | User's unique username. |
string | User's email address. | |
password | string | User's password |
confirmation | string | User's confirmed password |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
message | string | Account creation success message |
username | string | Created user's username |
confirm_token | string | Created user's account confirmation token |
avatar | string | User's avatar url |
# Error response
# Error response - Error 400
Name | Type | Description |
---|---|---|
BadRequest | There was an error registering the user |
# Register (w/o account verification)
Used to register a new account with account verification disabled in admin settings.
POST /register
# Parameters - Payload
Name | Type | Description |
---|---|---|
username | string | User's unique username. |
string | User's email address. | |
password | string | User's password |
confirmation | string | User's confirmed password |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
token | string | User's authentication token |
id | string | User's unique id |
username | string | The user account username |
avatar | string | User's avatar url |
permissions | object | Object containing user's permissions |
roles | string[] | Array of user's roles |
# Error response
# Error response - Error 4xx
Name | Type | Description |
---|---|---|
BadRequest | There was an error creating the user |
# Reset Account Password
Used to reset an account password after recovering an account.
POST /reset
# Parameters - Payload
Name | Type | Description |
---|---|---|
username | string | The username of the user whose password is being reset |
password | string | The new account password |
query | string | The new account password confirmation |
token | string | The token for resetting the account password |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
message | string | Password Successfully Reset |
# Error response
# Error response - Error 400
Name | Type | Description |
---|---|---|
BadRequest | The user account could not be found or the reset token is invalid |
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an error updating the user account's reset token information |
# Username Availability
Used to check if a username is available when registering a new account.
GET /register/username/:username
# Parameters - Parameter
Name | Type | Description |
---|---|---|
username | string | The username to check |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
found | boolean | true if username exists false if not |
# Validate Account Reset Token
Used to check the validity of the reset token. Verifys that the reset token is for the correct user and that it is not expired.
GET /reset/:username/:token/validate
# Parameters - Parameter
Name | Type | Description |
---|---|---|
username | string | The username of the user whose reset token is to be checked |
token | string | The token for resetting the account password |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
token_valid | boolean | true if the token is valid false if it is not |
token_expired | boolean | true if token is expired false if not. Undefined if token is invalid |
# Error response
# Error response - Error 400
Name | Type | Description |
---|---|---|
BadRequest | The user account could not be found |
# AutoModeration
# Add Rule
Used to create a new auto moderation rule
POST /automoderation/rules
# Parameters - Payload
Name | Type | Description |
---|---|---|
name | string | The name of the auto moderation rule |
description | string | The description of what the rule does |
message | string | The error message which is returned to the user |
conditions | object[] | What conditions trigger the rule |
conditions.params | string | The parameter that triggers the rule Allowed values: "body","thread_id","user_id","title" |
conditions.regex | object | A regex used to capture user input and trigger rule |
conditions.regex.pattern | string | The regex pattern |
conditions.regex.flags | string | The regex flags |
actions | string[] | Array containing what action is taken when the rule is matched Allowed values: "reject","ban","edit","delete" |
options | object | Contains settings related to the action that is taken |
options.ban_interval | number | How many days to ban the user for, leave blank for permanent ban |
options.edit | object | Contains information for replacing matched rule text |
options.edit.replace | object | Contains info for what text to replace |
options.edit.replace.regex | object | Regex to match text to replace |
options.edit.replace.regex.pattern | string | The regex pattern |
options.edit.replace.regex.flags | string | The regex flags |
options.edit.replace.text | string | The text to replaced the matched text with |
options.edit.template | string | Allows message to be replaced, prepended, or appended to |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
id | string | The id of the auto moderation rule |
name | string | The name of the auto moderation rule |
description | string | The description of what the rule does |
message | string | The error message which is returned to the user |
conditions | object[] | What conditions trigger the rule |
conditions.params | string | The parameter that triggers the rule Allowed values: "body","thread_id","user_id","title" |
conditions.regex | object | A regex used to capture user input and trigger rule |
conditions.regex.pattern | string | The regex pattern |
conditions.regex.flags | string | The regex flags |
actions | string[] | Array containing what action is taken when the rule is matched Allowed values: "reject","ban","edit","delete" |
options | object | Contains settings related to the action that is taken |
options.ban_interval | number | How many days to ban the user for, leave blank for permanent ban |
options.edit | object | Contains information for replacing matched rule text |
options.edit.replace | object | Contains info for what text to replace |
options.edit.replace.regex | object | Regex to match text to replace |
options.edit.replace.regex.pattern | string | The regex pattern |
options.edit.replace.regex.flags | string | The regex flags |
options.edit.replace.text | string | The text to replaced the matched text with |
options.edit.template | string | Allows message to be replaced, prepended, or appended to |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an error creating the auto moderation rule |
# Edit Rule
Used to edit an existing auto moderation rule
PUT /automoderation/rules
# Parameters - Parameter
Name | Type | Description |
---|---|---|
id | string | The id of the auto moderation rule |
# Parameters - Payload
Name | Type | Description |
---|---|---|
name | string | The name of the auto moderation rule |
description | string | The description of what the rule does |
message | string | The error message which is returned to the user |
conditions | object[] | What conditions trigger the rule |
conditions.params | string | The parameter that triggers the rule Allowed values: "body","thread_id","user_id","title" |
conditions.regex | object | A regex used to capture user input and trigger rule |
conditions.regex.pattern | string | The regex pattern |
conditions.regex.flags | string | The regex flags |
actions | string[] | Array containing what action is taken when the rule is matched Allowed values: "reject","ban","edit","delete" |
options | object | Contains settings related to the action that is taken |
options.ban_interval | number | How many days to ban the user for, leave blank for permanent ban |
options.edit | object | Contains information for replacing matched rule text |
options.edit.replace | object | Contains info for what text to replace |
options.edit.replace.regex | object | Regex to match text to replace |
options.edit.replace.regex.pattern | string | The regex pattern |
options.edit.replace.regex.flags | string | The regex flags |
options.edit.replace.text | string | The text to replaced the matched text with |
options.edit.template | string | Allows message to be replaced, prepended, or appended to |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
id | string | The id of the auto moderation rule |
name | string | The name of the auto moderation rule |
description | string | The description of what the rule does |
message | string | The error message which is returned to the user |
conditions | object[] | What conditions trigger the rule |
conditions.params | string | The parameter that triggers the rule Allowed values: "body","thread_id","user_id","title" |
conditions.regex | object | A regex used to capture user input and trigger rule |
conditions.regex.pattern | string | The regex pattern |
conditions.regex.flags | string | The regex flags |
actions | string[] | Array containing what action is taken when the rule is matched Allowed values: "reject","ban","edit","delete" |
options | object | Contains settings related to the action that is taken |
options.ban_interval | number | How many days to ban the user for, leave blank for permanent ban |
options.edit | object | Contains information for replacing matched rule text |
options.edit.replace | object | Contains info for what text to replace |
options.edit.replace.regex | object | Regex to match text to replace |
options.edit.replace.regex.pattern | string | The regex pattern |
options.edit.replace.regex.flags | string | The regex flags |
options.edit.replace.text | string | The text to replaced the matched text with |
options.edit.template | string | Allows message to be replaced, prepended, or appended to |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an error editing the auto moderation rule |
# Remove Rule
Used to remove an existing auto moderation rule
DELETE /automoderation/rules/:id
# Parameters - Parameter
Name | Type | Description |
---|---|---|
id | string | The unique id of the rule to remove |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
HTTP | object | Code STATUS 200 OK |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an error removing the auto moderation rule |
# View Rules
Returns auto moderation rules
GET /automoderation/rules
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
rules | object[] | An array of auto moderation rules |
rules.id | string | The id of the auto moderation rule |
rules.name | string | The name of the auto moderation rule |
rules.description | string | The description of what the rule does |
rules.message | string | The error message which is returned to the user |
rules.conditions | object[] | What conditions trigger the rule |
rules.conditions.params | string | The parameter that triggers the rule Allowed values: "body","thread_id","user_id","title" |
rules.conditions.regex | object | A regex used to capture user input and trigger rule |
rules.conditions.regex.pattern | string | The regex pattern |
rules.conditions.regex.flags | string | The regex flags |
rules.actions | string[] | Array containing what action is taken when the rule is matched Allowed values: "reject","ban","edit","delete" |
rules.options | object | Contains settings related to the action that is taken |
rules.options.ban_interval | number | How many days to ban the user for, leave blank for permanent ban |
rules.options.edit | object | Contains information for replacing matched rule text |
rules.options.edit.replace | object | Contains info for what text to replace |
rules.options.edit.replace.regex | object | Regex to match text to replace |
rules.options.edit.replace.regex.pattern | string | The regex pattern |
rules.options.edit.replace.regex.flags | string | The regex flags |
rules.options.edit.replace.text | string | The text to replaced the matched text with |
rules.options.edit.template | string | Allows message to be replaced, prepended, or appended to |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an error viewing the auto moderation rules |
# Bans
# (Admin) Add Ban Addresses
This allows Administrators to ban hostnames and addresses. When a user registers from a banned address, their account is automatically banned
POST /ban/addresses
# Parameters - Payload
Name | Type | Description |
---|---|---|
data | object[] | An array of addresses to ban |
data.hostname | string | The hostname to ban. If hostname is present IP should not be |
data.ip | string | The IP address to ban. If IP is present hostname should not be |
data.decay | boolean | Boolean indicating if the weight decays or not |
data.weight | number | The weight of the address |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
data | object[] | An array of banned addresses |
data.hostname | string | The banned hostname |
data.ip | string | The banned IP address |
data.decay | boolean | Boolean indicating if the weight decays or not |
data.weight | number | The weight of the address |
data.created_at | string | The created_at date of the banned address |
data.updates | string[] | An array of dates when the banned address was updated |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an error banning the addresses |
# (Admin) Ban
This allows Administrators and Moderators to ban users.
PUT /users/ban
# Parameters - Payload
Name | Type | Description |
---|---|---|
user_id | string | The unique id of the user to ban |
expiration | timestamp | optional The expiration date for the ban, when not defined ban is considered permanent |
ip_ban | boolean | optional Boolean indicating that the user should be ip banned as well, this will make it so they cannot register from any of their known ips for a new account Default value: falseAllowed values: false |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
id | string | The unique id of the row in users.bans |
user_id | string | The unique id of the user being banned |
roles | object[] | Array containing users roles |
expiration | timestamp | Timestamp of when the user's ban expires |
created_at | timestamp | Timestamp of when the ban was created |
updated_at | timestamp | Timestamp of when the ban was last updated |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an error banning the user |
# (Admin) Ban From Boards
This allows Administrators and Moderators to ban users from boards.
PUT /users/ban/board
# Parameters - Payload
Name | Type | Description |
---|---|---|
user_id | string | The unique id of the user to ban from boards |
board_ids | string[] | Array of board ids to ban the user from |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
user_id | string | The unique id of the user being banned from boards |
board_ids | string[] | Array of board ids to ban the user from |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an error banning the user from Boards |
# Error response - Error 403
Name | Type | Description |
---|---|---|
Forbidden | User tried to ban from a board they do not moderate, or tried to ban a user with higher permissions than themselves |
# (Admin) Delete Ban Address
This allows Administrators to delete banned hostnames and addresses.
DELETE /ban/addresses
# Parameters - Query
Name | Type | Description |
---|---|---|
hostname | string | The hostname to delete. If hostname is present IP should not be. |
ip | string | The IP address to delete. If IP is present hostname should not be. |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
hostname | string | The deleted banned hostname |
ip | string | The deleted banned IP address |
decay | boolean | The deleted boolean indicating if the weight decays or not |
weight | number | The deleted weight of the address |
created_at | string | The created_at date of the deleted banned address |
updates | string[] | An array of dates when the deleted banned address was updated |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an error deleting the banned address |
# (Admin) Edit Ban Address
This allows Administrators to edit banned hostnames and addresses.
PUT /ban/addresses
# Parameters - Payload
Name | Type | Description |
---|---|---|
hostname | string | The hostname to update. If hostname is present IP should not be. |
ip | string | The IP address to update. If IP is present hostname should not be. |
decay | boolean | The updated boolean indicating if the weight decays or not. |
weight | number | The updated weight of the address |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
hostname | string | The updated banned hostname |
ip | string | The updated banned IP address |
decay | boolean | The updated boolean indicating if the weight decays or not |
weight | number | The updated weight of the address |
created_at | string | The created_at date of the banned address |
updates | string[] | An array of dates when the banned address was updated |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an error updating the banned address |
# (Admin) Get User's Banned Boards
This allows Administrators and Moderators to retrieve a list of boards that a user has been banned from.
GET /users/:username/bannedboards
# Parameters - Parameter
Name | Type | Description |
---|---|---|
username | string | The username of the user to get banned boards for |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
banned_boards | object[] | An array of boards that the user is banned from |
banned_boards.id | string | The id of the board the user is banned from |
banned_boards.name | string | The name of the board the user is banned from |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an error retrieving the user's banned boards |
# Error response - Error 403
Name | Type | Description |
---|---|---|
Forbidden | User doesn't have permission to query for user's banned boards |
# (Admin) Page by Banned Addresses
This allows Administrators to page through banned addresses.
GET /ban/addresses
# Parameters - Query
Name | Type | Description |
---|---|---|
page | number | optional The page of results to return Default value: 1Size range: 1..n |
limit | number | optional The number of results per page to return Default value: 25Size range: 1..100 |
search | string | optional hostname or IP address to search for |
desc | boolean | optional boolean indicating whether or not to sort results in descending order |
field | string | optional sorts results by specified field Allowed values: "created_at","updates","decay","weight","update_count" |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
page | number | The current page of results that is being returned |
limit | number | The current number of results that is being returned per page |
next | boolean | boolean indicating if there is a next page |
prev | boolean | boolean indicating if there is a previous page |
search | string | The search text that the results are being filtered by |
desc | boolean | boolean indicating if the results are in descending order |
field | string | field results are being sorted by |
data | object[] | An array of banned addresses |
data.hostname | string | The banned hostname |
data.ip | string | The banned IP address |
data.decay | boolean | Boolean indicating if the weight decays or not |
data.weight | number | The weight of the address |
data.created_at | string | The created_at date of the banned address |
data.updated_at | string | The most reason updated date of the banned address |
data.updates | string[] | An array of dates when the banned address was updated |
data.update_count | number | The number of times the banned address has been updated |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an error paging banned addresses |
# Error response - Error 403
Name | Type | Description |
---|---|---|
Forbidden | User doesn't have permission to query banned addresses |
# (Admin) Page by Banned Boards
This allows Administrators and Moderators to page through users who have been banned from boards.
GET /users/banned
# Parameters - Query
Name | Type | Description |
---|---|---|
page | number | optional The page of results to return Default value: 1Size range: 1..n |
limit | number | optional The number of results per page to return Default value: 25Size range: 1..100 |
search | string | optional username, email, or user id to filter results by |
board | string | optional board id to filter results by |
modded | boolean | optional booolean which indicates to only retun users who were banned from boards in which the logged in user moderates |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
page | number | The current page of results that is being returned |
limit | number | The current number of results that is being returned per page |
next | boolean | boolean indicating if there is a next page |
prev | boolean | boolean indicating if there is a previous page |
search | string | The search text that the results are being filtered by |
board | string | The board id that the results are being filtered by |
modded | boolean | boolean indicating that the results being returned are within the users moderated boards |
data | object[] | An array of board banned users and board data |
data.username | string | The username of the board banned user |
data.user_id | string | The id of the board banned user |
data.email | string | The email of the board banned user |
data.created_at | string | The created_at date of the board banned user's account |
data.board_ids | string[] | An array of the board ids this user is banned from |
data.board_slugs | string[] | An array of the board slugs this user is banned from |
data.board_names | string[] | An array of the board names this user is banned from |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an error paging board banned users |
# Error response - Error 403
Name | Type | Description |
---|---|---|
Forbidden | User doesn't have permission to query board banned users |
# (Admin) Unban
This allows Administrators and Moderators to unban users. Ban expiration is set to current timestamp, expiring it immediately
PUT /users/unban
# Parameters - Payload
Name | Type | Description |
---|---|---|
user_id | string | The unique id of the user to unban |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
id | string | The unique id of the row in users.bans |
user_id | string | The unique id of the user being unbanned |
roles | object[] | Array containing users roles |
expiration | timestamp | Timestamp of when the user's ban expires (current timestamp) |
created_at | timestamp | Timestamp of when the ban was created |
updated_at | timestamp | Timestamp of when the ban was last updated |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an error unbanning the user |
# (Admin) Unban From Boards
This allows Administrators and Moderators to unban users from boards.
PUT /users/unban/board
# Parameters - Payload
Name | Type | Description |
---|---|---|
user_id | string | The unique id of the user to unban from boards |
board_ids | string[] | Array of board ids to unban the user from |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
user_id | string | The unique id of the user being unbanned from boards |
board_ids | string[] | Array of board ids to unban the user from |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an error unbanning the user from Boards |
# Error response - Error 403
Name | Type | Description |
---|---|---|
Forbidden | User tried to unban from a board they do not moderate, or tried to unban a user with higher permissions than themselves |
# Boards
# All Boards
Used to find all boards.
GET /boards/uncategorized
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
boards | object[] | Array containing all of the forums boards |
boards.id | string | The board's unique id |
boards.name | string | The board's name |
boards.description | string | The board's description |
boards.viewable_by | number | Minimum priority a user must have to view the board, null if no restriction |
boards.postable_by | number | Minimum priority a user must have to post in the board, null if no restriction |
boards.created_at | timestamp | Created at date for board |
boards.updated_at | timestamp | Last time the board was updated |
boards.imported_at | timestamp | If the board was imported at, the |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue finding all boards |
# Convert Board Slug to Id
Used to retrieve a board's id via is slug.
GET /boards/:slug/id
# Parameters - Parameter
Name | Type | Description |
---|---|---|
slug | string | The slug of the board |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
id | string | The unqiue id of the board |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue finding a board with the provided slug |
# Create
Used to create a new board
POST /boards
# Parameters - Payload
Name | Type | Description |
---|---|---|
boards | object[] | Array containing the boards to create |
name | string | The name for the board Size range: 1..255 |
description | string | optional The description text for the board Size range: 0..255 |
viewable_by | number | optional The minimum priority required to view the board, null for no restriction |
postable_by | number | optional The minimum priority required to post in the board, null for no restriction |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
id | string | The board's unique id |
name | string | The board's name |
description | string | The boards description |
viewable_by | number | The minimum priority required to view the board, null for no restriction |
postable_by | number | The minimum priority required to post in the board, null for no restriction |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue creating the board |
# Delete
Used to delete an existing board from the forum.
DELETE /boards/:id
# Parameters - Payload
Name | Type | Description |
---|---|---|
board_ids | string[] | An array of board ids to delete |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
boards | object[] | An array of the deleted boards |
id | string | The id of the deleted board |
name | string | The name of the deleted board |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue deleting the boards |
# Find Board
Used to lookup a board
GET /boards/:id
# Parameters - Parameter
Name | Type | Description |
---|---|---|
id | string | The id of the board to lookup |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
id | string | The id of the board |
name | string | The name of the board |
parent_id | string | The id of the parent board if applicable |
viewable_by | number | The minimum priority to be able to view the board, null for no restriction |
postable_by | number | The minimum priority to be able to post to the board, null for no restriction |
description | string | The board description text |
thread_count | number | The number of threads within the board |
post_count | number | The number of posts within the board |
children | object[] | An array containing child boards if applicable |
moderators | object[] | Array containing data about the moderators of the board |
moderators.id | string | The id of the moderator |
moderators.username | string | The username of the moderator |
created_at | timestamp | The created at timestamp of the board |
updated_at | timestamp | The updated at timestamp of the board |
imported_at | timestamp | The imported at timestamp of the board |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue finding the board |
# Move Boards
Used to find all possible boards to move a thread to.
GET /boards/move
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
boards | object[] | Array containing all of the forums boards |
boards.parent_id | string | The board's parent board or category id |
boards.parent_name | string | The board's parent board or category name |
boards.id | string | The board's unique id |
boards.name | string | The board's name |
boards.view_order | number | The view order of the board |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue finding all boards |
# Update
Used to update an existing information for boards
POST /boards/:id
# Parameters - Payload
Name | Type | Description |
---|---|---|
boards | object[] | Array containing the boards to create |
id | string | The board id |
name | string | The name for the board Size range: 1..255 |
description | string | The description text for the board Size range: 0..255 |
viewable_by | number | The minimum priority required to view the board, null for no restriction |
postable_by | number | The minimum priority required to post in the board, null for no restriction |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
id | string | The board's unique id |
name | string | The board's name |
description | string | The boards description |
viewable_by | number | The minimum priority required to view the board, null for no restriction |
postable_by | number | The minimum priority required to post in the board, null for no restriction |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue updating the boards |
# Update All Boards Categorized
Used to update all boards within their categories.
POST /boards/all
# Parameters - Payload
Name | Type | Description |
---|---|---|
boardMapping | object[] | Array containing mapping of boards and categories |
boardMapping.id | string | The id of the category or board |
boardMapping.name | string | The name of the category or board |
boardMapping.type | string | The type of the mapping object Allowed values: "board","category","uncategorized" |
boardMapping.view_order | number | The view order of the board or category |
boardMapping.category_id | string | optional If type is "board" the id of the category the board belongs to |
boardMapping.parent_id | string | optional If type is "board" and the board is a child board, the id of the parent board |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
operations | array | Array containing all of the operations performed while updating categories |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue updating categories/boards |
# Breadcrumbs
# Find
Used to get the breadcrumbs from board, thread, category or post id
GET /breadcrumbs
# Parameters - Query
Name | Type | Description |
---|---|---|
id | string | The unique id of the board, thread, category or post to retrieve breadcrumbs for |
type | string | The type of the id being provided (board, category, thread, or post) |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
breadcrumbs | object[] | Array containing breadcrumb objects |
breadcrumbs.label | string | Label for the breadcrumb link |
breadcrumbs.state | string | State for backing the label |
breadcrumbs.opts | object | State options to pass to ui-sref, can include id or hash |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue retrieving the breadcrumbs |
# Categories
# All Categories (Filters Private)
Used to retrieve all boards within their respective categories.
GET /boards
# Parameters - Query
Name | Type | Description |
---|---|---|
page | number | optional The page of threads to bring back for recent threads Default value: 1 |
limit | number | optional The number of threads to bring back per page for recent threads Default value: 25Size range: 1..100 |
stripped | boolean | optional If true brings back boards with no additional metadata |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
data | object | Object containing boards and recent thread data |
data.boards | object[] | contains boards in their respective categories |
data.boards.id | string | The id of the category |
data.boards.name | string | The name of the category |
data.boards.view_order | number | The view order of the category |
data.boards.viewable_by | number | The minimum priority to be able to view category, null for no restriction |
data.boards.postable_by | number | The minimum priority to be able to post in category, null for no restriction |
data.boards.imported_at | timestamp | If the category was imported, the import timestamp |
data.boards.boards | object[] | Array containing boards nested within category |
data.boards.boards.id | string | The id of the board |
data.boards.boards.name | string | The name of the board |
data.boards.boards.category_id | string | The id of the category containing the board |
data.boards.boards.parent_id | string | The id of the parent board if applicable |
data.boards.boards.view_order | number | The view order of the board |
data.boards.boards.viewable_by | number | The minimum priority to be able to view the board, null for no restriction |
data.boards.boards.postable_by | number | The minimum priority to be able to post to the board, null for no restriction (stripped=false) |
data.boards.boards.description | string | The board description text(stripped=false) |
data.boards.boards.thread_count | number | The number of threads within the board (stripped=false) |
data.boards.boards.post_count | number | The number of posts within the board(stripped=false) |
data.boards.boards.last_thread_id | string | The id of the last posted in thread (stripped=false) |
data.boards.boards.last_thread_title | string | The title of the last posted in thread (stripped=false) |
data.boards.boards.post_deleted | boolean | Boolean indicating if the last post in the board was deleted (stripped=false) |
data.boards.boards.last_post_postion | number | The position of the last post within a thread in the board (stripped=false) |
data.boards.boards.last_post_created_at | timestamp | The created at timestamp of the most recent post (stripped=false) |
data.boards.boards.last_post_username | string | The username of the user who created the most recent post (stripped=false) |
data.boards.boards.last_post_avatar | string | The avatar of the user who created the most recent post (stripped=false) |
data.boards.boards.user_id | string | The id of the user who created the most recent post (stripped=false) |
data.boards.boards.user_deleted | boolean | Boolean indicating if the user who created the most recent post has had their account deleted (stripped=false) |
data.boards.boards.children | object[] | An array containing child boards if applicable |
data.boards.boards.moderators | object[] | Array containing data about the moderators of the board (stripped=false) |
data.boards.boards.moderators.id | string | The id of the moderator |
data.boards.boards.moderators.username | string | The username of the moderator |
data.boards.boards.created_at | timestamp | The created at timestamp of the board(stripped=false) |
data.boards.boards.updated_at | timestamp | The updated at timestamp of the board(stripped=false) |
data.boards.boards.imported_at | timestamp | The imported at timestamp of the board(stripped=false) |
data.threads | object[] | contains threads with most recent posts (stripped=false) |
data.threads.id | string | The id of the thread |
data.threads.locked | boolean | Boolean indicating if the thread is locked |
data.threads.sticky | boolean | Boolean indicating if the thread is stickied |
data.threads.moderated | boolean | Boolean indicating if the thread is self moderated |
data.threads.poll | boolean | Boolean indicating if the thread has a poll |
data.threads.updated_at | timestamp | updated at timestamp of the thread |
data.threads.view_count | number | View count of the thread |
data.threads.title | string | The title of the thread |
data.threads.board | object | The board the thread is in |
data.threads.board.id | string | The id of the board |
data.threads.board.name | string | The name of the board |
data.threads.post | object | The post object for the thread |
data.threads.post.id | string | The id of the post |
data.threads.post.position | number | The position of the last post |
data.threads.post.created_at | timestamp | The created at timestamp of the post |
data.threads.post.deleted | boolean | Boolean indicating if the post was deleted |
data.threads.user | object | The user who created the post |
data.threads.user.id | string | The id of the user who created the last post |
data.threads.user.username | string | The username of the user who created the last post |
data.threads.user.deleted | boolean | Boolean indicating if the user who created the last post had their account deleted |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue retrieving boards |
# All Categories (Includes Private)
Used to retrieve all boards within their respective categories not filtering private boards.
GET /boards/unfiltered
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
categories | object[] | An array containing categories and all their boards |
categories.id | string | The categories unique id |
categories.name | string | The categories name |
categories.view_order | number | The categories view order |
categories.imported_at | timestamp | If the category was imported, the import date |
categories.viewable_by | number | Minimum priority a user must have to view the category, null if no restriction |
categories.postable_by | number | Minimum priority a user must have to post in boards within this category, null if no restriction |
categories.boards | object[] | Array of boards within this category |
categories.boards.id | string | The board's unique id |
categories.boards.name | string | The board's name |
categories.boards.description | string | The board's description |
categories.boards.viewable_by | number | Minimum priority a user must have to view the board, null if no restriction |
categories.boards.postable_by | number | Minimum priority a user must have to post in the board, null if no restriction |
categories.boards.thread_count | number | Number of threads in the board |
categories.boards.post_count | number | Number of posts in the board |
categories.boards.created_at | timestamp | Created at date for board |
categories.boards.updated_at | timestamp | Last time the board was updated |
categories.boards.imported_at | timestamp | If the board was imported at, the time it was imported |
categories.boards.last_thread_id | string | The id of the thread last posted in |
categories.boards.parent_id | string | If the board is a child board the parent board's id |
categories.boards.category_id | string | The id of the board's parent category |
categories.boards.view_order | number | The view order of the board |
categories.boards.last_thread_title | string | The title of the thread last posted in |
categories.boards.post_deleted | boolean | Indicates if the last post in the board was deleted |
categories.boards.last_post_created_at | timestamp | Timestamp of the last post in the board's created date |
categories.boards.last_post_position | number | The position of the last post within the thread |
categories.boards.last_post_username | string | The username of the author of the last post within the board |
categories.boards.last_post_avatar | string | The avatar of the author of the last post within the board |
categories.boards.user_id | string | The id of the author of the last post within the board |
categories.boards.user_deleted | boolean | Boolean which indicates if the last user to post within the board has had their account deleted |
categories.boards.moderators | object[] | Array of boards moderators |
categories.boards.moderators.id | string | The id of the moderator |
categories.boards.moderators.username | string | The username of the moderator |
categories.boards.children | object[] | Array of child boards of this board |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue retrieving categories |
# Create Categories
Used to create categories
POST /categories
# Parameters - Payload
Name | Type | Description |
---|---|---|
categories | string[] | Array of category names |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
categories | object[] | Array of created category |
categories.id | string | The id of the newly created category |
categories.name | string | The name of the newly created category |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue creating the categories |
# Delete Categories
Used to delete categories
POST /categories/delete
# Parameters - Payload
Name | Type | Description |
---|---|---|
category_ids | string[] | Array of category ids to delete |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
category_ids | string[] | Array of deleted category ids |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue deleting the categories |
# Conversations
# Create
Used to create a new conversation and the first message of the conversation.
POST /conversations
# Parameters - Payload
Name | Type | Description |
---|---|---|
receiver_ids | string | The id of the users receiving the message/conversation |
content | object | The contents of this message |
content.body | string | The raw contents of this message |
content.body_html | string | The html contents of this message |
content.subject | string | The subject of this message |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
id | string | The unique id of the message |
conversation_id | string | The unique id of the conversation this message belongs to |
sender_id | string | The unique id of the user that sent this message |
receiver_ids | string | The unique ids of the users that will receive this message |
content | object | The contents of this message |
content.body | string | The raw contents of this message |
content.body_html | string | The html contents of this message |
content.subject | string | The subject of this message |
created_at | timestamp | Timestamp of when the conversation was created |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue creating the conversation |
# Delete
Used to delete a conversation.
DELETE /conversations/:id
# Parameters - Parameter
Name | Type | Description |
---|---|---|
id | string | The Id of the conversation to delete |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
id | string | The unique id of the conversation being deleted |
sender_id | string | The unique id of the sender |
receiver_ids | string | The unique ids of the receivers |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue deleting the conversation |
# Messages in Conversation
Used to get messages for this conversation.
GET /conversations/:id
# Parameters - Parameter
Name | Type | Description |
---|---|---|
id | string | The id of the conversation to get |
# Parameters - Query
Name | Type | Description |
---|---|---|
timestamp | timestamp | optional The timestamp to look for messages before |
message_id | string | optional The id of the last message |
limit | number | optional How many messages to return per page Default value: 15 |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
id | string | The id of the conversation |
has_next | boolean | Boolean indicating if there are more messages |
last_message_timestamp | timestamp | timestamp of the last message |
last_message_id | timestamp | timestamp of the last message |
subject | string | The subject of the conversation |
messages | object[] | An array of messages in this conversation |
messages.id | string | The unique id of the message |
messages.conversation_id | string | The unique id of the conversation this message belongs to |
messages.sender_id | string | The unique id of the user that sent this message |
messages.receiver_id | string | The unique id of the user that sent this message |
messages.body | string | The contents of this message |
messages.viewed | boolean | The flag showing if the receiver viewed this message |
messages.created_at | timestamp | Timestamp of when the conversation was created |
messages.sender_username | string | The username of the sender |
messages.sender_deleted | boolean | Boolean indicating if the sender's account is deleted |
messages.sender_avatar | string | The avatar of the sender |
messages.receiver_username | string | The username of the receiver |
messages.receiver_deleted | boolean | Boolean indicating if the receiver's account is deleted |
messages.receiver_avatar | string | The avatar of the receiver |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue getting messages for this conversation |
# Legal
# (Admin) Reset Legal Text
Used to reset legal text to default text
POST /api/legal/reset
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
tos | string | The source html for the terms of service page |
privacy | string | The source html for the privacy page |
disclaimer | string | The source html for the disclaimer page |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue retrieving the ToS, privacy policy and disclaimer. |
# (Admin) Text
Used to fetch the ToS, privacy policy and disclaimer to be updated by the user.
GET /api/legal
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
tos | string | The source html for the terms of service page |
privacy | string | The source html for the privacy page |
disclaimer | string | The source html for the disclaimer page |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue retrieving the ToS, privacy policy and disclaimer. |
# (Admin) Update
Used to update all legal text: ToS, privacy policy, disclaimers.
PUT /api/legal
# Parameters - Payload
Name | Type | Description |
---|---|---|
tos | string | optional The updated Terms of Service. |
privacy | string | optional The updated privacy policy. |
disclaimer | string | optional The updated disclaimer. |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
success | object | 200 OK |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue retrieving the ToS, privacy policy and disclaimer. |
# Mentions
# Delete Mentions
Used to delete a user's mentions
DELETE /mentions
# Parameters - Query
Name | Type | Description |
---|---|---|
id | string | The id of the mention to delete |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
deleted | boolean | True if the mention was deleted |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue deleting the mention |
# Get Mention Settings
Used to retreive the user's mention settings
GET /mentions/settings
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
email_mentions | boolean | Boolean indicating if the user is receiving emails when mentioned |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an getting mention settings |
# Ignore User's Mentions
Used to ignore mentions from a specific user's
POST /mentions/ignore
# Parameters - Payload
Name | Type | Description |
---|---|---|
username | string | The name of the user to ignore mentions from |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
success | boolean | True if the user was ignored |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue ignoring mentions |
# Page Ignored Users
Used to page through user's whos mentions are being ignored
GET /mentions/ignored
# Parameters - Query
Name | Type | Description |
---|---|---|
page | number | optional The page of ignored users to return |
limit | number | optional The number ignored users to return per page |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
page | number | The page of ignored users being returned |
limit | number | The number ignored users being returned per page |
prev | boolean | Boolean indicating if there is a previous page |
next | boolean | Boolean indicating if there is a next page |
data | object[] | Array containing ignored users |
data.username | string | The name of the user being ignored |
data.id | string | The id of the user being ignored |
data.avatar | string | The avatar of the user being ignored |
data.ignored | boolean | Boolean indicating if the user's mentions are being ignored |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an error paging ignored users |
# Remove Thread Subscriptions
Used to delete a user's thread subscriptions
DELETE /threadnotifications
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
deleted | boolean | True if the user's thread subscriptions were deleted |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue deleting the user's thread subscriptions |
# Toggle Mention Emails
Used to toggle email notifications when mentioned
PUT /mentions/settings
# Parameters - Payload
Name | Type | Description |
---|---|---|
enabled | boolean | optional Boolean indicating if mention emails are enabled or not Default value: true |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
enabled | boolean | Boolean indicating if the mention emails were enabled or not |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an enabling mention emails |
# Unignore User's Mentions
Used to unignore mentions from a specific user's
POST /mentions/unignore
# Parameters - Payload
Name | Type | Description |
---|---|---|
username | string | The name of the user to unignore mentions from |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
success | boolean | True if the user was unignored |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue unignoring mentions |
# View Mentions
Used to view a user's mentions
GET /mentions
# Parameters - Query
Name | Type | Description |
---|---|---|
page | number | optional The page of mentions to return |
limit | number | optional The number mentions to return per page |
extended | boolean | optional Brings back extra data such as parts of the post body, board name, board id, etc... |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
page | number | The page of mentions being returned |
limit | number | The number mentions being returned per page |
prev | boolean | Boolean indicating if there is a previous page |
next | boolean | Boolean indicating if there is a next page |
extended | boolean | Boolean indicating if extra metadata should be returned |
data | object[] | Array containing mention objects |
data.id | string | The id of the mention |
data.thread_id | string | The id of the thread the mention is in |
data.title | string | The title of the thread the mention is in |
data.post_id | string | The id of the post the mention is in |
data.post_start | number | The start position of the post in the thread |
data.mentioner | string | The username of the mentioner |
data.mentioner_avatar | string | The avatar of the mentioner |
data.notification_id | string | The id of the notification (for websockets) |
data.viewed | boolean | Boolean indicating if the mention has been viewed |
data.created_at | timestamp | Timestamp of when the mention was created |
data.board_id | string | The id of the board the mention is in (If extended=true) |
data.board_name | string | The name of the board the mentions is in(If extended=true) |
data.body_html | string | The body of the post the mention is in (If extended=true) |
data.body | string | The unprocess body of the post the mention is in (If extended=true) |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an error paging user mentions |
# Messages
# Create
Used to create a new message.
POST /messages
# Parameters - Payload
Name | Type | Description |
---|---|---|
conversation_id | string | The id of the conversation the message should be created in |
receiver_ids | string | The ids of the users receiving the message/conversation |
content | object | The contents of this message |
content.body | string | The raw contents of this message |
content.body_html | string | The html contents of this message |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
id | string | The unique id of the message |
conversation_id | string | The unique id of the conversation this message belongs to |
sender_id | string | The unique id of the user that sent this message |
receiver_ids | string | The unique ids of the users that will receive this message |
content | object | The contents of this message |
content.body | string | The raw contents of this message |
content.body_html | string | The html contents of this message |
content.subject | string | The subject of this message |
created_at | timestamp | Timestamp of when the conversation was created |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue creating the message |
# Delete
Used to delete a message.
DELETE /messages/:id
# Parameters - Parameter
Name | Type | Description |
---|---|---|
id | string | The Id of the message to delete |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
id | string | The unique id of the message being deleted |
sender_id | string | The unique id of the user that sent this message |
receiver_ids | string | The unique ids of the users that were sent this message |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue deleting the message |
# Get Message Draft
Used to find a user's message draft.
GET /messages/drafts
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
user_id | string | The id of the user |
draft | string | The user's latest draft |
updated_at | timestamp | The updated at timestamp of the draft |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue finding the message draft |
# Get Messages Settings
Used to retreive the user's message settings
GET /messages/settings
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
email_messages | boolean | Boolean indicating if the user is receiving emails when messaged |
ignore_newbies | boolean | Boolean indicating if the user allows newbies to send them messages |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an getting message settings |
# Get Recent Messages
Get the latest messages for this user.
GET /messages
# Parameters - Query
Name | Type | Description |
---|---|---|
page | number | optional The page of messages to return |
limit | number | optional The number of messages per page |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
updated_at | timestamp | Timestamp of the last message received |
sender_username | string | The username of the sender |
sender_deleted | boolean | Boolean indicating if the sender's account is deleted |
sender_avatar | string | The avatar of the sender |
receiver_username | string | The username of the receiver |
receiver_deleted | boolean | Boolean indicating if the receiver's account is deleted |
receiver_avatar | string | The avatar of the receiver |
id | string | The unique id of the message |
conversation_id | string | The unique id of the conversation this message belongs to |
sender_id | string | The unique id of the user that sent this message |
receiver_ids | string | The unique ids of the users that will receive this message |
content | object | The contents of this message |
content.body | string | The raw contents of this message |
content.body_html | string | The html contents of this message |
content.subject | string | The subject of this message |
created_at | timestamp | Timestamp of when the conversation was created |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue getting the messages |
# Ignore User's Messages
Used to ignore messages from a specific user
POST /messages/ignore
# Parameters - Payload
Name | Type | Description |
---|---|---|
username | string | The name of the user to ignore messages from |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
success | boolean | True if the user was ignored |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue ignoring messages |
# Page Ignored Users
Used to page through user's whos messages are being ignored
GET /messages/ignored
# Parameters - Query
Name | Type | Description |
---|---|---|
page | number | optional The page of ignored users to return |
limit | number | optional The number ignored users to return per page |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
page | number | The page of ignored users being returned |
limit | number | The number ignored users being returned per page |
prev | boolean | Boolean indicating if there is a previous page |
next | boolean | Boolean indicating if there is a next page |
data | object[] | Array containing ignored users |
data.username | string | The name of the user being ignored |
data.id | string | The id of the user being ignored |
data.avatar | string | The avatar of the user being ignored |
data.ignored | boolean | Boolean indicating if the user's messages are being ignored |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an error paging ignored users |
# Save Message Draft
Used to save a user's message draft.
PUT /messages/drafts
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
user_id | string | The id of the user |
draft | string | The user's message draft |
updated_at | timestamp | The updated at timestamp of the draft |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue saving the message draft |
# Toggle Message Emails
Used to toggle email notifications when messaged
PUT /messages/settings
# Parameters - Payload
Name | Type | Description |
---|---|---|
enabled | boolean | optional Boolean indicating if message emails are enabled or not Default value: true |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
enabled | boolean | Boolean indicating if the message emails were enabled or not |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an enabling message emails |
# Toggle Newbie Messages
Used to toggle setting allowing messages from users with the newbie role
PUT /messages/settings/newbie
# Parameters - Payload
Name | Type | Description |
---|---|---|
enabled | boolean | optional Boolean indicating if message emails are enabled or not Default value: true |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
enabled | boolean | Boolean indicating if the newbie messages are enabled or not |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an error toggling newbie message settings |
# Unignore User's Messages
Used to unignore messages from a specific user's
POST /messages/unignore
# Parameters - Payload
Name | Type | Description |
---|---|---|
username | string | The name of the user to unignore messages from |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
success | boolean | True if the user was unignored |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue unignoring messages |
# Moderation
# (Admin) Page Moderation Log
This allows Administrators to page through all actions performed by moderators.
GET /admin/modlog
# Parameters - Query
Name | Type | Description |
---|---|---|
page | number | optional The page of moderation logs to retrieve Default value: 1Size range: 1..n |
limit | number | optional The number of logs to retrieve per page Default value: 25Size range: 1..n |
mod | string | optional The username of the moderator to search logs for |
action | action | optional The action to search for, follows route permission conventions (e.g. posts.create, posts.update, etc...) |
keyword | string | optional Keywords to search log for |
bdate | timestamp | optional Used to search for logs before specific date |
adate | timestamp | optional Used to search for logs after specific date |
sdate | timestamp | optional Used to search for logs between specific date (start) |
edate | timestamp | optional Used to search for logs between specific date (end) |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
page | number | The current page of moderation logs being returned |
limit | number | The number of logs being returned per page |
next | number | The page number of the next page |
prev | number | The page number of the previous page |
data | object[] | Array containing moderation logs |
mod_username | string | The username of the mod who performed the action |
mod_id | string | The id of the mod who performed the action |
mod_ip | string | The ip address of the mod who performed the action |
action_api_url | string | The route that the moderator used to perform action |
action_api_method | string | The route method type (e.g. PUT, GET, etc..) |
action_api_obj | object | Metadata which was saved to the log when the action was performed |
action_taken_at | timestamp | Timestamp of when the action was performed |
action_type | string | The type of action that was performed, follows route permission conventions (e.g. posts.create, posts.update, etc...) |
action_display_text | string | Text describing what action was taken |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an error retrieving the moderation logs |
# Moderators
# Add Moderator
Add a moderator to a board.
POST /admin/moderators
# Parameters - Payload
Name | Type | Description |
---|---|---|
usernames | string[] | Array of usernames to add as a moderator. |
board_id | string | The id of the board to add the moderator to. |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
moderators | object[] | Array of users who were added as moderators |
moderators.id | string | The unique id of the moderator |
moderators.username | string | The username of the moderator |
moderators.roles | object[] | Array of the users roles, including new moderator role |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue adding the moderator. |
# Remove Moderator
Remove a moderator from a board.
POST /admin/moderators/remove
# Parameters - Payload
Name | Type | Description |
---|---|---|
username | string[] | Array of user ids of the user to remove from being a moderator. |
board_id | string | The id of the board to remove the moderator from. |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
moderators | object[] | Array of users who were removed from list of moderators |
moderators.id | string | The unique id of the moderator |
moderators.username | string | The username of the moderator |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue removing the moderator. |
# MOTD
# Get Message of the Day
Used to retrieve the message of the day
GET /motd
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
motd | string | The unparsed motd, may contain bbcode or markdown |
motd_html | string | The parsed motd html to display to users |
main_view_only | boolean | Lets the UI know to display on the main page or all pages |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue retrieving the Message of the Day |
# Set Message of the Day
Used to set the message of the day
PUT /motd
# Parameters - Payload
Name | Type | Description |
---|---|---|
motd | string | The unparse message of the day, may contain markdown or bbcode |
main_view_only | boolean | Lets the UI know to display on the main page or all pages |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
motd | string | The unparsed motd, may contain bbcode or markdown |
motd_html | string | The parsed motd html to display to users |
main_view_only | boolean | Lets the UI know to display on the main page or all pages |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue saving the Message of the Day |
# Notifications
# Dismiss
Used to dismiss all notifications of a type.
POST /notifications
# Parameters - Payload
Name | Type | Description |
---|---|---|
type | string | The type of notifications to dismiss Allowed values: "message","mention","other" |
id | string | The id of the specific notification to dismiss |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
STATUS | object | 200 OK |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue dismissing the notifications |
# Get Notifications counts
Get the notifications counts for this user.
GET /notifications/counts
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
notificationsCounts | object | Object containing notification count information |
notificationsCounts.message | number | Number of message notifications |
notificationsCounts.mention | number | Number of mention notifications |
notificationsCounts.other | number | Number of other notifications |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue getting the notifications counts |
# Portal
# Portal Contents
Used to retrieve the portal contents.
GET /portal
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
boards | object[] | contains boards to be displayed in portal |
boards.id | string | The id of the board |
boards.name | string | The name of the board |
boards.parent_id | string | The id of the parent board if applicable |
boards.viewable_by | number | The minimum priority to be able to view the board, null for no restriction |
boards.postable_by | number | The minimum priority to be able to post to the board, null for no restriction (stripped=false) |
boards.description | string | The board description text(stripped=false) |
boards.thread_count | number | The number of threads within the board (stripped=false) |
boards.post_count | number | The number of posts within the board(stripped=false) |
boards.moderators | object[] | Array containing data about the moderators of the board (stripped=false) |
boards.moderators.id | string | The id of the moderator |
boards.moderators.username | string | The username of the moderator |
boards.created_at | timestamp | The created at timestamp of the board(stripped=false) |
boards.updated_at | timestamp | The updated at timestamp of the board(stripped=false) |
boards.imported_at | timestamp | The imported at timestamp of the board(stripped=false) |
threads | object[] | contains threads with most recent posts (stripped=false) |
threads.id | string | The id of the thread |
threads.locked | boolean | Boolean indicating if the thread is locked |
threads.sticky | boolean | Boolean indicating if the thread is stickied |
threads.moderated | boolean | Boolean indicating if the thread is self moderated |
threads.poll | boolean | Boolean indicating if the thread has a poll |
threads.updated_at | timestamp | updated at timestamp of the thread |
threads.view_count | number | View count of the thread |
threads.title | string | The title of the thread |
threads.last_post_id | string | The id of the last post |
threads.last_post_position | number | The position of the last post |
threads.last_post_created_at | timestamp | Created at timestamp of last post |
threads.last_post_updated_at | timestamp | Updated at timestamp of last post |
threads.post_body | string | The body of the post |
threads.post_avatar | string | The avatar of the user who made the last post |
threads.post_signature | string | The signature of the user who made the last post |
threads.post_user_name | string | the name of the user who made the last post |
threads.post_highlight_color | string | The highlight color of the user who made the last post |
threads.post_role_name | string | The role of the user who made the last post |
threads.last_post_username | string | The username of the user who made the last post |
threads.user | object | The user who created the post |
threads.user.id | string | The id of the user who created the last post |
threads.user.username | string | The username of the user who created the last post |
threads.user.deleted | boolean | Boolean indicating if the user who created the last post had their account deleted |
recent | object[] | contains threads with most recent posts (stripped=false) |
recent.id | string | The id of the thread |
recent.locked | boolean | Boolean indicating if the thread is locked |
recent.sticky | boolean | Boolean indicating if the thread is stickied |
recent.moderated | boolean | Boolean indicating if the thread is self moderated |
recent.poll | boolean | Boolean indicating if the thread has a poll |
recent.updated_at | timestamp | updated at timestamp of the thread |
recent.view_count | number | View count of the thread |
recent.title | string | The title of the thread |
recent.board | object | The board the thread is in |
recent.board.id | string | The id of the board |
recent.board.name | string | The name of the board |
recent.post | object | The post object for the thread |
recent.post.id | string | The id of the post |
recent.post.position | number | The position of the last post |
recent.post.created_at | timestamp | The created at timestamp of the post |
recent.post.deleted | boolean | Boolean indicating if the post was deleted |
recent.user | object | The user who created the post |
recent.user.id | string | The id of the user who created the last post |
recent.user.username | string | The username of the user who created the last post |
# Error response
# Error response - Error 400
Name | Type | Description |
---|---|---|
BadRequest | Portal is disabled. |
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue retrieving portal content. |
# Posts
# Create
Used to create a new post.
POST /posts
# Parameters - Payload
Name | Type | Description |
---|---|---|
title | string | The title of the post |
body | string | The post's body as it was entered in the editor by the user |
thread_id | string | The unique id of the thread the post belongs to |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
id | string | The unique id of the post |
thread_id | string | The unique id of the thread the post belongs to |
user_id | string | The unique id of the user who created the post |
title | string | The title of the post |
body_html | string | The post's body with any markup tags converted and parsed into html elements |
deleted | boolean | boolean indicating if post has been deleted |
locked | boolean | boolean indicating if post has been locked |
body | string | The post's body as it was entered in the editor by the user |
created_at | timestamp | Timestamp of when the post was created |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue creating the post |
# Delete
Used to delete a post.
DELETE /posts/:id
# Parameters - Parameter
Name | Type | Description |
---|---|---|
id | string | The Id of the post to delete |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
position | number | The position of the post within the thread |
updated_at | timestamp | The updated at timestamp of the post |
imported_at | timestamp | The imported at timestamp of the post |
id | string | The unique id of the post |
thread_id | string | The unique id of the thread the post belongs to |
user_id | string | The unique id of the user who created the post |
title | string | The title of the post |
body_html | string | The post's body with any markup tags converted and parsed into html elements |
deleted | boolean | boolean indicating if post has been deleted |
locked | boolean | boolean indicating if post has been locked |
body | string | The post's body as it was entered in the editor by the user |
created_at | timestamp | Timestamp of when the post was created |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue deleting the post |
# Find
Used to find a post.
GET /posts/:id
# Parameters - Parameter
Name | Type | Description |
---|---|---|
id | string | The unique id of the post to retrieve |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
avatar | string | The avatar of the post author |
position | number | The position of the post within the thread |
updated_at | timestamp | The updated at timestamp of the post |
imported_at | timestamp | The imported at timestamp of the post |
user | object | Object containing user data about the author of the post |
user.id | string | The id of the user |
user.name | string | The name of the user |
user.username | string | The username of the user |
user.signature | string | The signature of the user |
id | string | The unique id of the post |
thread_id | string | The unique id of the thread the post belongs to |
user_id | string | The unique id of the user who created the post |
title | string | The title of the post |
body_html | string | The post's body with any markup tags converted and parsed into html elements |
deleted | boolean | boolean indicating if post has been deleted |
locked | boolean | boolean indicating if post has been locked |
body | string | The post's body as it was entered in the editor by the user |
created_at | timestamp | Timestamp of when the post was created |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue finding the post |
# Get Post Draft
Used to find a user's post draft.
GET /posts/drafts
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
user_id | string | The id of the user |
draft | string | The user's latest draft |
updated_at | timestamp | The updated at timestamp of the draft |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue finding the post draft |
# Lock
Used to lock a post.
POST /posts/:id/lock
# Parameters - Parameter
Name | Type | Description |
---|---|---|
id | string | The Id of the post to lock |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
position | number | The position of the post within the thread |
updated_at | timestamp | The updated at timestamp of the post |
imported_at | timestamp | The imported at timestamp of the post |
id | string | The unique id of the post |
thread_id | string | The unique id of the thread the post belongs to |
user_id | string | The unique id of the user who created the post |
title | string | The title of the post |
body_html | string | The post's body with any markup tags converted and parsed into html elements |
deleted | boolean | boolean indicating if post has been deleted |
locked | boolean | boolean indicating if post has been locked |
body | string | The post's body as it was entered in the editor by the user |
created_at | timestamp | Timestamp of when the post was created |
# Error response
# Error response - Error 400
Name | Type | Description |
---|---|---|
BadRequest | Post Not Found |
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue deleting the post |
# Page By Thread
Used to page through posts by thread.
GET /posts
# Parameters - Query
Name | Type | Description |
---|---|---|
thread_id | string | Id of the thread to retrieve posts from |
page | number | Specific page of posts to retrieve. Only valid when start param is not present. |
limit | number | Number of posts to retrieve per page. |
start | number | Specific post within the thread. Only valid when page param is not present. |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
write_access | boolean | Boolean indicating if user has write access to thread |
banned_from_board | boolean | Boolean indicating if user is banned from this board |
page | number | The page of posts being returned |
limit | number | The number of posts per page being returned |
thread | object | Object containing thread metadata |
thread.id | string | The id of the thread |
thread.board_id | string | The id of the board the thread is in |
thread.locked | boolean | Boolean indicating if thread is locked |
thread.sticky | boolean | Boolean indicating if thread is stickied |
thread.moderated | boolean | Boolean indicating if thread is self moderated |
thread.watched | boolean | Boolean indicating if thread is being watched |
thread.trust_visible | boolean | Boolean indicating if trust score is visible |
thread.post_count | number | Number of posts in the thread |
thread.created_at | timestamp | Thread created at timestamp |
thread.updated_at | timestamp | Thread updated at timestamp |
thread.user | object | The user who started the thread |
thread.user.id | string | The id of the user who started the thread |
thread.user.username | string | The username of the user who started the thread |
thread.user.deleted | boolean | Boolean indicating if the thread started has had their account deleted |
thread.poll | object | Object that contains poll data, if thread has a poll |
thread.poll.id | string | The unique id of the poll |
thread.poll.question | string | The question asked in the poll |
thread.poll.answers | object[] | The list of the answers to the question of this poll |
thread.poll.answers.answer | string | The answer to the question of this poll |
thread.poll.max_answers | number | The max number of answer per vote |
thread.poll.change_vote | boolean | Boolean indicating whether users can change their vote |
thread.poll.locked | boolean | Boolean indicating whether the poll is locked or not |
thread.poll.has_voted | boolean | Boolean indicating whether or not the user has voted |
thread.poll.expiration | date | The expiration date of the poll |
thread.poll.display_mode | string | String indicating how the results are shown to users |
board | object | Object containing information about the board the post is in |
board.id | string | The id of the board |
board.name | string | The name of the board |
board.parent_id | string | The id of the parent board if applicable |
board.watched | boolean | Boolean indicating if the authed user is watching this board |
board.viewable_by | number | The minimum priority to be able to view the board, null for no restriction |
board.postable_by | number | The minimum priority to be able to post to the board, null for no restriction |
board.description | string | The board description text |
board.thread_count | number | The number of threads within the board |
board.post_count | number | The number of posts within the board |
board.children | object[] | An array containing child boards if applicable |
board.moderators | object[] | Array containing data about the moderators of the board |
board.moderators.id | string | The id of the moderator |
board.moderators.username | string | The username of the moderator |
board.created_at | timestamp | The created at timestamp of the board |
board.updated_at | timestamp | The updated at timestamp of the board |
board.imported_at | timestamp | The imported at timestamp of the board |
posts | object[] | Object containing thread posts |
posts.id | string | The id of the post |
posts.position | number | The position of the post in the thread |
posts.thread_id | string | The id of the thread containing the post |
posts.board_id | string | The id of the board containing the post |
posts.title | string | The title of the post |
posts.body_html | string | The processed body of the post |
posts.body | string | The unprocessed body of the post |
posts.locked | boolean | Boolean indicating if the thread is locked |
posts.reported | boolean | Boolean indicating if the post has been reported by the authorized user |
posts.reported_author | boolean | Boolean indicating if the post's author has been reported by the authorized user |
posts.created_at | timestamp | The created at timestamp of the post |
posts.updated_at | timestamp | The updated at timestamp of the post |
posts.imported_at | timestamp | The imported at timestamp of the post |
posts.avatar | string | The avatar of the user who made the post |
posts.user | object | Object containing user data about the author of the post |
posts.user.id | string | The id of the user |
posts.user.name | string | The name of the user |
posts.user.username | string | The username of the user |
posts.user.priority | number | The priority of the user |
posts.user.signature | string | The signature of the user |
posts.user.highlight_color | string | The role highlight color of the user |
posts.user.role_name | string | The role name of the user |
posts.user.activity | number | The user's activity number |
posts.user.post_count | number | The user's post count number |
posts.user.stats | object | Object containing trust stats for user |
posts.user.stats.score | number | The user's overall trust score |
posts.user.stats.neg | number | The user's negative trust points |
posts.user.stats.pos | number | The user's positive trust points |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue finding the posts for thread |
# Page By User
Used to page through posts made by a particular user
GET /posts/user/:username
# Parameters - Parameter
Name | Type | Description |
---|---|---|
username | string | The username of the user's whose posts to page through |
# Parameters - Query
Name | Type | Description |
---|---|---|
page | number | optional Which page of the user's posts to retrieve Default value: 1Size range: 1..n |
limit | number | optional How many posts to return per page Default value: 25Size range: 1..100 |
desc | boolean | optional True to sort descending, false to sort ascending Default value: true |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
page | number | The page of posts to return |
limit | number | The number of posts to return per page |
desc | boolean | Boolean indicating the sort order of the posts |
posts | object[] | Object containing users posts |
posts.id | string | The id of the post |
posts.thread_id | string | The id of the thread containing the post |
posts.body | string | The unprocessed body of the post |
posts.body_html | string | The processed body of the post |
posts.position | number | The position of the post in the thread |
posts.deleted | boolean | Boolean indicating if the post is deleted |
posts.hidden | boolean | Boolean indicating if the post is hidden (true if user is owner of deleted post) |
posts.created_at | timestamp | The created at timestamp of the post |
posts.updated_at | timestamp | The updated at timestamp of the post |
posts.imported_at | timestamp | The imported at timestamp of the post |
posts.board_id | string | The id of the board containing the post |
posts.thread_title | string | The title of the thread the post is in |
posts.avatar | string | The avatar of the user who made the post |
posts.user | object | Object containing user data about the author of the post |
posts.user.id | string | The id of the user |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue paging posts for user |
# Page First Posts By User
Used to page through starting posts made by a particular user
GET /posts/user/:username/started
# Parameters - Parameter
Name | Type | Description |
---|---|---|
username | string | The username of the user's whose posts to page through |
# Parameters - Query
Name | Type | Description |
---|---|---|
page | number | optional Which page of the user's posts to retrieve Default value: 1Size range: 1..n |
limit | number | optional How many posts to return per page Default value: 25Size range: 1..100 |
desc | boolean | optional True to sort descending, false to sort ascending Default value: true |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
page | number | The page of posts to return |
limit | number | The number of posts to return per page |
desc | boolean | Boolean indicating the sort order of the posts |
posts | object[] | Object containing users posts |
posts.id | string | The id of the post |
posts.thread_id | string | The id of the thread containing the post |
posts.body | string | The unprocessed body of the post |
posts.body_html | string | The processed body of the post |
posts.position | number | The position of the post in the thread |
posts.deleted | boolean | Boolean indicating if the post is deleted |
posts.hidden | boolean | Boolean indicating if the post is hidden (true if user is owner of deleted post) |
posts.created_at | timestamp | The created at timestamp of the post |
posts.updated_at | timestamp | The updated at timestamp of the post |
posts.imported_at | timestamp | The imported at timestamp of the post |
posts.board_id | string | The id of the board containing the post |
posts.thread_title | string | The title of the thread the post is in |
posts.avatar | string | The avatar of the user who made the post |
posts.user | object | Object containing user data about the author of the post |
posts.user.id | string | The id of the user |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue paging posts for user |
# Purge
Used to purge a post.
DELETE /posts/:id/purge
# Parameters - Parameter
Name | Type | Description |
---|---|---|
id | string | The Id of the post to purge |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
user_id | string | The id of the user who created the post |
thread_id | string | The id of the thread that the post belonged to |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue purging the post |
# Save Post Draft
Used to save a user's post draft.
PUT /posts/drafts
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
user_id | string | The id of the user |
draft | string | The user's post draft |
updated_at | timestamp | The updated at timestamp of the draft |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue saving the post draft |
# Search Posts
This allows users to search forum posts.
GET /search/posts
# Parameters - Query
Name | Type | Description |
---|---|---|
page | number | optional The page of search results to retrieve Default value: 1Size range: 1..n |
limit | number | optional The number of search results per page Default value: 25Size range: 1..100 |
desc | boolean | optional Boolean indicating whether or not to sort the results in descending order Default value: false |
search | string | optional The term to search posts for |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
limit | number | The number of results returned per page |
page | string | The current page of the results |
desc | number | The order the results are sorted in |
search | string | The search term used in query for posts |
next | number | The number of the next page of search results |
prev | number | The number of the previous page of search results |
posts | object[] | An array of post objects |
posts.id | string | The unique id of the post |
posts.thread_title | string | The title of the thread the post belongs to |
posts.user_id | string | The id of the author of the post |
posts.created_at | timestamp | Timestamp of when the post was created |
posts.thread_id | string | The id of the thread the post belongs to |
posts.position | number | The position of the post within the thread |
posts.body | string | The body of the post |
posts.board_id | string | The id of the board the post belongs to |
posts.board_name | string | The name of the board the post belongs to |
posts.user | string | User object containing info about user who made post |
posts.user.username | string | Username of the user who made the post |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an error retrieving the users |
# Undelete
Used to undo a deleted post.
POST /posts/:id
# Parameters - Parameter
Name | Type | Description |
---|---|---|
id | string | The Id of the post to undo deletion on |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
position | number | The position of the post within the thread |
updated_at | timestamp | The updated at timestamp of the post |
imported_at | timestamp | The imported at timestamp of the post |
id | string | The unique id of the post |
thread_id | string | The unique id of the thread the post belongs to |
user_id | string | The unique id of the user who created the post |
title | string | The title of the post |
body_html | string | The post's body with any markup tags converted and parsed into html elements |
deleted | boolean | boolean indicating if post has been deleted |
locked | boolean | boolean indicating if post has been locked |
body | string | The post's body as it was entered in the editor by the user |
created_at | timestamp | Timestamp of when the post was created |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue undeleting the post |
# Unlock
Used to unlock a post.
POST /posts/:id/unlock
# Parameters - Parameter
Name | Type | Description |
---|---|---|
id | string | The Id of the post to unlock |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
position | number | The position of the post within the thread |
updated_at | timestamp | The updated at timestamp of the post |
imported_at | timestamp | The imported at timestamp of the post |
id | string | The unique id of the post |
thread_id | string | The unique id of the thread the post belongs to |
user_id | string | The unique id of the user who created the post |
title | string | The title of the post |
body_html | string | The post's body with any markup tags converted and parsed into html elements |
deleted | boolean | boolean indicating if post has been deleted |
locked | boolean | boolean indicating if post has been locked |
body | string | The post's body as it was entered in the editor by the user |
created_at | timestamp | Timestamp of when the post was created |
# Error response
# Error response - Error 400
Name | Type | Description |
---|---|---|
BadRequest | Post Not Found |
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue deleting the post |
# Update
Used to update a post.
POST /posts/:id
# Parameters - Parameter
Name | Type | Description |
---|---|---|
id | string | The unique id of the post being updated |
# Parameters - Payload
Name | Type | Description |
---|---|---|
title | string | The title of the post |
body | string | The post's body as it was entered in the editor by the user |
thread_id | string | The unique id of the thread the post belongs to |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
id | string | The unique id of the post |
thread_id | string | The unique id of the thread the post belongs to |
user_id | string | The unique id of the user who created the post |
title | string | The title of the post |
body_html | string | The post's body with any markup tags converted and parsed into html elements |
body | string | The post's body as it was entered in the editor by the user |
updated_at | timestamp | Timestamp of when the post was updated |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue updating the post |
# Rank
# Get Ranks
Used to retrieve a list of all ranks and their thresholds for use in the admin panel
GET /rank
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
ranks | object[] | The id of the rank to updated |
ranks.name | string | The name of the rank |
ranks.post_count | number | The post count needed to achieve the rank |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue retrieving the list of ranks |
# Upsert Rank
Used to insert/update ranks
PUT /rank
# Parameters - Payload
Name | Type | Description |
---|---|---|
ranks | object[] | The list of ranks to be updated |
ranks.name | string | The name of the rank |
ranks.post_count | number | The post count needed to achieve the rank |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
ranks | object[] | The list of ranks which were updated |
ranks.name | string | The name of the rank |
ranks.post_count | number | The post count needed to achieve the rank |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue upserting the rank |
# Reports
# (Admin) Create Message Report Note
Used to leave a note on message moderation reports.
POST /reports/messagenotes
# Parameters - Payload
Name | Type | Description |
---|---|---|
report_id | string | The id of the message report to leave the note on |
user_id | string | The id of the message leaving the message report note |
note | string | The note being left on the message report |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
id | string | The unique id for the message report note |
report_id | string | The id of the message report to leave the note on |
user_id | string | The id of the user leaving the message report note |
username | string | The username of the user who left the message report note |
avatar | string | The url to the avatar of the user who left the message report note |
note | string | The note being left on the message report |
created_at | timestamp | Timestamp of when the message report note was created |
updated_at | timestamp | Timestamp of when the message report note was last updated |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an error creating the message report note |
# (Admin) Create Post Report Note
Used to leave a note on post moderation reports.
POST /reports/postnotes
# Parameters - Payload
Name | Type | Description |
---|---|---|
report_id | string | The id of the post report to leave the note on |
user_id | string | The id of the post leaving the post report note |
note | string | The note being left on the post report |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
id | string | The unique id for the post report note |
report_id | string | The id of the post report to leave the note on |
user_id | string | The id of the user leaving the post report note |
username | string | The username of the user who left the post report note |
avatar | string | The url to the avatar of the user who left the post report note |
note | string | The note being left on the post report |
created_at | timestamp | Timestamp of when the post report note was created |
updated_at | timestamp | Timestamp of when the post report note was last updated |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an error creating the post report note |
# (Admin) Create User Report Note
Used to leave a note on user moderation reports.
POST /reports/usernotes
# Parameters - Payload
Name | Type | Description |
---|---|---|
report_id | string | The id of the user report to leave the note on |
user_id | string | The id of the user leaving the user report note |
note | string | The note being left on the user report |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
id | string | The unique id for the user report note |
report_id | string | The id of the user report to leave the note on |
user_id | string | The id of the user leaving the user report note |
username | string | The username of the user who left the user report note |
avatar | string | The url to the avatar of the user who left the user report note |
note | string | The note being left on the user report |
created_at | timestamp | Timestamp of when the user report note was created |
updated_at | timestamp | Timestamp of when the user report note was last updated |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an error creating the user report note |
# (Admin) Page Message Report
Used to page through message moderation reports.
GET /reports/messages
# Parameters - Query
Name | Type | Description |
---|---|---|
page | number | optional The page of message reports to retrieve Default value: 1 |
limit | number | optional The number of message reports to retrieve per page Default value: 15 |
filter | string | optional Used to filter reports by their status Allowed values: "Pending","Reviwed","Ignored","Bad Report" |
field | string | optional Indicates which column to sort by, used for table sorting Default value: created_atAllowed values: "created_at","priority","reporter_username","offender_created_at","offender_author_username" |
desc | boolean | optional Boolean indicating whether or not to sort the results in descending order Default value: false |
search | string | optional String used to search for a report by username |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
count | number | The total number of reports |
limit | number | The number of reports to bring back per page |
page | number | The current page of reports brought back |
page_count | number | The total number of pages |
filter | string | Indicates the status type of the report being brought back |
field | string | Indicates the field the reports are sorted by |
search | string | Indicates the search string |
desc | boolean | Boolean indicating if the results are in descending order |
data | object[] | An array of message reports. Sort order varies depending on the query parameters passed in. |
data.id | string | The unique id of the message report |
data.status | string | The status of the message report |
data.reviewer_user_id | string | The unique id of the user who reviewed the message report |
data.offender_ban_expiration | timestamp | If the user is banned, the expiration of their ban |
data.offender_board_banned | boolean | Boolean indicating if user is board banned |
data.offender_message_id | string | The unique id of the offending message |
data.offender_message | string | The body of the offending message |
data.offender_created_at | timestamp | Timestamp of the offending message was created |
data.offender_author_created_at | timestamp | Timestamp of the offending message's author created date |
data.offender_author_username | string | The username of the offending message's author |
data.offender_author_email | string | The email of the user who created the offending message |
data.offender_author_id | string | The unique id of the offending message's author |
data.reporter_reason | string | The reason for the report |
data.reporter_user_id | string | The unique id of the reporting user |
data.reporter_username | string | The username of the reporting user |
data.created_at | timestamp | Timestamp of when the message report was created |
data.updated_at | timestamp | Timestamp of when the message report was last updated |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an error retrieving the message reports |
# (Admin) Page Message Report Notes
Used to page through message moderation report notes.
GET /reports/messagenotes/:messageReportId
# Parameters - Parameter
Name | Type | Description |
---|---|---|
messageReportId | string | The unique id of the message report to retrieve notes for |
# Parameters - Query
Name | Type | Description |
---|---|---|
page | number | optional The page of message report notes to retrieve Default value: 1 |
limit | number | optional The number of message report notes to retrieve per page Default value: 10 |
desc | boolean | optional Boolean indicating whether or not to sort the results in descending order Default value: true |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
count | number | The total number of report notes |
limit | number | The number of report notes to bring back per page |
page | number | The current page of report notes brought back |
page_count | number | The total number of pages |
desc | boolean | Boolean indicating if the results are in descending order |
data | object[] | An array of message report note objects. |
data.id | string | The unique id of the message report note |
data.report_id | string | The unique id of the message report this note is for |
data.user_id | string | The unique id of the user who left the note |
data.username | string | The username of the user who left the note |
data.avatar | string | The URL to the avatar of the user who left the note |
data.note | string | The note message that was left on the report |
data.created_at | timestamp | Timestamp of when the report note was created |
data.updated_at | timestamp | Timestamp of when the report note was last updated |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an error retrieving the message report notes |
# (Admin) Page Post Report
Used to page through post moderation reports.
GET /reports/posts
# Parameters - Query
Name | Type | Description |
---|---|---|
page | number | optional The page of post reports to retrieve Default value: 1 |
limit | number | optional The number of post reports to retrieve per page Default value: 15 |
filter | string | optional Used to filter reports by their status Allowed values: "Pending","Reviwed","Ignored","Bad Report" |
field | string | optional Indicates which column to sort by, used for table sorting Default value: created_atAllowed values: "created_at","priority","reporter_username","offender_created_at","offender_title","offender_author_username" |
desc | boolean | optional Boolean indicating whether or not to sort the results in descending order Default value: false |
search | string | optional String used to search for a report by username |
mod_id | string | optional If moderators user id is passed in, only returns reports made in boards this user moderates |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
count | number | The total number of reports |
limit | number | The number of reports to bring back per page |
page | number | The current page of reports brought back |
page_count | number | The total number of pages |
filter | string | Indicates the status type of the report being brought back |
field | string | Indicates the field the reports are sorted by |
search | string | Indicates the search string |
desc | boolean | Boolean indicating if the results are in descending order |
data | object[] | An array of post reports. Sort order varies depending on the query parameters passed in. |
data.id | string | The unique id of the post report |
data.status | string | The status of the post report |
data.reviewer_user_id | string | The unique id of the user who reviewed the post report |
data.offender_ban_expiration | timestamp | If the user is banned, the expiration of their ban |
data.offender_board_banned | boolean | Boolean indicating if user is board banned |
data.offender_post_id | string | The unique id of the offending post |
data.offender_thread_id | string | The unique id of the offending post's thread |
data.offender_title | string | The title of the offending post |
data.offender_created_at | timestamp | Timestamp of the offending post was created |
data.offender_author_created_at | timestamp | Timestamp of the offending post's author created date |
data.offender_author_username | string | The username of the offending post's author |
data.offender_author_email | string | The email of the user who created the offending post |
data.offender_author_id | string | The unique id of the offending post's author |
data.reporter_reason | string | The reason for the report |
data.reporter_user_id | string | The unique id of the reporting user |
data.reporter_username | string | The username of the reporting user |
data.created_at | timestamp | Timestamp of when the post report was created |
data.updated_at | timestamp | Timestamp of when the post report was last updated |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an error retrieving the post reports |
# (Admin) Page Post Report Notes
Used to page through post moderation report notes.
GET /reports/postnotes/:postReportId
# Parameters - Parameter
Name | Type | Description |
---|---|---|
postReportId | string | The unique id of the post report to retrieve notes for |
# Parameters - Query
Name | Type | Description |
---|---|---|
page | number | optional The page of post report notes to retrieve Default value: 1 |
limit | number | optional The number of post report notes to retrieve per page Default value: 10 |
desc | boolean | optional Boolean indicating whether or not to sort the results in descending order Default value: true |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
count | number | The total number of report notes |
limit | number | The number of report notes to bring back per page |
page | number | The current page of report notes brought back |
page_count | number | The total number of pages |
desc | boolean | Boolean indicating if the results are in descending order |
data | object[] | An array of post report note objects |
data.id | string | The unique id of the post report note |
data.report_id | string | The unique id of the post report this note is for |
data.user_id | string | The unique id of the user who left the note |
data.username | string | The username of the user who left the note |
data.avatar | string | The URL to the avatar of the user who left the note |
data.note | string | The note message that was left on the report |
data.created_at | timestamp | Timestamp of when the report note was created |
data.updated_at | timestamp | Timestamp of when the report note was last updated |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an error retrieving the post report notes |
# (Admin) Page User Report
Used to page through user moderation reports.
GET /reports/users
# Parameters - Query
Name | Type | Description |
---|---|---|
page | number | optional The page of user reports to retrieve Default value: 1 |
limit | number | optional The number of user reports to retrieve per page Default value: 15 |
filter | string | optional Used to filter reports by their status Allowed values: "Pending","Reviwed","Ignored","Bad Report" |
field | string | optional Indicates which column to sort by, used for table sorting Default value: created_atAllowed values: "created_at","priority","reporter_username","offender_username","offender_email","offender_created_at" |
desc | boolean | optional Boolean indicating whether or not to sort the results in descending order Default value: false |
search | string | optional String used to search for a report by username |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
count | number | The total number of reports |
limit | number | The number of reports to bring back per page |
page | number | The current page of reports brought back |
page_count | number | The total number of pages |
filter | string | Indicates the status type of the report being brought back |
field | string | Indicates the field the reports are sorted by |
search | string | Indicates the search string |
desc | boolean | Boolean indicating if the results are in descending order |
data | object[] | An array of user reports. Sort order varies depending on the query parameters passed in. |
data.id | string | The unique id of the user report |
data.status | string | The status of the user report |
data.reviewer_user_id | string | The unique id of the user who reviewed the user report |
data.offender_ban_expiration | timestamp | If the user is banned, the expiration of their ban |
data.offender_board_banned | boolean | Boolean indicating if user is board banned |
data.offender_created_at | timestamp | When the offending user created their account |
data.offender_email | string | The email of the offending user |
data.offender_user_id | string | The unique id of the offending user |
data.offender_username | string | The username of the offending user |
data.reporter_reason | string | The reason for the report |
data.reporter_user_id | string | The unique id of the reporting user |
data.reporter_username | string | The username of the reporting user |
data.created_at | timestamp | Timestamp of when the user report was created |
data.updated_at | timestamp | Timestamp of when the user report was last updated |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an error retrieving the user reports |
# (Admin) Page User Report Notes
Used to page through user moderation report notes.
GET /reports/usernotes/:userReportId
# Parameters - Parameter
Name | Type | Description |
---|---|---|
userReportId | string | The unique id of the user report to retrieve notes for |
# Parameters - Query
Name | Type | Description |
---|---|---|
page | number | optional The page of user report notes to retrieve Default value: 1 |
limit | number | optional The number of user report notes to retrieve per page Default value: 10 |
desc | boolean | optional Boolean indicating whether or not to sort the results in descending order Default value: true |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
count | number | The total number of report notes |
limit | number | The number of report notes to bring back per page |
page | number | The current page of report notes brought back |
page_count | number | The total number of pages |
desc | boolean | Boolean indicating if the results are in descending order |
data | object[] | An array of user report note objects. |
data.id | string | The unique id of the user report note |
data.report_id | string | The unique id of the user report this note is for |
data.user_id | string | The unique id of the user who left the note |
data.username | string | The username of the user who left the note |
data.avatar | string | The URL to the avatar of the user who left the note |
data.note | string | The note message that was left on the report |
data.created_at | timestamp | Timestamp of when the report note was created |
data.updated_at | timestamp | Timestamp of when the report note was last updated |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an error retrieving the user report notes |
# (Admin) Update Message Report
Used to update the status of a message moderation report.
PUT /reports/messages
# Parameters - Payload
Name | Type | Description |
---|---|---|
id | string | The id of the message report |
status | string | The updated note status Allowed values: "Pending","Reviewed","Ignored","Bad Report" |
reviewer_user_id | string | The id of the user updating the message report |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
id | string | The unique id of the message report which was created |
status | string | The status of the report |
reporter_user_id | string | The unique id of the user initiating the report |
reporter_reason | string | The reporter's reason for reporting the offending message |
reviewer_user_id | string | The unique id of the user reviewing the report |
offender_message_id | string | The unique id of the message being reported |
created_at | timestamp | Timestamp of when the message report was created |
updated_at | timestamp | Timestamp of when the message report was updated |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an error updating the message report |
# (Admin) Update Message Report Note
Used to update an existing note on message moderation reports.
PUT /reports/messagenotes
# Parameters - Payload
Name | Type | Description |
---|---|---|
id | string | The id of the message report note |
note | string | The updated note |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
id | string | The unique id for the message report note |
report_id | string | The id of the message report to leave the note on |
user_id | string | The id of the user leaving the message report note |
username | string | The username of the user who left the message report note |
avatar | string | The url to the avatar of the user who left the message report note |
note | string | The note being left on the message report |
created_at | timestamp | Timestamp of when the message report note was created |
updated_at | timestamp | Timestamp of when the message report note was last updated |
# Error response
# Error response - Error 400
Name | Type | Description |
---|---|---|
BadRequest | Note must not be empty |
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an error updating the message report note |
# (Admin) Update Post Report
Used to update the status of a post moderation report.
PUT /reports/posts
# Parameters - Payload
Name | Type | Description |
---|---|---|
id | string | The id of the post report note |
status | string | The updated note status Allowed values: "Pending","Reviewed","Ignored","Bad Report" |
reviewer_user_id | string | The id of the user updating the post report |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
id | string | The unique id of the post report which was updated |
status | string | The status of the report |
reporter_user_id | string | The unique id of the user initiating the report |
reporter_reason | string | The reporter's reason for reporting the offending post |
reviewer_user_id | string | The unique id of the user reviewing the report |
offender_post_id | string | The unique id of the post being reported |
created_at | timestamp | Timestamp of when the post report was created |
updated_at | timestamp | Timestamp of when the post report was updated |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an error updating the post report |
# (Admin) Update Post Report Note
Used to update an existing note on post moderation reports.
PUT /reports/usernotes
# Parameters - Payload
Name | Type | Description |
---|---|---|
id | string | The id of the post report note |
note | string | The updated note |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
id | string | The unique id for the post report note |
report_id | string | The id of the post report to leave the note on |
user_id | string | The id of the user leaving the post report note |
username | string | The username of the user who left the post report note |
avatar | string | The url to the avatar of the user who left the post report note |
note | string | The note being left on the post report |
created_at | timestamp | Timestamp of when the post report note was created |
updated_at | timestamp | Timestamp of when the post report note was last updated |
# Error response
# Error response - Error 400
Name | Type | Description |
---|---|---|
BadRequest | Note must not be empty |
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an error updating the post report note |
# (Admin) Update User Report
Used to update the status of a user moderation report.
PUT /reports/users
# Parameters - Payload
Name | Type | Description |
---|---|---|
id | string | The id of the user report |
status | string | The updated note status Allowed values: "Pending","Reviewed","Ignored","Bad Report" |
reviewer_user_id | string | The id of the user updating the user report |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
id | string | The unique id of the user report which was created |
status | string | The status of the report |
reporter_user_id | string | The unique id of the user initiating the report |
reporter_reason | string | The reporter's reason for reporting the offending user |
reviewer_user_id | string | The unique id of the user reviewing the report |
offender_user_id | string | The unique id of the user being reported |
created_at | timestamp | Timestamp of when the user report was created |
updated_at | timestamp | Timestamp of when the user report was updated |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an error updating the user report |
# (Admin) Update User Report Note
Used to update an existing note on user moderation reports.
PUT /reports/usernotes
# Parameters - Payload
Name | Type | Description |
---|---|---|
id | string | The id of the user report note |
note | string | The updated note |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
id | string | The unique id for the user report note |
report_id | string | The id of the user report to leave the note on |
user_id | string | The id of the user leaving the user report note |
username | string | The username of the user who left the user report note |
avatar | string | The url to the avatar of the user who left the user report note |
note | string | The note being left on the user report |
created_at | timestamp | Timestamp of when the user report note was created |
updated_at | timestamp | Timestamp of when the user report note was last updated |
# Error response
# Error response - Error 400
Name | Type | Description |
---|---|---|
BadRequest | Note must not be empty |
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an error updating the user report note |
# Create Message Report
Used to report a private message for moderators/administrators to review.
POST /reports/messages
# Parameters - Payload
Name | Type | Description |
---|---|---|
reporter_reason | string | The reporter's reason for reporting the offending private message |
offender_message_id | string | The unique id of the private message being reported |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
id | string | The unique id of the private message report which was created |
status | string | The status of the report |
reporter_user_id | string | The unique id of the user initiating the report |
reporter_reason | string | The reporter's reason for reporting the offending message |
reviewer_user_id | string | The unique id of the user reviewing the report |
offender_message_id | string | The unique id of the private message being reported |
created_at | timestamp | Timestamp of when the private message report was created |
updated_at | timestamp | Timestamp of when the private message report was updated |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue reporting the message report |
# Create Post Report
Used to report a post for moderators/administrators to review.
POST /reports/users
# Parameters - Payload
Name | Type | Description |
---|---|---|
reporter_reason | string | The reporter's reason for reporting the offending post |
offender_post_id | string | The unique id of the post being reported |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
id | string | The unique id of the post report which was created |
status | string | The status of the report |
reporter_user_id | string | The unique id of the user initiating the report |
reporter_reason | string | The reporter's reason for reporting the offending post |
reviewer_user_id | string | The unique id of the user reviewing the report |
offender_post_id | string | The unique id of the post being reported |
created_at | timestamp | Timestamp of when the post report was created |
updated_at | timestamp | Timestamp of when the post report was updated |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue reporting the post |
# Create User Report
Used to report a user for moderators/administrators to review.
POST /reports/users
# Parameters - Payload
Name | Type | Description |
---|---|---|
reporter_reason | string | The reporter's reason for reporting the offending user |
offender_user_id | string | The unique id of the user being reported |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
id | string | The unique id of the user report which was created |
status | string | The status of the report |
reporter_user_id | string | The unique id of the user initiating the report |
reporter_reason | string | The reporter's reason for reporting the offending user |
reviewer_user_id | string | The unique id of the user reviewing the report |
offender_user_id | string | The unique id of the user being reported |
created_at | timestamp | Timestamp of when the user report was created |
updated_at | timestamp | Timestamp of when the user report was updated |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue reporting the user |
# Roles
# Add Roles
Add a new role.
POST /admin/roles/add
# Parameters - Payload
Name | Type | Description |
---|---|---|
id | string | optional The id of the role to add, for hardcoded ids. |
name | string | The name of the role to add. |
description | string | The description of the role to add. |
priority | string | The priorty of the role to add. |
highlight_color | string | optional The highlight color of the role to add. |
permissions | Object | The permission set for this role. |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
id | string | The unique id of the added role. |
# Error response
# Error response - Error 400
Name | Type | Description |
---|---|---|
BadRequest | There name of the role must be unique. |
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue adding the role. |
# All Roles
Retrieve all role.
GET /admin/roles/all
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
roles | object[] | An array of all the roles. |
roles.id | string | The unique id of the role |
roles.name | string | The name of the role |
roles.description | string | The description of the role |
roles.lookup | string | A unique identifier for the role |
roles.priority | number | The priority of the role, with 0 being the highest priority Size range: 0..n |
roles.highlight_color | string | An html hex value color used to highlight users based on their role |
permissions | object | An object containing all this roles permissions |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue retrieving the roles. |
# Page Users with Role
Page all users with a particular role.
GET /admin/roles/:id/users
# Parameters - Payload
Name | Type | Description |
---|---|---|
id | string | The id of the role to find users for |
# Parameters - Query
Name | Type | Description |
---|---|---|
page | number | optional The page of users to retrieve Default value: 1 |
limit | number | optional The number of users to retrieve per page Default value: 15 |
search | string | optional Allows user to filter the search results |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
users | object[] | An array holding users with this role |
users.id | string | The id of the user |
users.username | string | The The username of the user |
users.email | string | The email of the user |
users.roles | string[] | An array containing the lookups values of all the roles this user has |
users.priority | number | The user's highest role priority |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue retrieving the user data. |
# Remove Roles
Remove a role.
DELETE /admin/roles/remove/:id
# Parameters - Parameter
Name | Type | Description |
---|---|---|
id | string | The id of the role to remove. |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
id | string | The unique id of the removed role. |
name | string | The name of the removed role. |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue removing the role. |
# Reprioritize Roles
Reprioritizes all roles.
UPDATE /admin/roles/reprioritize
# Parameters - Payload
Name | Type | Description |
---|---|---|
roles | object[] | Array containing role objects |
roles.id | string | The id of the role |
roles.priority | string | The updated priorty of the role |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
STATUS | object | 200 OK |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue reprioritizing the roles. |
# Update Roles
Add a new role.
PUT /admin/roles/update
# Parameters - Payload
Name | Type | Description |
---|---|---|
id | string | The id of the role to update. |
name | string | The updated name of the role. |
description | string | The updated description of the role. |
priority | string | The updated priorty of the role. |
highlight_color | string | optional The updated highlight color. |
lookup | string | The lookup string of the role. |
permissions | Object | The updated permission set. |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
id | string | The unique id of the updated role. |
# Error response
# Error response - Error 400
Name | Type | Description |
---|---|---|
BadRequest | There name of the role must be unique. |
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue adding the role. |
# Settings
# (Admin) Add IP Rule to Blacklist
Used to add an IP Rule to the blacklist
POST /admin/settings/blacklist
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
blacklist | object[] | Array containing blacklisted IPs and info |
blacklist.id | string | Unique id for the Blacklisted IP rule. |
blacklist.ip_data | string | A single ip, ip range or wildcard ip. |
blacklist.note | string | A note/name for the Blacklisted IP rule. |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue adding to the blacklist. |
# (Admin) Delete existing IP Rule from Blacklist
Used to update an existing IP Rule in the blacklist
DELETE /admin/settings/blacklist/:id
# Parameters - Parameter
Name | Type | Description |
---|---|---|
id | string | The id of the blacklist rule to delete |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
blacklist | object[] | Array containing blacklisted IPs and info |
blacklist.id | string | Unique id for the Blacklisted IP rule. |
blacklist.ip_data | string | A single ip, ip range or wildcard ip. |
blacklist.note | string | A note/name for the Blacklisted IP rule. |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue deleting from the blacklist. |
# (Admin) Find
Used to fetch all web app settings. Allows admins to grab settings defined in config.js
GET /api/configurations
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
verify_registration | boolean | Boolean indicating if users need verify their accounts via email |
login_required | boolean | Boolean indicating if users need to login to view posts |
invite_only | boolean | Boolean indicating if forum is invite only |
saas_mode | boolean | Boolean indicating if forum is in saas mode |
revision | boolean | The current git revision of the running instance of Epochtalk |
ga_key | string | Google analytics key for reCaptcha |
website | object | Object containing website configs |
website.title | string | The title of the website |
website.description | string | Website description text |
website.keywords | string | Website keywords |
website.logo | string | The logo for the website |
website.favicon | string | The favicon for the website |
emailer | object | Object containing configurations for the email server |
emailer.sender | string | Email address that emails will be sent from |
emailer.options.host | string | The SMTP host |
emailer.options.port | number | The SMTP port |
emailer.options.auth.user | string | The SMTP username |
emailer.options.auth.pass | string | The SMTP password |
emailer.options.secure | boolean | Boolean indicating whether or not to use SSL |
images | object | Object containing image server configurations |
images.storage | string | Where to store images Allowed values: "local","s3" |
images.max_size | number | Max image file size |
images.expiration | number | Expiration time for unused images |
images.interval | number | Interval for checking for unused images |
images.local | object | Object containing local image server configurations |
images.local.dir | string | Path to directory to store uploaded images |
images.local.path | string | Path to relative to host of where to serve images |
images.s3 | object | Object containing s3 image server configurations |
images.s3.root | string | The s3 root url |
images.s3.dir | string | The s3 directory |
images.s3.bucket | string | The s3 bucket |
images.s3.region | string | The s3 region |
images.s3.access_key | string | The s3 access key |
images.s3.secret_key | string | The s3 secret key |
rate_limiting | object | Object containing rate limit configurations |
rate_limiting.namespace | string | Redis namespace prefix for rate limit configurations |
rate_limiting.get | object | Object containing GET rate limit configurations |
rate_limiting.get.interval | number | The amount of time to which you are limiting the number of request to (e.g. MAX_IN_INTERVAL requests every INTERVAL) Size range: -1...n |
rate_limiting.get.max_in_interval | number | How many requests you can make within the interval (e.g. MAX_IN_INTERVAL requests every INTERVAL) Size range: 1...n |
rate_limiting.get.min_difference | number | How long between each request (e.g. how much time between each MAX_IN_INTERVAL) |
rate_limiting.post.interval | number | The amount of time to which you are limiting the number of request to (e.g. MAX_IN_INTERVAL requests every INTERVAL) Size range: -1...n |
rate_limiting.post.max_in_interval | number | How many requests you can make within the interval (e.g. MAX_IN_INTERVAL requests every INTERVAL) Size range: 1...n |
rate_limiting.post.min_difference | number | How long between each request (e.g. how much time between each MAX_IN_INTERVAL) |
rate_limiting.put.interval | number | The amount of time to which you are limiting the number of request to (e.g. MAX_IN_INTERVAL requests every INTERVAL) Size range: -1...n |
rate_limiting.put.max_in_interval | number | How many requests you can make within the interval (e.g. MAX_IN_INTERVAL requests every INTERVAL) Size range: 1...n |
rate_limiting.put.min_difference | number | How long between each request (e.g. how much time between each MAX_IN_INTERVAL) |
rate_limiting.delete.interval | number | The amount of time to which you are limiting the number of request to (e.g. MAX_IN_INTERVAL requests every INTERVAL) Size range: -1...n |
rate_limiting.delete.max_in_interval | number | How many requests you can make within the interval (e.g. MAX_IN_INTERVAL requests every INTERVAL) Size range: 1...n |
rate_limiting.delete.min_difference | number | How long between each request (e.g. how much time between each MAX_IN_INTERVAL) |
# (Admin) Get Blacklist
Used to fetch the IP blacklist
GET /admin/settings/blacklist
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
blacklist | object[] | Array containing blacklisted IPs and info |
blacklist.id | string | Unique id for the Blacklisted IP rule. |
blacklist.ip_data | string | A single ip, ip range or wildcard ip. |
blacklist.note | string | A note/name for the Blacklisted IP rule. |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue retrieving the blacklist. |
# (Admin) Get Theme
Used to fetch theme vars in _custom-variables.scss
GET /theme
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
base-line-height | string | Base line height for entire forum |
base-background-color | string | The background color for the entire forum |
color-primary | string | The primary color for the forum, used for buttons, etc... |
base-font-sans | string | Font family for the entire forum |
base-font-color | string | Base font color for entire forum |
base-font-size | string | Base font size for entire forum |
secondary-font-color | string | Secondary font color, used for description text |
input-font-color | string | Font color for input fields |
input-background-color | string | Background color for all input fields |
border-color | string | Color for all borders used in the forum |
header-bg-color | string | Color for the forum header background |
header-font-color | string | Font color for the forum header |
sub-header-color | string | Color for sub headers and footers |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue retrieving the theme. |
# (Admin) Preview Theme
Used preview theme vars are compiled from _preview-variables.scss
PUT /theme/preview
# Parameters - Payload
Name | Type | Description |
---|---|---|
base-line-height | string | Base line height for entire forum |
base-background-color | string | The background color for the entire forum |
color-primary | string | The primary color for the forum, used for buttons, etc... |
base-font-sans | string | Font family for the entire forum |
base-font-color | string | Base font color for entire forum |
base-font-size | string | Base font size for entire forum |
secondary-font-color | string | Secondary font color, used for description text |
input-font-color | string | Font color for input fields |
input-background-color | string | Background color for all input fields |
border-color | string | Color for all borders used in the forum |
header-bg-color | string | Color for the forum header background |
header-font-color | string | Font color for the forum header |
sub-header-color | string | Color for sub headers and footers |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
base-line-height | string | Base line height for entire forum |
base-background-color | string | The background color for the entire forum |
color-primary | string | The primary color for the forum, used for buttons, etc... |
base-font-sans | string | Font family for the entire forum |
base-font-color | string | Base font color for entire forum |
base-font-size | string | Base font size for entire forum |
secondary-font-color | string | Secondary font color, used for description text |
input-font-color | string | Font color for input fields |
input-background-color | string | Background color for all input fields |
border-color | string | Color for all borders used in the forum |
header-bg-color | string | Color for the forum header background |
header-font-color | string | Font color for the forum header |
sub-header-color | string | Color for sub headers and footers |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue previewing the theme. |
# (Admin) Reset Theme
Used reset custom variables to fall back to _default-variables.scss
POST /theme
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
base-line-height | string | Base line height for entire forum |
base-background-color | string | The background color for the entire forum |
color-primary | string | The primary color for the forum, used for buttons, etc... |
base-font-sans | string | Font family for the entire forum |
base-font-color | string | Base font color for entire forum |
base-font-size | string | Base font size for entire forum |
secondary-font-color | string | Secondary font color, used for description text |
input-font-color | string | Font color for input fields |
input-background-color | string | Background color for all input fields |
border-color | string | Color for all borders used in the forum |
header-bg-color | string | Color for the forum header background |
header-font-color | string | Font color for the forum header |
sub-header-color | string | Color for sub headers and footers |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue resetting the theme. |
# (Admin) Set Theme
Used to set theme vars in _custom-variables.scss
PUT /theme
# Parameters - Payload
Name | Type | Description |
---|---|---|
base-line-height | string | Base line height for entire forum |
base-background-color | string | The background color for the entire forum |
color-primary | string | The primary color for the forum, used for buttons, etc... |
base-font-sans | string | Font family for the entire forum |
base-font-color | string | Base font color for entire forum |
base-font-size | string | Base font size for entire forum |
secondary-font-color | string | Secondary font color, used for description text |
input-font-color | string | Font color for input fields |
input-background-color | string | Background color for all input fields |
border-color | string | Color for all borders used in the forum |
header-bg-color | string | Color for the forum header background |
header-font-color | string | Font color for the forum header |
sub-header-color | string | Color for sub headers and footers |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
base-line-height | string | Base line height for entire forum |
base-background-color | string | The background color for the entire forum |
color-primary | string | The primary color for the forum, used for buttons, etc... |
base-font-sans | string | Font family for the entire forum |
base-font-color | string | Base font color for entire forum |
base-font-size | string | Base font size for entire forum |
secondary-font-color | string | Secondary font color, used for description text |
input-font-color | string | Font color for input fields |
input-background-color | string | Background color for all input fields |
border-color | string | Color for all borders used in the forum |
header-bg-color | string | Color for the forum header background |
header-font-color | string | Font color for the forum header |
sub-header-color | string | Color for sub headers and footers |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue setting the theme. |
# (Admin) Update existing IP Rule in Blacklist
Used to update an existing IP Rule in the blacklist
PUT /admin/settings/blacklist
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
blacklist | object[] | Array containing blacklisted IPs and info |
blacklist.id | string | Unique id for the Blacklisted IP rule. |
blacklist.ip_data | string | A single ip, ip range or wildcard ip. |
blacklist.note | string | A note/name for the Blacklisted IP rule. |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue updating the blacklist. |
# Update
Used to update web app settings. Used in the admin panel.
POST /api/configurations(Admin)
# Parameters - Payload
Name | Type | Description |
---|---|---|
verify_registration | boolean | optional Boolean indicating if users need verify their accounts via email |
login_required | boolean | optional Boolean indicating if users need to login to view posts |
invite_only | boolean | optional Boolean indicating if forum is invite only |
ga_key | string | optional Google analytics key for reCaptcha |
website | object | optional Object containing website configs |
website.title | string | optional The title of the website |
website.description | string | optional Website description text |
website.keywords | string | optional Website keywords |
website.logo | string | optional The logo for the website |
website.favicon | string | optional The favicon for the website |
emailer | object | optional Object containing configurations for the email server |
emailer.sender | string | optional Email address that emails will be sent from |
emailer.options.host | string | optional The SMTP host |
emailer.options.port | number | optional The SMTP port |
emailer.options.auth.user | string | optional The SMTP username |
emailer.options.auth.pass | string | optional The SMTP password |
emailer.options.secure | boolean | optional Boolean indicating whether or not to use SSL |
images | object | optional Object containing image server configurations |
images.storage | string | optional Where to store images Allowed values: "local","s3" |
images.max_size | number | optional Max image file size |
images.expiration | number | optional Expiration time for unused images |
images.interval | number | optional Interval for checking for unused images |
images.local | object | optional Object containing local image server configurations |
images.local.dir | string | optional Path to directory to store uploaded images |
images.local.path | string | optional Path to relative to host of where to serve images |
images.s3 | object | optional Object containing s3 image server configurations |
images.s3.root | string | optional The s3 root url |
images.s3.dir | string | optional The s3 directory |
images.s3.bucket | string | optional The s3 bucket |
images.s3.region | string | optional The s3 region |
images.s3.access_key | string | optional The s3 access key |
images.s3.secret_key | string | optional The s3 secret key |
rate_limiting | object | optional Object containing rate limit configurations |
rate_limiting.get | object | optional Object containing GET rate limit configurations |
rate_limiting.get.interval | number | optional The amount of time to which you are limiting the number of request to (e.g. MAX_IN_INTERVAL requests every INTERVAL) Size range: -1...n |
rate_limiting.get.max_in_interval | number | optional How many requests you can make within the interval (e.g. MAX_IN_INTERVAL requests every INTERVAL) Size range: 1...n |
rate_limiting.get.min_difference | number | optional How long between each request (e.g. how much time between each MAX_IN_INTERVAL) |
rate_limiting.post.interval | number | optional The amount of time to which you are limiting the number of request to (e.g. MAX_IN_INTERVAL requests every INTERVAL) Size range: -1...n |
rate_limiting.post.max_in_interval | number | optional How many requests you can make within the interval (e.g. MAX_IN_INTERVAL requests every INTERVAL) Size range: 1...n |
rate_limiting.post.min_difference | number | optional How long between each request (e.g. how much time between each MAX_IN_INTERVAL) |
rate_limiting.put.interval | number | optional The amount of time to which you are limiting the number of request to (e.g. MAX_IN_INTERVAL requests every INTERVAL) Size range: -1...n |
rate_limiting.put.max_in_interval | number | optional How many requests you can make within the interval (e.g. MAX_IN_INTERVAL requests every INTERVAL) Size range: 1...n |
rate_limiting.put.min_difference | number | optional How long between each request (e.g. how much time between each MAX_IN_INTERVAL) |
rate_limiting.delete.interval | number | optional The amount of time to which you are limiting the number of request to (e.g. MAX_IN_INTERVAL requests every INTERVAL) Size range: -1...n |
rate_limiting.delete.max_in_interval | number | optional How many requests you can make within the interval (e.g. MAX_IN_INTERVAL requests every INTERVAL) Size range: 1...n |
rate_limiting.delete.min_difference | number | optional How long between each request (e.g. how much time between each MAX_IN_INTERVAL) |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
config | object | Same object that was passed in is returned upon success |
# ThreadNotifications
# Get Thread Notification Settings
Used to retreive the user's thread notification settings
GET /threadnotifications
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
notify_replied_threads | boolean | Boolean indicating if the user is receiving thread notifications |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an getting thread notification settings |
# Toggle Thread Notifications
Used to toggle thread notifications
PUT /threadnotifications
# Parameters - Payload
Name | Type | Description |
---|---|---|
enabled | boolean | optional Boolean indicating if thread notifications are enabled or not Default value: true |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
enabled | boolean | Boolean indicating if the thread notifications were enabled or not |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an enabling thread notifications |
# Threads
# Convert Thread Slug to Id
Used to retrieve a threads id via is slug.
GET /threads/:slug/id
# Parameters - Parameter
Name | Type | Description |
---|---|---|
slug | string | The slug of the thread |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
id | string | The unqiue id of the thread |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue find a thread with the provided slug |
# Create
Used to create a new thread.
POST /threads
# Parameters - Payload
Name | Type | Description |
---|---|---|
title | string | The title of the thread |
body | string | The thread's body as it was entered in the editor by the user |
board_id | string | The unique id of the board this thread is being created within |
locked | boolean | optional Boolean indicating whether the thread is locked or unlocked Default value: false |
sticky | boolean | optional Boolean indicating whether the thread is stickied or not Default value: false |
moderated | boolean | optional Boolean indicating whether the thread is self-moderated or not Default value: false |
poll | object | Object containing poll data |
poll.max_answers | number | optional The max answers allowed for poll Default value: 1 |
poll.expiration | timestamp | optional Timestamp of when the poll expires |
poll.change_vote | boolean | optional Boolean indicating if you can change your vote Default value: false |
poll.display_mode | string | Used for the UI display mode of the poll Allowed values: "always","voted","expired" |
questions | string[] | An array of poll questions |
answers | string[] | An array of poll answers |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
id | string | The unqiue id of the post the thread is wrapping |
thread_id | string | The unqiue id of the thread |
user_id | string | The unique id of the user who created the thread |
title | string | The title of the thread |
slug | string | The slug of the thread |
deleted | boolean | Boolean indicating if the thread has been deleted |
locked | boolean | Boolean indicating if the thread has been locked |
body_html | string | The thread's body with any markup tags converted and parsed into html elements |
body | string | The thread's body as it was entered in the editor by the user |
created_at | timestamp | Timestamp of when the thread was created |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue creating the thread |
# Create Poll
Used to create a poll.
POST /threads/:id/polls
# Parameters - Param
Name | Type | Description |
---|---|---|
thread_id | string | The unique id of the thread the poll is in. |
question | string | The question asked in the poll. |
answers | string[] | The list of the answers to the question of this poll. |
# Parameters - Payload
Name | Type | Description |
---|---|---|
max_answers | number | optional The max number of answers per vote. Default value: 1 |
expiration | date | optional The expiration date of the poll. |
change_vote | boolean | optional Boolean indicating whether users can change their vote. |
display_mode | string | String indicating how the results are shown to users. Allowed values: "always","voted","expired" |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
id | string | The unique id of the poll |
question | string | The question asked in the poll |
answers | object[] | The list of the answers to the question of this poll |
answers.answer | string | The answer to the question of this poll |
max_answers | number | The max number of answer per vote |
change_vote | boolean | Boolean indicating whether users can change their vote |
expiration | date | The expiration date of the poll |
display_mode | string | String indicating how the results are shown to users |
# Error response
# Error response - Error 401
Name | Type | Description |
---|---|---|
Unauthorized | User doesn't have permissions to create the poll |
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue creating the thread |
# Edit Poll
Used to edit a poll.
PUT /threads/:thread_id/polls/:poll_id
# Parameters - Param
Name | Type | Description |
---|---|---|
thread_id | string | The unique id of the thread the poll is in. |
poll_id | string | The unique id of the poll to vote in. |
# Parameters - Payload
Name | Type | Description |
---|---|---|
max_answers | number | The max number of answers per vote. |
expiration | date | The expiration date of the poll. |
change_vote | boolean | Boolean indicating whether users can change their vote. |
display_mode | string | String indicating how the results are shown to users. |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
id | string | The unique id of the poll |
max_answers | number | The max number of answer per vote |
change_vote | boolean | Boolean indicating whether users can change their vote |
expiration | date | The expiration date of the poll |
display_mode | string | String indicating how the results are shown to users |
# Error response
# Error response - Error 401
Name | Type | Description |
---|---|---|
Unauthorized | User doesn't have permissions to edit the poll |
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue editing the thread |
# Lock
Used to lock a thread and prevent any additional posts.
POST /threads/:id/lock
# Parameters - Parameter
Name | Type | Description |
---|---|---|
id | string | The unique id of the thread to lock |
# Parameters - Payload
Name | Type | Description |
---|---|---|
status | boolean | optional Boolean indicating lock status, true if locked false if unlocked. Default value: true |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
id | string | The unique id of the poll |
locked | boolean | Boolean indicating if the poll is locked |
# Error response
# Error response - Error 401
Name | Type | Description |
---|---|---|
Unauthorized | User doesn't have permissions to lock the thread |
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue locking the thread |
# Lock/Unlock Poll
Used to lock or unlock a poll.
POST /threads/:thread_id/polls/:poll_id/lock
# Parameters - Parameter
Name | Type | Description |
---|---|---|
thread_id | string | The unique id of the thread the poll is in. |
poll_id | string | The unique id of the poll to lock. |
# Parameters - Payload
Name | Type | Description |
---|---|---|
locked | boolean | Boolean indicating to lock or unlock the poll |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
id | string | The id of the poll |
locked | boolean | The value the poll's lock |
# Error response
# Error response - Error 401
Name | Type | Description |
---|---|---|
Unauthorized | User doesn't have permissions to lock the poll |
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue locking/unlocking the poll |
# Mark Thread Viewed
Used to mark a thread as viewed
POST /threads/:id
# Parameters - Parameter
Name | Type | Description |
---|---|---|
id | string | The unique id of the thread to mark as viewed |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
success | object | 200 OK |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue marking the thread viewed |
# Move
Used to move a thread to a different board.
POST /threads/:id/move
# Parameters - Parameter
Name | Type | Description |
---|---|---|
id | string | The unique id of the thread to move |
# Parameters - Payload
Name | Type | Description |
---|---|---|
new_board_id | string | The unique id of the board to move this thread into. |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
id | string | The id of the thread which was moved |
board_id | string | The id of the board which the thread was moved to |
# Error response
# Error response - Error 401
Name | Type | Description |
---|---|---|
Unauthorized | User doesn't have permissions to move the thread |
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue moving the thread |
# Page By Board
Used to page through a board's threads.
GET /threads
# Parameters - Query
Name | Type | Description |
---|---|---|
board_id | string | The board whose threads to page through |
page | number | optional The page of threads to bring back Default value: 1 |
limit | number | optional The number of threads to bring back per page Default value: 25 |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
page | number | The page of threads to bring back |
limit | number | The number or threads per page to bring back |
banned_from_board | boolean | Boolean indicating if the authed user has been banned from the current thread's board |
write_access | boolean | Boolean indicating if the authed user has write access to this thread |
board | object | Object containing information about the board the thread is in |
board.id | string | The id of the board |
board.name | string | The name of the board |
board.parent_id | string | The id of the parent board if applicable |
board.watched | boolean | Boolean indicating if the authed user is watching this board |
board.viewable_by | number | The minimum priority to be able to view the board, null for no restriction |
board.postable_by | number | The minimum priority to be able to post to the board, null for no restriction |
board.description | string | The board description text |
board.thread_count | number | The number of threads within the board |
board.post_count | number | The number of posts within the board |
board.children | object[] | An array containing child boards if applicable |
board.moderators | object[] | Array containing data about the moderators of the board |
board.moderators.id | string | The id of the moderator |
board.moderators.username | string | The username of the moderator |
board.created_at | timestamp | The created at timestamp of the board |
board.updated_at | timestamp | The updated at timestamp of the board |
board.imported_at | timestamp | The imported at timestamp of the board |
sticky | object[] | An array of sticky threads within the board |
sticky.id | string | The id of the stickied thread |
sticky.locked | boolean | Boolean indicating if the thread is locked |
sticky.sticky | boolean | Boolean indicating if the thread is stickied |
sticky.moderated | boolean | Boolean indicating if the thread is self-moderated |
sticky.poll | boolean | Boolean indicating if there is a poll in this thread |
sticky.created_at | timestamp | Timestamp indicating when the thread was created |
sticky.updated_at | timestamp | Timestamp indicating when the thread was last updated |
sticky.view_count | number | The number of views this thread has received |
sticky.post_count | number | The number of posts in this thread |
sticky.title | string | The title of the thread |
sticky.last_post_id | string | The id of the last post in the thread |
sticky.last_post_position | number | The position of the last post in the thread |
sticky.last_post_created_at | timestamp | Timestamp of when the last post was created |
sticky.last_post_username | string | The username of the author of the last post |
sticky.last_post_avatar | string | The avatar of the author of the last post |
sticky.user | object | Object containg user data about the last post author |
sticky.user.id | string | The id of the last post's author |
sticky.user.username | string | The username of the last post's author |
sticky.user.deleted | boolean | Boolean indicating if the last post's author has had their account deleted |
sticky.has_new_posts | boolean | Boolean indicating if the thread has new posts since it was last viewed |
sticky.lastest_unread_position | number | The position of the last unread post |
sticky.lastest_unread_post_id | number | The id of the last unread post |
normal | object[] | An array of threads within the board |
normal.id | string | The id of the thread |
normal.locked | boolean | Boolean indicating if the thread is locked |
normal.normal | boolean | Boolean indicating if the thread is stickied |
normal.moderated | boolean | Boolean indicating if the thread is self-moderated |
normal.poll | boolean | Boolean indicating if there is a poll in this thread |
normal.created_at | timestamp | Timestamp indicating when the thread was created |
normal.updated_at | timestamp | Timestamp indicating when the thread was last updated |
normal.view_count | number | The number of views this thread has received |
normal.post_count | number | The number of posts in this thread |
normal.title | string | The title of the thread |
normal.last_post_id | string | The id of the last post in the thread |
normal.last_post_position | number | The position of the last post in the thread |
normal.last_post_created_at | timestamp | Timestamp of when the last post was created |
normal.last_post_username | string | The username of the author of the last post |
normal.last_post_avatar | string | The avatar of the author of the last post |
normal.user | object | Object containg user data about the last post author |
normal.user.id | string | The id of the thread's author |
normal.user.username | string | The username of the thread's author |
normal.user.deleted | boolean | Boolean indicating if the thread's author has had their account deleted |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue retrieving the threads |
# Page Recently Posted In Threads
Used to page through recent threads posted in by the user.
GET /threads/posted
# Parameters - Query
Name | Type | Description |
---|---|---|
page | number | optional The page of threads to bring back Default value: 1 |
limit | number | optional The number of threads to bring back per page Default value: 25 |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
page | number | The current page of threads. |
limit | number | The number of threads returned per page. |
count | number | The total number of threads for this user. |
threads | object[] | An array containing recently posted in threads. |
threads.id | string | The id of the thread |
threads.board_id | string | The id of the board the thread is in |
threads.board_name | string | The name of the board the thread is in |
threads.locked | boolean | Boolean indicating if the thread is locked |
threads.threads | boolean | Boolean indicating if the thread is stickied |
threads.moderated | boolean | Boolean indicating if the thread is self-moderated |
threads.poll | boolean | Boolean indicating if there is a poll in this thread |
threads.created_at | timestamp | Timestamp indicating when the thread was created |
threads.updated_at | timestamp | Timestamp indicating when the thread was last updated |
threads.view_count | number | The number of views this thread has received |
threads.post_count | number | The number of posts in this thread |
threads.title | string | The title of the thread |
threads.last_post_id | string | The id of the last post in the thread |
threads.last_post_position | number | The position of the last post in the thread |
threads.last_post_created_at | timestamp | Timestamp of when the last post was created |
threads.last_post_username | string | The username of the author of the last post |
threads.last_post_avatar | string | The avatar of the author of the last post |
threads.user | object | Object containg user data about the thread author |
threads.user.id | string | The id of the thread's author |
threads.user.username | string | The username of the thread's author |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue retrieving the threads |
# Purge
Used to purge a thread.
DELETE /threads/:id/purge
# Parameters - Parameter
Name | Type | Description |
---|---|---|
id | string | The unique id of the thread to purge |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
success | object | 200 OK |
# Error response
# Error response - Error 401
Name | Type | Description |
---|---|---|
Unauthorized | User doesn't have permissions to purge the thread |
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue purging the thread |
# Remove Vote
Used to remove a vote in a poll.
DELETE /threads/:thread_id/polls/:poll_id/vote
# Parameters - Parameter
Name | Type | Description |
---|---|---|
id | string | The unique id of the thread the poll is in. |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
id | string | The unique id of the poll |
question | string | The question asked in the poll |
answers | object[] | The list of the answers to the question of this poll |
answers.answer | string | The answer to the question of this poll |
answers.id | string | The id of the answer |
answers.votes | number | The number of votes for this answer |
max_answers | number | The max number of answer per vote |
has_voted | boolean | Boolean indicating whether the user has voted |
change_vote | boolean | Boolean indicating whether users can change their vote |
expiration | date | The expiration date of the poll |
display_mode | string | String indicating how the results are shown to users |
# Error response
# Error response - Error 401
Name | Type | Description |
---|---|---|
Unauthorized | User doesn't have permissions to vote in the poll |
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue removing a vote in the poll |
# Sticky
Used to sticky a thread. This will cause the thread to show up at the top of the board it's posted within.
POST /threads/:id/sticky
# Parameters - Parameter
Name | Type | Description |
---|---|---|
id | string | The unique id of the thread to sticky |
# Parameters - Payload
Name | Type | Description |
---|---|---|
status | boolean | optional Boolean indicating sticky status, true if stickied false if not. Default value: true |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
id | string | The id of the thread which was stickied |
sticky | boolean | Boolean indicating if the thread is stickied |
# Error response
# Error response - Error 401
Name | Type | Description |
---|---|---|
Unauthorized | User doesn't have permissions to sticky the thread |
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue stickying the thread |
# Title
Used to update the title of a thread.
POST /threads/:id
# Parameters - Parameter
Name | Type | Description |
---|---|---|
id | string | The unique id of the thread to update |
# Parameters - Payload
Name | Type | Description |
---|---|---|
title | string | The new title for this thread. |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
id | string | The unique id of the thread |
title | string | The title of the thread |
body_html | string | The thread's body with any markup tags converted and parsed into html elements |
body | string | The thread's body as it was entered in the editor by the user |
thread_id | string | The unqiue id of the thread |
updated_at | timestamp | Timestamp of when the thread was updated |
# Error response
# Error response - Error 401
Name | Type | Description |
---|---|---|
Unauthorized | User doesn't have permissions to update the thread title. |
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue updating the thread title. |
# Vote
Used to vote in a poll.
POST /threads/:thread_id/polls/:poll_id/vote
# Parameters - Parameter
Name | Type | Description |
---|---|---|
thread_id | string | The unique id of the thread the poll is in. |
poll_id | string | The unique id of the poll to vote in. |
# Parameters - Payload
Name | Type | Description |
---|---|---|
answer_ids | string[] | The ids of the answers tied to the vote. |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
id | string | The unique id of the poll |
question | string | The question asked in the poll |
answers | object[] | The list of the answers to the question of this poll |
answers.answer | string | The answer to the question of this poll |
answers.id | string | The id of the answer |
answers.votes | number | The number of votes for this answer |
max_answers | number | The max number of answer per vote |
has_voted | boolean | Boolean indicating whether the user has voted |
locked | boolean | Boolean indicating whether the poll is locked |
change_vote | boolean | Boolean indicating whether users can change their vote |
expiration | date | The expiration date of the poll |
display_mode | string | String indicating how the results are shown to users |
# Error response
# Error response - Error 401
Name | Type | Description |
---|---|---|
Unauthorized | User doesn't have permissions to vote in the poll |
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue voting in the poll |
# Trust
# Add Trust Board
Used to make trust scores visible on a specific board
POST /admin/trustboards
# Parameters - Payload
Name | Type | Description |
---|---|---|
board_id | string | The unique id of the board to show trust scores on |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
board_id | string | The unique id of the board trust scores were added to |
# Error response
# Error response - Error 403
Name | Type | Description |
---|---|---|
Forbidden | User does not have permissions to add a trust board |
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue adding board to trust boards |
# Add Trust Feedback
Used to leave trust feedback on a user's account
POST /trust
# Parameters - Payload
Name | Type | Description |
---|---|---|
user_id | string | The unique id of the user feedback is being left for |
risked_btc | number | optional The amount of BTC that was risked in the transaction |
scammer | boolean | Boolean indicating if user is a scammer, true for negative feedback, false for positive, and null for neutral |
reference | string | optional A reference link for the feedback |
comments | string | optional Feedback comments |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
id | string | The unique id of the added feedback. |
user_id | string | The unique id of the user feedback was left on. |
reporter_id | string | The unique id of the user leaving feedback. |
scammer | boolean | Boolean indicating if user is a scammer, true for negative feedback, false for positive, and null for neutral. |
reference | string | A reference link for the feedback. |
comments | string | Feedback comments. |
created_at | string | Timestamp of when feedback was created. |
# Error response
# Error response - Error 403
Name | Type | Description |
---|---|---|
Forbidden | User does not have permissions to add trust feedback |
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue adding feedback |
# Delete Trust Board
Used to remove trust score from a specific board
DELETE /admin/trustboards/:board_id
# Parameters - Params
Name | Type | Description |
---|---|---|
board_id | string | The unique id of the board to hide trust scores on |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
board_id | string | The unique id of the board to hide trust scores on. |
# Error response
# Error response - Error 403
Name | Type | Description |
---|---|---|
Forbidden | User does not have permissions to delete trust boards |
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue deleting trust board |
# Edit Default Trust List
Used to edit the trust list of the default trust account
POST /admin/trustlist
# Parameters - Payload
Name | Type | Description |
---|---|---|
max_depth | number | The max depth of the user's trust web |
list | object[] | List containing trusted/untrusted users |
list.user_id_trusted | string | The unique id of the user being trusted/untrusted |
list.username_trusted | string | The username of the user being trusted/untrusted. |
list.type | number | Trust type, 0 for trusted and 1 for untrusted |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
max_depth | string | The max depth for this user's trust web |
trustList | object[] | An array of trusted users. |
trustList.user_id_trusted | string | The unique id of the user being trusted. |
trustList.username_trusted | string | The username of the user being trusted. |
trustList.type | number | Type 0 which represents trusted users. |
untrustList | object[] | An array of untrusted users. |
untrustList.user_id_trusted | string | The unique id of the user being untrusted. |
untrustList.username_trusted | string | The username of the user being untrusted. |
untrustList.type | number | Type 1 which represents untrusted users. |
# Error response
# Error response - Error 403
Name | Type | Description |
---|---|---|
Forbidden | User doesn't have permissions to edit the default trust list. |
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue editing the default trust list. |
# Edit Trust List
Used to edit the authed user's trust list
POST /trustlist
# Parameters - Payload
Name | Type | Description |
---|---|---|
max_depth | number | The max depth of the user's trust web |
list | object[] | List containing trusted/untrusted users |
list.user_id_trusted | string | The unique id of the user being trusted/untrusted |
list.username_trusted | string | The username of the user being trusted/untrusted. |
list.type | number | Trust type, 0 for trusted and 1 for untrusted |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
max_depth | string | The max depth for this user's trust web |
trustList | object[] | An array of trusted users. |
trustList.user_id_trusted | string | The unique id of the user being trusted. |
trustList.username_trusted | string | The username of the user being trusted. |
trustList.type | number | Type 0 which represents trusted users. |
untrustList | object[] | An array of untrusted users. |
untrustList.user_id_trusted | string | The unique id of the user being untrusted. |
untrustList.username_trusted | string | The username of the user being untrusted. |
untrustList.type | number | Type 1 which represents untrusted users. |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue editing user's trust list. |
# Get Default Trust List
Retrieve trust list for default trust account
GET /admin/trustlist
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
max_depth | string | The max depth for this user's trust web |
trustList | object[] | An array of trusted users. |
trustList.user_id_trusted | string | The unique id of the user being trusted. |
trustList.username_trusted | string | The username of the user being trusted. |
trustList.type | number | Type 0 which represents trusted users. |
untrustList | object[] | An array of untrusted users. |
untrustList.user_id_trusted | string | The unique id of the user being untrusted. |
untrustList.username_trusted | string | The username of the user being untrusted. |
untrustList.type | number | Type 1 which represents untrusted users. |
# Error response
# Error response - Error 403
Name | Type | Description |
---|---|---|
Forbidden | User doesn't have permissions to get the default trust list. |
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue retrieving the default trust list. |
# Get Trust Boards
Retrieve array of board ids to show trust scores on
GET /admin/trustboards
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
trusted_boards | string[] | Array of trusted board ids |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue retrieving array of trusted boards. |
# Get Trust Feedback
Retrieve trust feedback for a user
GET /trustfeedback/:username
# Parameters - Payload
Name | Type | Description |
---|---|---|
username | string | The username to get trust feedback for |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
trusted | object[] | An array of trusted feedback. |
trusted.comments | string | Trust feedback comments. |
trusted.created_at | timestamp | Timestamp of when feedback was left. |
trusted.id | string | Unique id of the trust feedback. |
trusted.reference | string | Refrence link for trust feedback. |
trusted.reporter | object[] | User info for user who left trust feedback. |
trusted.reporter.id | string | User id for user who left trust feedback. |
trusted.reporter.username | string | Username for user who left trust feedback. |
trusted.reporter.stats | object | User trust stats for user who left trust feedback. |
trusted.reporter.stats.neg | number | Negative trust review count. |
trusted.reporter.stats.pos | number | Positive trust review count. |
trusted.reporter.stats.score | number | Calculated trust score. |
trusted.risked_btc | number | Risked btc for feedback transaction. |
trusted.scammer | boolean | Type of feedback positive, negative, neutral. |
untrusted | object[] | An array of untrusted feedback. |
untrusted.comments | string | Trust feedback comments. |
untrusted.created_at | timestamp | Timestamp of when feedback was left. |
untrusted.id | string | Unique id of the trust feedback. |
untrusted.reference | string | Refrence link for trust feedback. |
untrusted.reporter | object[] | User info for user who left trust feedback. |
untrusted.reporter.id | string | User id for user who left trust feedback. |
untrusted.reporter.username | string | Username for user who left trust feedback. |
untrusted.reporter.stats | object | User trust stats for user who left trust feedback. |
untrusted.reporter.stats.neg | number | Negative trust review count. |
untrusted.reporter.stats.pos | number | Positive trust review count. |
untrusted.reporter.stats.score | number | Calculated trust score. |
untrusted.risked_btc | number | Risked btc for feedback transaction. |
untrusted.scammer | boolean | Type of feedback positive, negative, neutral. |
sent | object[] | An array of sent feedback. |
sent.comments | string | Trust feedback comments. |
sent.created_at | timestamp | Timestamp of when feedback was left. |
sent.id | string | Unique id of the trust feedback. |
sent.reference | string | Refrence link for trust feedback. |
sent.risked_btc | number | Risked btc for feedback transaction. |
sent.scammer | boolean | Type of feedback positive, negative, neutral. |
# Error response
# Error response - Error 403
Name | Type | Description |
---|---|---|
Forbidden | User doesn't have permissions to get the default trust list. |
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue retrieving the default trust list. |
# Get Trust List
Retrieve trust list for authed user's account
GET /trustlist
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
max_depth | string | The max depth for this user's trust web |
trustList | object[] | An array of trusted users. |
trustList.user_id_trusted | string | The unique id of the user being trusted. |
trustList.username_trusted | string | The username of the user being trusted. |
trustList.type | number | Type 0 which represents trusted users. |
untrustList | object[] | An array of untrusted users. |
untrustList.user_id_trusted | string | The unique id of the user being untrusted. |
untrustList.username_trusted | string | The username of the user being untrusted. |
untrustList.type | number | Type 1 which represents untrusted users. |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue retrieving the default trust list. |
# Get Trust Score Statistics
Used to retrieve trust score for a particular user.
GET /trust/:username
# Parameters - Params
Name | Type | Description |
---|---|---|
username | string | The username of the user to get trust stats for |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
neg | number | Negative trust review count. |
pos | number | Positive trust review count. |
score | number | Calculated trust score. |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an retrieving trust score stats. |
# Get Trust Tree
Used to retrieve trust tree for the authed user.
GET /trusttree
# Parameters - Query
Name | Type | Description |
---|---|---|
hierarchy | boolean | Boolean indicating whether to grab the hierarchical trust view or the depth view |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
depthObj | object[] | Object containing trusted users at this depth, only returned if hierarchy query parameter is false |
depthObj.depth | string | The depth of the current depth object |
depthObj.users | object[] | Object containing trusted users |
depthObj.users.id | string | The id of the trusted/untrusted user |
depthObj.users.username | string | The username of the trusted/untrusted user |
depthObj.users.level_trust | number | The number of users at this level who trust this user |
trusted | object[] | Object containing trusted users, only returned if hierarchy query parameter is true |
trusted.trusted | object[] | Object containing the current trusted user's trusted users, this is a nested object of trusted users and contains the same information |
trusted.type | number | 0 for trusted 1 for untrusted |
trusted.user_id_trusted | string | The id of the trusted/untrusted user |
trusted.username_trusted | string | The username of the trusted/untrusted user |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an retrieving trust tree. |
# Users
# (Admin) Add Roles
Used to add a role or roles to a user. This allows Administrators to add new (Super) Administrators and (Global) Moderators.
PUT /admin/users/roles/add
# Parameters - Payload
Name | Type | Description |
---|---|---|
usernames | string[] | A unique array of usernames to grant the role to |
role_id | string | The unique id of the role to grant the user |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
users | object[] | An array containing the users with added roles |
users.id | string | The user's unique id |
users.username | string | The user's username |
users.email | string | The user's email address |
users.created_at | timestamp | Timestamp of when the user's account was created |
users.updated_at | timestamp | Timestamp of when the user's account was last updated |
users.roles | object[] | An array containing the users role objects |
users.roles.id | string | The unique id of the role |
users.roles.name | string | The name of the role |
users.roles.description | string | The description of the role |
users.roles.permissions | object | The permissions that this role has |
users.roles.priority | number | The priority of this role Size range: 1..n |
users.roles.lookup | string | The unique lookup string of this role |
users.roles.highlight_color | string | The html highlight color for this role |
users.roles.created_at | timestamp | Timestamp of when the role was created |
users.roles.updated_at | timestamp | Timestamp of when the role was last updated |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an error adding roles to the user |
# (Admin) Count Users
This allows Administrators to get a count of how many users are registered. This is used in the admin panel for paginating through users.
GET /admin/users/count
# Parameters - Query
Name | Type | Description |
---|---|---|
filter | string | optional If banned is passed in, route will return count of banned users. Allowed values: "banned" |
search | string | optional Used to filter count by search string |
ip | boolean | optional Boolean indicating that search string is an ip address |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
count | number | The number of users registered given the passed in parameters |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an error calculating the user count |
# (Admin) Create User Note
This allows Administrators and Moderators to create user notes
POST /user/notes
# Parameters - Payload
Name | Type | Description |
---|---|---|
user_id | string | The id of the user who the note is being left on |
author_id | string | The id of the user leaving the note |
note | string | The note being left on the user's account |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
id | string | The id of the user note |
user_id | string | The id of the user who the note is being left on |
author_id | string | The id of the user leaving the note |
note | string | The note being left on the user's account |
created_at | timestamp | The created at timestamp of the note |
updated_at | timestamp | The updated at timestamp of the note |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an error creating user note |
# Error response - Error 403
Name | Type | Description |
---|---|---|
Forbidden | User doesn't have permission to create user note |
# (Admin) Delete User Note
This allows Administrators and Moderators to delete user notes
DELETE /user/notes
# Parameters - Query
Name | Type | Description |
---|---|---|
id | string | The id of the note to delete |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
id | string | The id of the user note being deleted |
user_id | string | The id of the user who the note is being left on |
author_id | string | The id of the user leaving the note |
note | string | The note being left on the user's account |
created_at | timestamp | The created at timestamp of the note |
updated_at | timestamp | The updated at timestamp of the note |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an error deleting the user note |
# Error response - Error 403
Name | Type | Description |
---|---|---|
Forbidden | User doesn't have permission to delete user note |
# (Admin) Page User Notes
This allows Administrators and Moderators to page through user notes
GET /user/notes
# Parameters - Query
Name | Type | Description |
---|---|---|
page | number | optional The page of results to return Default value: 1Size range: 1..n |
limit | number | optional The number of results per page to return Default value: 25Size range: 1..100 |
user_id | string | The id of the user whose notes to page through |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
user_id | string | The id of the user whose notes are being returned |
page | number | The current page of results that is being returned |
limit | number | The current number of results that is being returned per page |
next | boolean | boolean indicating if there is a next page |
prev | boolean | boolean indicating if there is a previous page |
data | object[] | An array of user notes |
data.id | string | The id of the user note |
data.author_id | string | The id of the admin or mod who left the note |
data.author_name | string | The username of the admin or mod who left the note |
data.author_avatar | string | The avatar of the admin or mod who left the note |
data.author_highlight_color | string | The highlight color of the admin or mod who left the note |
data.note | string | The note left by the admin or mod |
data.created_at | timestamp | The created at timestamp of the note |
data.updated_at | timestamp | The updated at timestamp of the note |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an error paging user notes |
# Error response - Error 403
Name | Type | Description |
---|---|---|
Forbidden | User doesn't have permission to query user notes |
# (Admin) Page Users
This allows Administrators to page through all registered users.
GET /admin/users
# Parameters - Query
Name | Type | Description |
---|---|---|
page | number | optional The page of registered users to retrieve Default value: 1Size range: 1..n |
limit | number | optional The number of users to retrieve per page Default value: 25Size range: 1..n |
field | string | optional The db field to sort the results by Default value: usernameAllowed values: "username","email","updated_at","created_at","imported_at","ban_expiration" |
desc | boolean | optional Boolean indicating whether or not to sort the results in descending order Default value: false |
filter | string | optional If banned is passed in only banned users are returned Allowed values: "banned" |
search | string | optional Username to search for |
ip | boolean | optional Boolean indicating that search string is an ip address |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
users | object[] | An array of user objects |
users.id | string | The unique id of the user |
users.username | string | The username of the user |
users.email | string | The email of the user |
users.deleted | boolean | Boolean indicating if the user's account is deleted |
users.user_ips | string[] | Array of user's known IP addresses |
users.last_active | timestamp | Timestamp of when the user's account was last active |
users.ban_expiration | timestamp | Timestamp of when the user's ban expires |
users.created_at | timestamp | Timestamp of when the user was created |
users.updated_at | timestamp | Timestamp of when the user was last updated |
users.imported_at | timestamp | Timestamp of when the user was imported, null if not imported |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an error retrieving the users |
# (Admin) Recover Account
Used by admins to recover a user's account. Sends an email to the account holder with a URL to visit to reset the account password.
POST /user/recover/
# Parameters - Payload
Name | Type | Description |
---|---|---|
user_id | string | The id of the user's account to recover |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
Sucess | object | 200 OK |
# Error response
# Error response - Error 400
Name | Type | Description |
---|---|---|
BadRequest | The user was not found |
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an error recovering the user account |
# (Admin) Remove Roles
Used to remove a role or roles from a user. This allows Administrators to remove roles from an account.
PUT /admin/users/roles/remove
# Parameters - Payload
Name | Type | Description |
---|---|---|
user_id | string | The unique id of the user to remove the role from |
role_id | string | The unique id of the role to remove from the user |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
id | string | The user's unique id |
username | string | The user's username |
string | The user's email address | |
created_at | timestamp | Timestamp of when the user's account was created |
updated_at | timestamp | Timestamp of when the user's account was last updated |
roles | object[] | An array containing the users role objects |
roles.id | string | The unique id of the role |
roles.name | string | The name of the role |
roles.description | string | The description of the role |
roles.permissions | object | The permissions that this role has |
roles.priority | number | The priority of this role Size range: 1..n |
roles.lookup | string | The unique lookup string of this role |
roles.highlight_color | string | The html highlight color for this role |
roles.created_at | timestamp | Timestamp of when the role was created |
roles.updated_at | timestamp | Timestamp of when the role was last updated |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an error removing roles from the user |
# (Admin) Search Usernames
This allows Administrators to search usernames. This is used in the admin panel to autocomplete usernames when trying to quickly find a user.
GET /admin/users/search
# Parameters - Query
Name | Type | Description |
---|---|---|
username | string | Username to search for, doesn't have to be a full username |
limit | number | optional The number of usernames to return while searching Default value: 15 |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
usernames | string[] | An array containing usernames with accounts on the forum |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an error searching for usernames |
# (Admin) Update User Note
This allows Administrators and Moderators to update user notes
PUT /user/notes
# Parameters - Payload
Name | Type | Description |
---|---|---|
id | string | The id of the note to update |
note | string | The updated note |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
id | string | The id of the user note |
user_id | string | The id of the user who the note is being left on |
author_id | string | The id of the user leaving the note |
note | string | The note being left on the user's account |
created_at | timestamp | The created at timestamp of the note |
updated_at | timestamp | The updated at timestamp of the note |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an error updating user note |
# Error response - Error 403
Name | Type | Description |
---|---|---|
Forbidden | User doesn't have permission to update the user note |
# Deactivate
Deactivate a user by userId
POST /users/:userId/deactivate
# Parameters - Parameter
Name | Type | Description |
---|---|---|
id | string | The id of the user to deactivate |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
status | object | 200 OK |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an error deactivating the user |
# Delete
Delete a user by userId
DELETE /users/:id
# Parameters - Parameter
Name | Type | Description |
---|---|---|
id | string | The id of the user to delete |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
username | string | The deleted user's username |
string | The deleted user's email |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an error deleteing the user |
# Find
Find a user by their username.
GET /users/:username
# Parameters - Parameter
Name | Type | Description |
---|---|---|
username | string | The username of the user to find |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
id | string | The user's unique id |
username | string | The user's username |
avatar | string | URL to the user's avatar image |
ignored | boolean | Boolean idicating if user is being ignored |
activity | number | The user's activity number |
signature | string | The user's signature with any markup tags converted and parsed into html elements |
raw_signature | string | The user's signature as it was entered in the editor by the user |
priority | number | The user's role priority |
post_count | number | The number of posts made by this user |
collapsed_categories | string[] | Array containing id of categories the user collapsed |
ignored_boards | string[] | Array containing id of boards the user ignores |
posts_per_page | number | Preference indicating the number of posts the user wants to view per page |
threads_per_page | number | Preference indicating the number of threads the user wants to view per page |
name | string | The user's actual name (e.g. John Doe) |
website | string | URL to the user's website |
gender | string | The user's gender |
dob | timestamp | The user's date of birth |
location | string | The user's location |
language | string | The user's native language (e.g. English) |
created_at | timestamp | Timestamp of when the user's account was created |
updated_at | timestamp | Timestamp of when the user's account was last updated |
roles | string[] | An array containing the users role lookups |
role_name | string | The name of the user's primary role |
role_highlight_color | string | The hex color to highlight the user's primary role |
# Error response
# Error response - Error 404
Name | Type | Description |
---|---|---|
NotFound | The user was not found |
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an error looking up the user |
# Ignore User Posts
Used to ignore a particular user's posts
POST /ignoreUsers/ignore/:id
# Parameters - Parameter
Name | Type | Description |
---|---|---|
id | string | The id of the user whose posts to ignore |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
user_id | string | The id of the user whose posts are ignored |
ignored | boolean | Boolean indicating if the user's posts are being ignored |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an error ignoring the user's posts |
# Invitation Exists
Used to check if an invitation has already been sent to an address.
GET /invites/exists
# Parameters - Query
Name | Type | Description |
---|---|---|
string | The email to check |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
found | boolean | true if the email already has an invite. |
# Error response
# Error response - Error 4xx
Name | Type | Description |
---|---|---|
BadRequest | There was an error checking if the invitation exists. |
# Invitations
Used to page through current invitations.
GET /invites
# Parameters - Query
Name | Type | Description |
---|---|---|
page | string | optional The page of invitations to bring back. Default value: 1 |
limit | string | optional The number of invitations to bring back. Default value: 25 |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
page | number | The page of invitations to return |
limit | number | The number of invitations to return per page |
has_more | boolean | Boolean indicating if there are more results on the next page |
invitations | object[] | An array containing invitations. |
invitations.email | string | The email of the user who was invited |
invitations.hash | string | The user's invite has |
invitations.created_at | timestamp | The invite created at timestamp |
# Error response
# Error response - Error 4xx
Name | Type | Description |
---|---|---|
BadRequest | There was an error paging invitations. |
# Invite
Used to invite a user to join via email.
POST /invites
# Parameters - Payload
Name | Type | Description |
---|---|---|
string | User's email address. |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
message | string | Invitation sent success message |
confirm_token | string | Invitation token |
# Error response
# Error response - Error 4xx
Name | Type | Description |
---|---|---|
BadRequest | There was an error creating the invitation |
# Page Ignored Users
Used to page through ignored users
GET /ignoreUsers/ignored
# Parameters - Parameter
Name | Type | Description |
---|---|---|
page | number | optional The page of ignored users to return Default value: 1 |
limit | number | optional The number of ignored users to return per page Default value: 25 |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
page | number | The page of ignored users being returned |
limit | number | The number of ignored users being returned per page |
prev | boolean | Boolean indicating if there is a previous page |
next | boolean | Boolean indicating if there is a next page |
data | object[] | Array of ignored users |
data.id | string | The id of the user being ignored |
data.ignored_since | timestamp | Timestamp of when the user was ignored |
data.username | string | The username of the user being ignored |
data.avatar | string | The avatar of the user being ignored |
data.ignored | boolean | Boolean indicating if the user is ignored |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an error ignoring the user's posts |
# Page Users
This allows users to page through all registered users.
GET /search/users
# Parameters - Query
Name | Type | Description |
---|---|---|
page | number | optional The page of registered users to retrieve Default value: 1Size range: 1..n |
limit | number | optional The number of users to retrieve per page Default value: 25Size range: 1..n |
field | string | optional The db field to sort the results by Default value: usernameAllowed values: "username","role","created_at","post_count" |
desc | boolean | optional Boolean indicating whether or not to sort the results in descending order Default value: false |
search | string | optional Username to search for |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
field | string | The field the results are sorted by |
desc | boolean | The order the results are sorted in |
page | number | The current page of the results |
page_count | number | Total number of pages in results |
search | string | The search term used in query |
limit | number | The number of results returned per page |
count | number | The total number of results |
users | object[] | An array of user objects |
users.id | string | The unique id of the user |
users.username | string | The username of the user |
users.role | string | The role of the user |
users.created_at | timestamp | Timestamp of when the user was created |
users.post_count | timestamp | The number of posts this user has made |
users.avatar | timestamp | The user's avatar |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an error retrieving the users |
# Preferences
Get a user's preferences.
GET /users/preferences
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
posts_per_page | number | The post limit for this user |
threads_per_page | number | The thread limit for this user |
collapsed_categories | string[] | The ids of the categories to collapse on boards view |
ignored_boards | string[] | The ids of the boards the user ignores |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an error getting the user's preferences |
# Reactivate
Reactivate a user by userId
POST /users/:id/reactivate
# Parameters - Parameter
Name | Type | Description |
---|---|---|
id | string | The id of the user to reactivate |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
status | object | 200 OK |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an error reactivating the user |
# Remove Invite
Used to remove an invite for a user via email.
POST /invites/remove
# Parameters - Payload
Name | Type | Description |
---|---|---|
string | User's email address. |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
message | string | Invitation removal success message |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an error removing the invite |
# Resend
Used to resend an invitation to a user
POST /invites/resend
# Parameters - Payload
Name | Type | Description |
---|---|---|
string | User's email address |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
message | string | Invitation sent success message |
confirm_token | string | Invitation confirmation token |
# Error response
# Error response - Error 4xx
Name | Type | Description |
---|---|---|
BadRequest | There was an error resending the invitation |
# Unignore User Posts
Used to unignore a particular user's posts
POST /ignoreUsers/unignore/:id
# Parameters - Parameter
Name | Type | Description |
---|---|---|
id | string | The id of the user whose posts to unignore |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
user_id | string | The id of the user whose posts are unignore |
ignored | boolean | Boolean indicating if the user's posts are being ignored |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an error unignoring the user's posts |
# Update
Used to update user information such as profile fields, or passwords.
PUT /users/:id
# Parameters - Parameter
Name | Type | Description |
---|---|---|
id | string | The user's unique id |
# Parameters - Payload
Name | Type | Description |
---|---|---|
username | string | optional The user's username |
string | optional The user's email | |
email_password | string | optional The user's password used for updating email |
old_password | string | optional The user's old password (used for changing password) |
password | string | optional The user's new passowrd (used for changing password) |
confirmation | string | optional The user's new password confirmation (used for changing password) |
name | string | optional The user's name |
website | string | optional URL to user's website |
btc_address | string | optional User's bitcoin wallet address |
gender | string | optional The user's gender |
dob | date | optional Date version of the user's dob |
location | string | optional The user's geographical location |
language | string | optional The user's native language |
position | string | optional The user's position title |
raw_signature | string | optional The user's signature as it was entered in the editor by the user |
signature | string | optional The user's signature with any markup tags converted and parsed into html elements |
avatar | string | optional URL to the user's avatar |
timezone_offset | string | optional Preference for UTC offset for date display |
patroller_view | boolean | optional Preference to display patroller view |
posts_per_page | numbers | optional Preference for how many post to view per page |
threads_per_page | numbers | optional Preference for how many threads to view per page |
collapsed_categories | string[] | optional Array of category id's which the user has collapsed |
ignored_boards | string[] | optional Array of board id's which the user has ignored |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
id | string | The user's unique id |
username | string | optional The user's username |
string | optional The user's email | |
name | string | optional The user's name |
website | string | optional URL to user's website |
btc_address | string | optional User's bitcoin wallet address |
gender | string | optional The user's gender |
dob | timestamp | optional Timestamp of the user's dob |
location | string | optional The user's geographical location |
language | string | optional The user's native language |
position | string | optional The user's position title |
raw_signature | string | optional The user's signature as it was entered in the editor by the user |
signature | string | optional The user's signature with any markup tags converted and parsed into html elements |
avatar | string | optional URL to the user's avatar |
collapsed_categories | string[] | Array containing id of categories the user collapsed |
ignored_boards | string[] | Array containing id of boards the user ignores |
timezone_offset | string | Preference indicating UTC offset for date display |
posts_per_page | number | Preference indicating the number of posts the user wants to view per page |
threads_per_page | number | Preference indicating the number of threads the user wants to view per page |
# Error response
# Error response - Error 400
Name | Type | Description |
---|---|---|
BadRequest | Occurs when resetting password and an invalid old password is provided |
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an error updating the user |
# User Lookup
Query possible username matches and returns their ids for use in UI components
GET /users/lookup/{username}
# Parameters - Parameter
Name | Type | Description |
---|---|---|
username | string | The name of the user to send the message to |
self | boolean | Include authed user in lookup |
restricted | boolean | Hides some internal user accounts from the user lookup |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
users | object[] | An array of possible username matches |
users.id | string | The id of the user |
users.username | string | The username of the user |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue looking up usernames |
# Watchlist
# Page Watchlist Boards
Page though a user's watched boards
GET /watchlist
# Parameters - Query
Name | Type | Description |
---|---|---|
page | number | optional The page of watchlist to bring back Default value: 1 |
limit | number | optional The number of threads to bring back per page Default value: 25 |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
page | number | The page of results being returned |
limit | number | The number of results per page |
has_more_boards | boolean | Boolean indicating if there are more pages of boards |
boards | object[] | An array containing watched board data |
boards.id | string | The unique id of the watched board |
boards.name | string | The name of the watched board |
boards.post_count | number | The post count of the watched board |
boards.thread_count | number | The thread count of the watched board |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue retrieving the board watchlist threads. |
# Page Watchlist Threads
Page though a user's watched threads
GET /watchlist
# Parameters - Query
Name | Type | Description |
---|---|---|
page | number | optional The page of watchlist to bring back Default value: 1 |
limit | number | optional The number of threads to bring back per page Default value: 25 |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
page | number | The page of results being returned |
limit | number | The number of results per page |
has_more_threads | boolean | Boolean indicating if there are more pages of threads |
threads | object[] | An array containing watched thread data |
threads.id | string | The unique id of the watched thread |
threads.post_count | number | The post count of the watched thread |
threads.view_count | number | The view count of the watched thread |
threads.board_name | string | The name of the board the thread is in |
threads.title | string | The title of the thread being watched |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue retrieving the watchlist threads. |
# Page Watchlist Unread
Used to page through a user's watchlist filtered by threads with unread posts.
GET /watchlist
# Parameters - Query
Name | Type | Description |
---|---|---|
page | number | optional The page of watchlist to bring back Default value: 1 |
limit | number | optional The number of threads to bring back per page Default value: 25 |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
page | number | The page of results being returned |
limit | number | The number of results per page |
has_more_threads | boolean | Boolean indicating if there are more pages of threads |
threads | object[] | An array containing watched thread data |
threads.id | string | The unique id of the watched thread |
threads.locked | boolean | Boolean indicating if the thread is locked |
threads.sticky | boolean | Boolean indicating if the thread is stickied |
threads.has_new_post | boolean | Boolean indicating if the thread has new posts |
created_at | timestamp | Timestamp of when the thread was created |
updated_at | timestamp | Timestamp of when the thread was last updated |
threads.view_count | number | The view count of the watched thread |
threads.post_count | number | The post count of the watched thread |
threads.title | string | The title of the thread being watched |
threads.last_post_id | string | The id of the last post in the thread |
threads.last_post_position | number | The position of the last post in the thread |
threads.last_post_created_at | timestamp | Timestamp of when the last post was created |
threads.last_post_username | string | The username of the author of the last post |
threads.last_unread_position | number | The position of the last unread post |
threads.last_unread_post_id | string | The id of the last unread post |
threads.user | object | Object containing data about the author of the thread |
threads.user.id | string | The id of the author of the thread |
threads.user.username | string | The username of the author of the thread |
threads.user.deleted | boolean | Boolean indicating if the thread author has had their account deleted |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue retrieving the watchlist threads. |
# Unwatch Board
Used to unmark a user as watching a board.
DELETE /watchlist/boards/:id
# Parameters - Parameter
Name | Type | Description |
---|---|---|
id | string | The unique id of the board being unwatched |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
status | object | 200 OK |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue unwatching the board |
# Unwatch Thread
Used to unmark a user as watching a thread.
DELETE /watchlist/threads/:id
# Parameters - Parameter
Name | Type | Description |
---|---|---|
id | string | The unique id of the thread being unwatched |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
status | object | 200 OK |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue unwatching the thread |
# View Edit Watchlist
Used to view boards and threads for editing a user's watchlist.
GET /watchlist
# Parameters - Query
Name | Type | Description |
---|---|---|
limit | number | optional The number of threads/boards to bring back per page Default value: 25 |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
page | number | The page of results being returned |
limit | number | The number of results per page |
has_more_threads | boolean | Boolean indicating if there are more pages of threads |
has_more_boards | boolean | Boolean indicating if there are more pages of boards |
threads | object[] | An array containing watched thread data |
threads.id | string | The unique id of the watched thread |
threads.post_count | number | The post count of the watched thread |
threads.view_count | number | The view count of the watched thread |
threads.board_name | string | The name of the board the thread is in |
threads.title | string | The title of the thread being watched |
boards | object[] | An array containing watched board data |
boards.id | string | The unique id of the watched board |
boards.name | string | The name of the watched board |
boards.post_count | number | The post count of the watched board |
boards.thread_count | number | The thread count of the watched board |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue retrieving the watchlist threads. |
# Watch Board
Used to mark a user as watching a board.
POST /watchlist/boards/:id
# Parameters - Parameter
Name | Type | Description |
---|---|---|
id | string | The unique id of the board being watched |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
status | object | 200 OK |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue watching the board |
# Watch Thread
Used to mark a user as watching a thread.
POST /watchlist/threads/:id
# Parameters - Parameter
Name | Type | Description |
---|---|---|
id | string | The unique id of the thread being watched |
# Success response
# Success response - Success 200
Name | Type | Description |
---|---|---|
status | object | 200 OK |
# Error response
# Error response - Error 500
Name | Type | Description |
---|---|---|
InternalServerError | There was an issue watching the thread |