Files
NodeBB/public/openapi/read.yaml
2020-04-15 14:44:05 -04:00

9490 lines
381 KiB
YAML

openapi: 3.0.0
info:
title: nodebb
version: 1.13.2
license:
name: GPL-3.0
description: >-
# Introduction
The following document outlines every Read API route available via NodeBB. Unlike the write API, the v1.x API was coded organically, and is **not** strictly RESTful. These shortcomings will be addressed in the v2.x version of the API.
## Authentication
Authentication with this API is done via cookies. A valid login session is required for API calls that pertain to operations involving a logged-in user. For example, `/api/unread` is a route showing unread topics, and is not accessible by guest users.
tags:
- name: home
description: Routes used at the forum index only
- name: categories
description: Category hierarchy and navigation
- name: topics
- name: posts
- name: users
- name: authentication
description: User authentication (e.g. login/registration)
- name: groups
description: User groups
- name: admin
description: Administrative Control Panel (ACP) routing
- name: emails
description: Email utilities
- name: flags
description: Reporting of content by users
- name: notifications
description: Real-time notifications
- name: search
- name: tags
description: Disparate method of categorizing topics
- name: shorthand
description: Convenience and utility routes for accessing other part of the API
paths:
/api/:
get:
tags:
- home
description: >
This route is used to populate the homepage of NodeBB. It is the main
access point of the forum, and shows a list of categories for navigation
purposes.
summary: Get forum index data
responses:
"200":
description: ""
content:
application/json:
schema:
allOf:
- type: object
properties:
title:
type: string
categories:
type: array
items:
allOf:
- $ref: components/schemas/CategoryObject.yaml#/CategoryObject
- type: object
properties:
children:
type: array
items:
allOf:
- $ref: components/schemas/CategoryObject.yaml#/CategoryObject
- type: object
properties:
tagWhitelist:
type: array
items: {}
unread-class:
type: string
children:
type: array
items: {}
parent:
$ref: components/schemas/CategoryObject.yaml#/CategoryObject
posts:
type: array
items:
type: object
properties:
pid:
type: number
timestamp:
type: number
content:
type: string
timestampISO:
type: string
description: An ISO 8601 formatted date string (complementing `timestamp`)
user:
type: object
properties:
uid:
type: number
description: A user identifier
username:
type: string
description: A friendly name for a given user account
userslug:
type: string
description: An URL-safe variant of the username (i.e. lower-cased, spaces
removed, etc.)
picture:
nullable: true
type: string
icon:text:
type: string
description: A single-letter representation of a username. This is used in the
auto-generated icon given to
users without an avatar
icon:bgColor:
type: string
description: A six-character hexadecimal colour code assigned to the user. This
value is used in conjunction
with `icon:text` for the user's
auto-generated icon
example: "#f44336"
index:
type: number
cid:
type: number
description: A category identifier
parentCid:
type: number
description: The category identifier for the category that is the immediate
ancestor of the current category
topic:
type: object
properties:
slug:
type: string
title:
type: string
imageClass:
type: string
timesClicked:
type: number
posts:
type: array
items:
type: object
properties:
pid:
type: number
timestamp:
type: number
content:
type: string
timestampISO:
type: string
description: An ISO 8601 formatted date string (complementing `timestamp`)
user:
type: object
properties:
uid:
type: number
description: A user identifier
username:
type: string
description: A friendly name for a given user account
userslug:
type: string
description: An URL-safe variant of the username (i.e. lower-cased, spaces
removed, etc.)
picture:
nullable: true
type: string
icon:text:
type: string
description: A single-letter representation of a username. This is used in the
auto-generated icon given to users
without an avatar
icon:bgColor:
type: string
description: A six-character hexadecimal colour code assigned to the user. This
value is used in conjunction with
`icon:text` for the user's
auto-generated icon
example: "#f44336"
index:
type: number
cid:
type: number
description: A category identifier
parentCid:
type: number
description: The category identifier for the category that is the immediate
ancestor of the current category
topic:
type: object
properties:
slug:
type: string
title:
type: string
teaser:
type: object
properties:
url:
type: string
timestampISO:
type: string
description: An ISO 8601 formatted date string (complementing `timestamp`)
pid:
type: number
topic:
type: object
properties:
slug:
type: string
title:
type: string
topics:
type: array
items:
type: object
properties:
tid:
type: number
description: A topic identifier
uid:
type: number
description: A user identifier
cid:
type: number
description: A category identifier
mainPid:
type: number
description: The post id of the first post in this topic (also called the
"original post")
title:
type: string
slug:
type: string
timestamp:
type: number
lastposttime:
type: number
postcount:
type: number
viewcount:
type: number
deleted:
type: number
locked:
type: number
pinned:
type: number
description: Whether or not this particular topic is pinned to the top of the
category
upvotes:
type: number
downvotes:
type: number
titleRaw:
type: string
timestampISO:
type: string
description: An ISO 8601 formatted date string (complementing `timestamp`)
lastposttimeISO:
type: string
votes:
type: number
category:
type: object
properties:
cid:
type: number
description: A category identifier
name:
type: string
slug:
type: string
icon:
type: string
image:
nullable: true
imageClass:
nullable: true
type: string
bgColor:
type: string
color:
type: string
disabled:
type: number
user:
type: object
properties:
uid:
type: number
description: A user identifier
username:
type: string
description: A friendly name for a given user account
userslug:
type: string
description: An URL-safe variant of the username (i.e. lower-cased, spaces
removed, etc.)
reputation:
type: number
postcount:
type: number
picture:
nullable: true
type: string
signature:
nullable: true
type: string
banned:
type: number
status:
type: string
icon:text:
type: string
description: A single-letter representation of a username. This is used in the
auto-generated icon given to users without
an avatar
icon:bgColor:
type: string
description: A six-character hexadecimal colour code assigned to the user. This
value is used in conjunction with
`icon:text` for the user's auto-generated
icon
example: "#f44336"
banned_until_readable:
type: string
oldUid:
type: number
groupTitle:
type: string
groupTitleArray:
type: array
items: {}
fullname:
type: string
teaser:
type: object
properties:
pid:
type: number
uid:
type: number
description: A user identifier
timestamp:
type: number
tid:
type: number
description: A topic identifier
content:
type: string
timestampISO:
type: string
description: An ISO 8601 formatted date string (complementing `timestamp`)
user:
type: object
properties:
uid:
type: number
description: A user identifier
username:
type: string
description: A friendly name for a given user account
userslug:
type: string
description: An URL-safe variant of the username (i.e. lower-cased, spaces
removed, etc.)
picture:
nullable: true
type: string
icon:text:
type: string
description: A single-letter representation of a username. This is used in the
auto-generated icon given to users
without an avatar
icon:bgColor:
type: string
description: A six-character hexadecimal colour code assigned to the user. This
value is used in conjunction with
`icon:text` for the user's
auto-generated icon
example: "#f44336"
index:
type: number
tags:
type: array
items:
type: object
properties:
value:
type: string
valueEscaped:
type: string
color:
type: string
bgColor:
type: string
score:
type: number
isOwner:
type: boolean
ignored:
type: boolean
unread:
type: boolean
bookmark:
nullable: true
unreplied:
type: boolean
icons:
type: array
items: {}
index:
type: number
thumb:
type: string
teaserPid:
type: number
- $ref: components/schemas/CommonProps.yaml#/CommonProps
"/api/post/{pid}/raw":
get:
tags:
- posts
summary: Get a post's raw text
description: >-
This route returns the raw content of a post, without running it through any installed parsers. It it useful if you wish to populate a user control on the client-side with the raw input for editing purposes.
If you are using this on the client side DOM, be careful that appropriate sanitization measures are taken, as raw content will faithfully reproduce any script injections embedded in the post content.
parameters:
- name: pid
in: path
required: true
schema:
type: number
responses:
"200":
description: ""
content:
application/json:
schema:
type: object
properties:
pid:
type: number
content:
type: string
/api/admin:
get:
tags:
- admin
summary: /api/admin
responses: {}
/api/admin/general/dashboard:
get:
tags:
- admin
summary: /api/admin/general/dashboard
responses:
"200":
description: ""
content:
application/json:
schema:
allOf:
- type: object
properties:
version:
type: string
lookupFailed:
type: boolean
latestVersion:
type: string
upgradeAvailable:
type: boolean
currentPrerelease:
type: boolean
notices:
type: array
items:
type: object
properties:
done:
type: boolean
doneText:
type: string
notDoneText:
type: string
tooltip:
type: string
link:
type: string
stats:
type: array
items:
type: object
properties:
yesterday:
type: number
today:
type: number
lastweek:
type: number
thisweek:
type: number
lastmonth:
type: number
thismonth:
type: number
alltime:
type: number
dayIncrease:
type: string
dayTextClass:
type: string
weekIncrease:
type: string
weekTextClass:
type: string
monthIncrease:
type: string
monthTextClass:
type: string
name:
type: string
canRestart:
type: boolean
lastrestart:
type: object
properties:
uid:
type: number
description: A user identifier
ip:
type: string
timestamp:
type: number
user:
$ref: components/schemas/UserObject.yaml#/UserObject
timestampISO:
type: string
description: An ISO 8601 formatted date string (complementing `timestamp`)
- $ref: components/schemas/CommonProps.yaml#/CommonProps
/api/admin/general/languages:
get:
tags:
- admin
summary: /api/admin/general/languages
responses: {}
/api/admin/general/sounds:
get:
tags:
- admin
summary: /api/admin/general/sounds
responses: {}
/api/admin/general/navigation:
get:
tags:
- admin
summary: /api/admin/general/navigation
responses: {}
/api/admin/general/homepage:
get:
tags:
- admin
summary: /api/admin/general/homepage
responses:
"200":
description: ""
content:
application/json:
schema:
allOf:
- type: object
properties:
routes:
type: array
items:
type: object
properties:
route:
type: string
name:
type: string
- $ref: components/schemas/CommonProps.yaml#/CommonProps
/api/admin/general/social:
get:
tags:
- admin
summary: /api/admin/general/social
responses: {}
/api/admin/manage/categories:
get:
tags:
- admin
summary: /api/admin/manage/categories
responses:
"200":
description: ""
content:
application/json:
schema:
$ref: components/schemas/CommonProps.yaml#/CommonProps
"/api/admin/manage/categories/{category_id}":
get:
tags:
- admin
summary: /api/admin/manage/categories/{category_id}
parameters:
- name: category_id
in: path
required: true
schema:
type: string
responses:
"200":
description: ""
content:
application/json:
schema:
allOf:
- type: object
properties:
category:
allOf:
- $ref: components/schemas/CategoryObject.yaml#/CategoryObject
- type: object
properties:
tagWhitelist:
type: array
items: {}
unread-class:
type: string
parent:
$ref: components/schemas/CategoryObject.yaml#/CategoryObject
allCategories:
type: array
items:
type: object
properties:
text:
type: string
value:
type: number
selected:
type: boolean
customClasses:
type: array
items: {}
- $ref: components/schemas/CommonProps.yaml#/CommonProps
"/api/admin/manage/categories/{category_id}/analytics":
get:
tags:
- admin
summary: /api/admin/manage/categories/{category_id}/analytics
parameters:
- name: category_id
in: path
required: true
schema:
type: string
responses:
"200":
description: ""
content:
application/json:
schema:
allOf:
- type: object
properties:
name:
type: string
analytics:
type: object
properties:
pageviews:hourly:
type: array
items:
type: number
pageviews:daily:
type: array
items:
type: number
topics:daily:
type: array
items:
type: number
posts:daily:
type: array
items:
type: number
- $ref: components/schemas/CommonProps.yaml#/CommonProps
"/api/admin/manage/privileges/{cid?}":
get:
tags:
- admin
summary: /api/admin/manage/privileges/{cid?}
parameters:
- name: cid?
in: path
required: true
schema:
type: string
responses:
"200":
description: ""
content:
application/json:
schema:
allOf:
- type: object
properties:
privileges:
type: object
properties:
labels:
type: object
properties:
users:
type: array
items:
type: object
properties:
name:
type: string
groups:
type: array
items:
type: object
properties:
name:
type: string
users:
type: array
items: {}
groups:
type: array
items:
type: object
properties:
name:
type: string
nameEscaped:
type: string
privileges:
type: object
properties:
groups:find:
type: boolean
groups:read:
type: boolean
groups:topics:read:
type: boolean
groups:topics:create:
type: boolean
groups:topics:reply:
type: boolean
groups:topics:tag:
type: boolean
groups:posts:edit:
type: boolean
groups:posts:history:
type: boolean
groups:posts:delete:
type: boolean
groups:posts:upvote:
type: boolean
groups:posts:downvote:
type: boolean
groups:topics:delete:
type: boolean
groups:posts:view_deleted:
type: boolean
groups:purge:
type: boolean
groups:moderate:
type: boolean
isPrivate:
type: boolean
columnCountUser:
type: number
columnCountUserOther:
type: number
columnCountGroup:
type: number
columnCountGroupOther:
type: number
categories:
type: array
items:
type: object
properties:
cid:
type: number
description: A category identifier
name:
type: string
icon:
type: string
selected:
type: boolean
level:
type: string
parentCid:
type: number
description: The category identifier for the category that is the immediate
ancestor of the current category
color:
type: string
bgColor:
type: string
imageClass:
type: string
selectedCategory:
type: object
properties:
cid:
type: number
description: A category identifier
name:
type: string
level:
type: string
icon:
type: string
parentCid:
type: number
description: The category identifier for the category that is the immediate
ancestor of the current category
color:
type: string
bgColor:
type: string
selected:
type: boolean
cid:
type: number
description: A category identifier
- $ref: components/schemas/CommonProps.yaml#/CommonProps
/api/admin/manage/tags:
get:
tags:
- admin
summary: /api/admin/manage/tags
responses: {}
/api/admin/manage/post-queue:
get:
tags:
- admin
summary: /api/admin/manage/post-queue
responses: {}
/api/admin/manage/ip-blacklist:
get:
tags:
- admin
summary: /api/admin/manage/ip-blacklist
responses: {}
/api/admin/manage/users:
get:
tags:
- admin
summary: /api/admin/manage/users
responses:
"200":
description: ""
content:
application/json:
schema:
allOf:
- type: object
properties:
users:
type: array
items:
$ref: components/schemas/UserObject.yaml#/UserObject
page:
type: number
pageCount:
type: number
resultsPerPage:
type: number
latest:
type: boolean
search_display:
type: string
requireEmailConfirmation:
type: number
inviteOnly:
type: boolean
adminInviteOnly:
type: boolean
- $ref: components/schemas/Pagination.yaml#/Pagination
- $ref: components/schemas/CommonProps.yaml#/CommonProps
/api/admin/manage/users/search:
get:
tags:
- admin
summary: /api/admin/manage/users/search
responses:
"200":
description: ""
content:
application/json:
schema:
allOf:
- type: object
properties:
search_display:
type: string
users:
type: array
items: {}
- $ref: components/schemas/CommonProps.yaml#/CommonProps
/api/admin/manage/users/latest:
get:
tags:
- admin
summary: /api/admin/manage/users/latest
responses:
"200":
description: ""
content:
application/json:
schema:
allOf:
- type: object
properties:
users:
type: array
items:
$ref: components/schemas/UserObject.yaml#/UserObject
page:
type: number
pageCount:
type: number
resultsPerPage:
type: number
latest:
type: boolean
search_display:
type: string
requireEmailConfirmation:
type: number
inviteOnly:
type: boolean
adminInviteOnly:
type: boolean
- $ref: components/schemas/Pagination.yaml#/Pagination
- $ref: components/schemas/CommonProps.yaml#/CommonProps
/api/admin/manage/users/not-validated:
get:
tags:
- admin
summary: /api/admin/manage/users/not-validated
responses:
"200":
description: ""
content:
application/json:
schema:
allOf:
- type: object
properties:
users:
type: array
items:
$ref: components/schemas/UserObject.yaml#/UserObject
page:
type: number
pageCount:
type: number
resultsPerPage:
type: number
notvalidated:
type: boolean
search_display:
type: string
requireEmailConfirmation:
type: number
inviteOnly:
type: boolean
adminInviteOnly:
type: boolean
- $ref: components/schemas/Pagination.yaml#/Pagination
- $ref: components/schemas/CommonProps.yaml#/CommonProps
/api/admin/manage/users/no-posts:
get:
tags:
- admin
summary: /api/admin/manage/users/no-posts
responses: {}
/api/admin/manage/users/top-posters:
get:
tags:
- admin
summary: /api/admin/manage/users/top-posters
responses: {}
/api/admin/manage/users/most-reputation:
get:
tags:
- admin
summary: /api/admin/manage/users/most-reputation
responses: {}
/api/admin/manage/users/inactive:
get:
tags:
- admin
summary: /api/admin/manage/users/inactive
responses: {}
/api/admin/manage/users/flagged:
get:
tags:
- admin
summary: /api/admin/manage/users/flagged
responses: {}
/api/admin/manage/users/banned:
get:
tags:
- admin
summary: /api/admin/manage/users/banned
responses: {}
/api/admin/manage/registration:
get:
tags:
- admin
summary: /api/admin/manage/registration
responses: {}
/api/admin/manage/admins-mods:
get:
tags:
- admin
summary: /api/admin/manage/admins-mods
responses: {}
/api/admin/manage/groups:
get:
tags:
- admin
summary: /api/admin/manage/groups
responses:
"200":
description: ""
content:
application/json:
schema:
allOf:
- type: object
properties:
groups:
type: array
items:
type: object
properties:
name:
type: string
description:
type: string
deleted:
oneOf:
- type: number
- type: string
hidden:
type: number
system:
type: number
userTitle:
type: string
icon:
type: string
labelColor:
type: string
slug:
type: string
createtime:
type: number
memberCount:
type: number
private:
type: number
cover:url:
type: string
cover:position:
type: string
userTitleEnabled:
type: number
disableJoinRequests:
type: number
disableLeave:
type: number
nameEncoded:
type: string
displayName:
type: string
textColor:
type: string
createtimeISO:
type: string
cover:thumb:url:
type: string
ownerUid:
type: number
yourid:
type: number
- $ref: components/schemas/Pagination.yaml#/Pagination
- $ref: components/schemas/CommonProps.yaml#/CommonProps
"/api/admin/manage/groups/{name}":
get:
tags:
- admin
summary: /api/admin/manage/groups/{name}
parameters:
- name: name
in: path
required: true
schema:
type: string
responses:
"200":
description: ""
content:
application/json:
schema:
allOf:
- type: object
properties:
group:
type: object
properties:
name:
type: string
slug:
type: string
createtime:
type: number
userTitle:
type: string
userTitleEnabled:
type: number
description:
type: string
memberCount:
type: number
hidden:
type: number
system:
type: number
private:
type: number
disableJoinRequests:
type: number
disableLeave:
type: number
icon:
type: string
labelColor:
type: string
textColor:
type: string
nameEncoded:
type: string
displayName:
type: string
createtimeISO:
type: string
cover:thumb:url:
type: string
cover:url:
type: string
cover:position:
type: string
descriptionParsed:
type: string
members:
type: array
items:
allOf:
- $ref: components/schemas/UserObject.yaml#/UserObject
- type: object
properties:
isOwner:
type: boolean
membersNextStart:
type: number
pending:
type: array
items: {}
invited:
type: array
items: {}
isMember:
type: boolean
isPending:
type: boolean
isInvited:
type: boolean
isOwner:
type: boolean
groupNames:
type: array
items:
type: object
properties:
encodedName:
type: string
displayName:
type: string
selected:
type: boolean
allowPrivateGroups:
type: number
maximumGroupNameLength:
type: number
maximumGroupTitleLength:
type: number
- $ref: components/schemas/CommonProps.yaml#/CommonProps
/api/admin/manage/uploads:
get:
tags:
- admin
summary: /api/admin/manage/uploads
responses: {}
/api/admin/manage/digest:
get:
tags:
- admin
summary: /api/admin/manage/digest
responses:
"200":
description: ""
content:
application/json:
schema:
allOf:
- type: object
properties:
title:
type: string
delivery:
type: array
items:
type: object
properties:
username:
type: string
description: A friendly name for a given user account
picture:
nullable: true
type: string
uid:
type: number
description: A user identifier
icon:text:
type: string
description: A single-letter representation of a username. This is used in the
auto-generated icon given to users without an
avatar
icon:bgColor:
type: string
description: A six-character hexadecimal colour code assigned to the user. This
value is used in conjunction with `icon:text`
for the user's auto-generated icon
example: "#f44336"
lastDelivery:
type: string
setting:
type: boolean
default:
type: string
- $ref: components/schemas/Pagination.yaml#/Pagination
- $ref: components/schemas/CommonProps.yaml#/CommonProps
"/api/admin/settings/{term?}":
get:
tags:
- admin
summary: /api/admin/settings/{term?}
parameters:
- name: term?
in: path
required: true
schema:
type: string
responses:
"200":
description: ""
content:
application/json:
schema:
allOf:
- type: object
properties:
notificationSettings:
type: array
items:
type: object
properties:
name:
type: string
label:
type: string
- $ref: components/schemas/CommonProps.yaml#/CommonProps
"/api/admin/appearance/{term?}":
get:
tags:
- admin
summary: /api/admin/appearance/{term?}
parameters:
- name: term?
in: path
required: true
schema:
type: string
responses:
"200":
description: ""
content:
application/json:
schema:
$ref: components/schemas/CommonProps.yaml#/CommonProps
/api/admin/extend/plugins:
get:
tags:
- admin
summary: /api/admin/extend/plugins
responses:
"200":
description: ""
content:
application/json:
schema:
allOf:
- type: object
properties:
installed:
type: array
items:
type: object
properties:
latest:
type: string
description:
type: string
name:
type: string
updated:
type: string
url:
type: string
numInstalls:
type: number
isCompatible:
type: boolean
id:
type: string
installed:
type: boolean
active:
type: boolean
isTheme:
type: boolean
error:
type: boolean
version:
type: string
license:
type: object
properties:
name:
type: string
text:
type: string
outdated:
type: boolean
settingsRoute:
type: string
installedCount:
type: number
activeCount:
type: number
inactiveCount:
type: number
upgradeCount:
type: number
download:
type: array
items:
type: object
properties:
name:
type: string
updated:
type: string
description:
type: string
latest:
type: string
url:
type: string
numInstalls:
type: number
isCompatible:
type: boolean
id:
type: string
installed:
type: boolean
active:
type: boolean
incompatible:
type: array
items:
type: object
properties:
latest:
type: string
description:
type: string
name:
type: string
updated:
type: string
url:
type: string
numInstalls:
type: number
isCompatible:
type: boolean
id:
type: string
installed:
type: boolean
active:
type: boolean
submitPluginUsage:
type: number
version:
type: string
- $ref: components/schemas/CommonProps.yaml#/CommonProps
/api/admin/extend/widgets:
get:
tags:
- admin
summary: /api/admin/extend/widgets
responses:
"200":
description: ""
content:
application/json:
schema:
allOf:
- type: object
properties:
templates:
type: array
items:
type: object
properties:
template:
type: string
areas:
type: array
items:
type: object
properties:
name:
type: string
location:
type: string
areas:
type: array
items:
type: object
properties:
name:
type: string
template:
type: string
location:
type: string
data:
type: array
items:
type: object
properties:
widget:
type: string
data:
type: object
properties:
html:
type: string
cid:
type: string
title:
type: string
container:
type: string
groups:
type: array
items: {}
groupsHideFrom:
type: array
items: {}
hide-mobile:
type: string
numTags:
type: string
numUsers:
type: string
text:
type: string
parseAsPost:
type: string
numTopics:
type: string
availableWidgets:
type: array
items:
type: object
properties:
widget:
type: string
name:
type: string
description:
type: string
content:
type: string
- $ref: components/schemas/CommonProps.yaml#/CommonProps
/api/admin/extend/rewards:
get:
tags:
- admin
summary: /api/admin/extend/rewards
responses: {}
/api/admin/advanced/database:
get:
tags:
- admin
summary: /api/admin/advanced/database
responses:
"200":
description: ""
content:
application/json:
schema:
allOf:
- type: object
properties:
redis:
type: object
properties:
aof_current_rewrite_time_sec:
type: string
aof_enabled:
type: string
aof_last_bgrewrite_status:
type: string
aof_last_rewrite_time_sec:
type: string
aof_rewrite_in_progress:
type: string
aof_rewrite_scheduled:
type: string
arch_bits:
type: string
blocked_clients:
type: string
client_biggest_input_buf:
type: string
client_longest_output_list:
type: string
config_file:
type: string
connected_clients:
type: string
connected_slaves:
type: string
db0:
type: string
evicted_keys:
type: string
expired_keys:
type: string
gcc_version:
type: string
hz:
type: string
instantaneous_ops_per_sec:
type: string
keyspace_hits:
type: string
keyspace_misses:
type: string
latest_fork_usec:
type: string
loading:
type: string
lru_clock:
type: string
master_repl_offset:
type: string
mem_allocator:
type: string
mem_fragmentation_ratio:
type: string
multiplexing_api:
type: string
os:
type: string
process_id:
type: string
pubsub_channels:
type: string
pubsub_patterns:
type: string
rdb_bgsave_in_progress:
type: string
rdb_changes_since_last_save:
type: string
rdb_current_bgsave_time_sec:
type: string
rdb_last_bgsave_status:
type: string
rdb_last_bgsave_time_sec:
type: string
rdb_last_save_time:
type: string
redis_build_id:
type: string
redis_git_dirty:
type: string
redis_git_sha1:
type: string
redis_mode:
type: string
redis_version:
type: string
rejected_connections:
type: string
repl_backlog_active:
type: string
repl_backlog_first_byte_offset:
type: string
repl_backlog_histlen:
type: string
repl_backlog_size:
type: string
role:
type: string
run_id:
type: string
sync_full:
type: string
sync_partial_err:
type: string
sync_partial_ok:
type: string
tcp_port:
type: string
total_commands_processed:
type: string
total_connections_received:
type: string
uptime_in_days:
type: string
uptime_in_seconds:
type: string
used_cpu_sys:
type: string
used_cpu_sys_children:
type: string
used_cpu_user:
type: string
used_cpu_user_children:
type: string
used_memory:
type: string
used_memory_human:
type: string
used_memory_lua:
type: string
used_memory_peak:
type: string
used_memory_peak_human:
type: string
used_memory_rss:
type: string
keys:
type: string
expires:
type: string
avg_ttl:
type: string
instantaneous_input:
type: string
instantaneous_output:
type: string
total_net_input:
type: string
total_net_output:
type: string
raw:
type: string
redis:
type: boolean
mongo:
type: object
properties:
db:
type: string
collections:
type: number
objects:
type: number
avgObjSize:
type: string
dataSize:
type: string
storageSize:
type: string
numExtents:
type: number
indexes:
type: number
indexSize:
type: string
ok:
type: number
mem:
type: object
properties:
bits:
type: number
resident:
type: string
virtual:
type: string
supported:
type: boolean
mapped:
type: string
mappedWithJournal:
type: number
collectionData:
type: array
items:
type: object
properties:
name:
type: string
count:
type: number
size:
type: number
avgObjSize:
type: number
storageSize:
type: number
totalIndexSize:
type: number
indexSizes:
type: object
properties:
_id_:
type: number
expireAt_1:
type: number
_key_1_score_-1:
type: number
_key_1_value_-1:
type: number
content_text_uid_1_cid_1:
type: number
network:
type: object
properties:
bytesIn:
type: string
bytesOut:
type: string
numRequests:
type: string
raw:
type: string
fileSize:
type: number
storageEngine:
type: string
host:
type: string
version:
type: string
uptime:
type: number
mongo:
type: boolean
/api/admin/advanced/events:
get:
tags:
- admin
summary: /api/admin/advanced/events
responses: {}
/api/admin/advanced/hooks:
get:
tags:
- admin
summary: /api/admin/advanced/hooks
responses: {}
/api/admin/advanced/logs:
get:
tags:
- admin
summary: /api/admin/advanced/logs
responses: {}
/api/admin/advanced/errors:
get:
tags:
- admin
summary: /api/admin/advanced/errors
responses: {}
/api/admin/advanced/errors/export:
get:
tags:
- admin
summary: /api/admin/advanced/errors/export
responses: {}
/api/admin/advanced/cache:
get:
tags:
- admin
summary: /api/admin/advanced/cache
responses:
"200":
description: ""
content:
application/json:
schema:
allOf:
- type: object
properties:
postCache:
type: object
properties:
length:
type: number
max:
type: number
itemCount:
type: number
percentFull:
type: string
avgPostSize:
type: number
hits:
type: string
misses:
type: string
hitRatio:
type: string
groupCache:
type: object
properties:
length:
type: number
max:
type: number
itemCount:
type: number
percentFull:
type: string
hits:
type: string
misses:
type: string
hitRatio:
type: string
localCache:
type: object
properties:
length:
type: number
max:
type: number
itemCount:
type: number
percentFull:
type: string
dump:
type: boolean
hits:
type: string
misses:
type: string
hitRatio:
type: string
objectCache:
type: object
properties:
length:
type: number
max:
type: number
itemCount:
type: number
percentFull:
type: string
hits:
type: string
misses:
type: string
hitRatio:
type: string
- $ref: components/schemas/CommonProps.yaml#/CommonProps
/api/admin/development/logger:
get:
tags:
- admin
summary: /api/admin/development/logger
responses:
"200":
description: ""
content:
application/json:
schema:
$ref: components/schemas/CommonProps.yaml#/CommonProps
/api/admin/development/info:
get:
tags:
- admin
summary: /api/admin/development/info
responses: {}
/api/admin/users/csv:
get:
tags:
- admin
summary: /api/admin/users/csv
responses: {}
/api/admin/analytics:
get:
tags:
- admin
summary: /api/admin/analytics
responses: {}
/api/admin/category/uploadpicture:
post:
tags:
- admin
summary: /api/admin/category/uploadpicture
responses: {}
/api/admin/uploadfavicon:
post:
tags:
- admin
summary: /api/admin/uploadfavicon
responses: {}
/api/admin/uploadTouchIcon:
post:
tags:
- admin
summary: /api/admin/uploadTouchIcon
responses: {}
/api/admin/uploadlogo:
post:
tags:
- admin
summary: /api/admin/uploadlogo
responses: {}
/api/admin/uploadOgImage:
post:
tags:
- admin
summary: /api/admin/uploadOgImage
responses: {}
/api/admin/upload/sound:
post:
tags:
- admin
summary: /api/admin/upload/sound
responses: {}
/api/admin/upload/file:
post:
tags:
- admin
summary: /api/admin/upload/file
responses: {}
/api/admin/uploadDefaultAvatar:
post:
tags:
- admin
summary: /api/admin/uploadDefaultAvatar
responses: {}
/api/config:
get:
tags:
- home
summary: /api/config
responses:
"200":
description: ""
content:
application/json:
schema:
type: object
properties:
relative_path:
type: string
upload_url:
type: string
siteTitle:
type: string
browserTitle:
type: string
titleLayout:
type: string
showSiteTitle:
type: boolean
minimumTitleLength:
type: number
maximumTitleLength:
type: number
minimumPostLength:
type: number
maximumPostLength:
type: number
minimumTagsPerTopic:
type: number
maximumTagsPerTopic:
type: number
minimumTagLength:
type: number
maximumTagLength:
type: number
useOutgoingLinksPage:
type: boolean
allowGuestHandles:
type: boolean
allowFileUploads:
type: boolean
allowTopicsThumbnail:
type: boolean
usePagination:
type: boolean
disableChat:
type: boolean
disableChatMessageEditing:
type: boolean
maximumChatMessageLength:
type: number
socketioTransports:
type: array
items:
type: string
socketioOrigins:
type: string
websocketAddress:
type: string
maxReconnectionAttempts:
type: number
reconnectionDelay:
type: number
topicsPerPage:
type: number
postsPerPage:
type: number
maximumFileSize:
type: number
theme:id:
type: string
theme:src:
type: string
defaultLang:
type: string
userLang:
type: string
loggedIn:
type: boolean
uid:
type: number
description: A user identifier
cache-buster:
type: string
requireEmailConfirmation:
type: boolean
topicPostSort:
type: string
categoryTopicSort:
type: string
csrf_token:
type: string
searchEnabled:
type: boolean
bootswatchSkin:
type: string
enablePostHistory:
type: boolean
notificationAlertTimeout:
type: number
timeagoCutoff:
type: number
timeagoCodes:
type: array
items:
type: string
cookies:
type: object
properties:
enabled:
type: boolean
message:
type: string
dismiss:
type: string
link:
type: string
link_url:
type: string
acpLang:
type: string
topicSearchEnabled:
type: boolean
hideSubCategories:
type: boolean
hideCategoryLastPost:
type: boolean
enableQuickReply:
type: boolean
markdown:
type: object
properties:
highlight:
type: number
highlightLinesLanguageList:
type: array
items: {}
theme:
type: string
question-and-answer:
type: object
properties:
defaultCid_13:
type: string
defaultCid_1:
type: string
defaultCid_5:
type: string
forceQuestions:
type: string
defaultCid_2:
type: string
defaultCid_6:
type: string
defaultCid_3:
type: string
defaultCid_15:
type: string
defaultCid_7:
type: string
defaultCid_10:
type: string
defaultCid_16:
type: string
defaultCid_21:
type: string
defaultCid_8:
type: string
defaultCid_4:
type: string
defaultCid_14:
type: string
defaultCid_17:
type: string
defaultCid_18:
type: string
defaultCid_19:
type: string
defaultCid_20:
type: string
defaultCid_22:
type: string
defaultCid_26:
type: string
composer-default:
type: object
properties: {}
sso-google:
type: object
properties:
style:
type: string
/api/me:
get:
tags:
- shorthand
summary: /api/me
responses:
"200":
description: ""
content:
application/json:
schema:
$ref: components/schemas/UserObject.yaml#/UserObjectFull
"/api/user/uid/{uid}":
get:
tags:
- users
summary: /api/user/uid/{uid}
parameters:
- name: uid
in: path
required: true
schema:
type: string
responses:
"200":
description: ""
content:
application/json:
schema:
$ref: components/schemas/UserObject.yaml#/UserObject
"/api/user/username/{username}":
get:
tags:
- users
summary: /api/user/username/{username}
parameters:
- name: username
in: path
required: true
schema:
type: string
responses:
"200":
description: ""
content:
application/json:
schema:
$ref: components/schemas/UserObject.yaml#/UserObject
"/api/user/email/{email}":
get:
tags:
- users
summary: /api/user/email/{email}
parameters:
- name: email
in: path
required: true
schema:
type: string
responses:
"200":
description: ""
content:
application/json:
schema:
$ref: components/schemas/UserObject.yaml#/UserObject
"/api/user/uid/{userslug}/export/posts":
get:
tags:
- users
summary: /api/user/uid/{userslug}/export/posts
parameters:
- name: userslug
in: path
required: true
schema:
type: string
responses: {}
"/api/user/uid/{userslug}/export/uploads":
get:
tags:
- users
summary: /api/user/uid/{userslug}/export/uploads
parameters:
- name: userslug
in: path
required: true
schema:
type: string
responses:
"401":
description: ""
content:
application/json:
schema:
title: not-authorized
type: undefined
"/api/user/uid/{userslug}/export/profile":
get:
tags:
- users
summary: /api/user/uid/{userslug}/export/profile
parameters:
- name: userslug
in: path
required: true
schema:
type: string
responses: {}
"/api/{type}/pid/{id}":
get:
tags:
- shorthand
summary: /api/{type}/pid/{id}
parameters:
- name: type
in: path
required: true
schema:
type: string
- name: id
in: path
required: true
schema:
type: string
responses: {}
"/api/{type}/tid/{id}":
get:
tags:
- shorthand
summary: /api/{type}/tid/{id}
parameters:
- name: type
in: path
required: true
schema:
type: string
- name: id
in: path
required: true
schema:
type: string
responses: {}
"/api/{type}/cid/{id}":
get:
tags:
- shorthand
summary: /api/{type}/cid/{id}
parameters:
- name: type
in: path
required: true
schema:
type: string
- name: id
in: path
required: true
schema:
type: string
responses: {}
/api/categories:
get:
tags:
- categories
summary: Get a list of categories
description: >
This route retrieve the list of categories currently available to the
accessing user. It doesn't necessarily mean that the user can *enter*
the category, as that is a separate privilege. Specifically, this route
will return all categories that grant the calling user the "Find
Category" privilege.
Subcategories are also returned, nested under a category's `children` property.
responses:
"200":
description: A list of category objectscurrently available to the accessing user
content:
application/json:
schema:
allOf:
- type: object
properties:
title:
description: The category title
type: string
categories:
description: A collection of category data objects
type: array
items:
allOf:
- $ref: components/schemas/CategoryObject.yaml#/CategoryObject
- type: object
properties:
tagWhitelist:
type: array
items: {}
unread-class:
type: string
children:
type: array
items:
allOf:
- $ref: components/schemas/CategoryObject.yaml#/CategoryObject
- type: object
properties:
tagWhitelist:
type: array
items: {}
unread-class:
type: string
children:
type: array
items:
$ref: components/schemas/CategoryObject.yaml#/CategoryObject
parent:
allOf:
- $ref: components/schemas/CategoryObject.yaml#/CategoryObject
- type: object
properties:
tagWhitelist:
type: array
items: {}
unread-class:
type: string
posts:
type: array
items:
type: object
properties:
pid:
type: number
timestamp:
type: number
content:
type: string
timestampISO:
type: string
description: An ISO 8601 formatted date string (complementing `timestamp`)
user:
type: object
properties:
uid:
type: number
description: A user identifier
username:
type: string
description: A friendly name for a given user account
userslug:
type: string
description: An URL-safe variant of the username (i.e. lower-cased, spaces
removed, etc.)
picture:
nullable: true
type: string
icon:text:
type: string
description: A single-letter representation of a username. This is used in the
auto-generated icon given to
users without an avatar
icon:bgColor:
type: string
description: A six-character hexadecimal colour code assigned to the user. This
value is used in conjunction
with `icon:text` for the user's
auto-generated icon
example: "#f44336"
index:
type: number
cid:
type: number
description: A category identifier
parentCid:
type: number
description: The category identifier for the category that is the immediate
ancestor of the current category
topic:
type: object
properties:
slug:
type: string
title:
type: string
imageClass:
type: string
timesClicked:
type: number
posts:
type: array
items:
type: object
properties:
pid:
type: number
timestamp:
type: number
content:
type: string
timestampISO:
type: string
description: An ISO 8601 formatted date string (complementing `timestamp`)
user:
type: object
properties:
uid:
type: number
description: A user identifier
username:
type: string
description: A friendly name for a given user account
userslug:
type: string
description: An URL-safe variant of the username (i.e. lower-cased, spaces
removed, etc.)
picture:
nullable: true
type: string
icon:text:
type: string
description: A single-letter representation of a username. This is used in the
auto-generated icon given to users
without an avatar
icon:bgColor:
type: string
description: A six-character hexadecimal colour code assigned to the user. This
value is used in conjunction with
`icon:text` for the user's
auto-generated icon
example: "#f44336"
index:
type: number
cid:
type: number
description: A category identifier
parentCid:
type: number
description: The category identifier for the category that is the immediate
ancestor of the current category
topic:
type: object
properties:
slug:
type: string
title:
type: string
teaser:
type: object
properties:
url:
type: string
timestampISO:
type: string
description: An ISO 8601 formatted date string (complementing `timestamp`)
pid:
type: number
topic:
type: object
properties:
slug:
type: string
title:
type: string
imageClass:
type: string
topics:
type: array
items:
type: object
properties:
tid:
type: number
description: A topic identifier
uid:
type: number
description: A user identifier
cid:
type: number
description: A category identifier
mainPid:
type: number
description: The post id of the first post in this topic (also called the
"original post")
title:
type: string
slug:
type: string
timestamp:
type: number
lastposttime:
type: number
postcount:
type: number
viewcount:
type: number
teaserPid:
type: number
upvotes:
type: number
downvotes:
type: number
deleted:
type: number
locked:
type: number
pinned:
type: number
description: Whether or not this particular topic is pinned to the top of the
category
titleRaw:
type: string
timestampISO:
type: string
description: An ISO 8601 formatted date string (complementing `timestamp`)
lastposttimeISO:
type: string
votes:
type: number
category:
type: object
properties:
cid:
type: number
description: A category identifier
name:
type: string
slug:
type: string
icon:
type: string
image:
nullable: true
imageClass:
nullable: true
type: string
bgColor:
type: string
color:
type: string
disabled:
type: number
user:
type: object
properties:
uid:
type: number
description: A user identifier
username:
type: string
description: A friendly name for a given user account
fullname:
type: string
userslug:
type: string
description: An URL-safe variant of the username (i.e. lower-cased, spaces
removed, etc.)
reputation:
type: number
postcount:
type: number
picture:
nullable: true
type: string
signature:
nullable: true
type: string
banned:
type: number
status:
type: string
icon:text:
type: string
description: A single-letter representation of a username. This is used in the
auto-generated icon given to users without
an avatar
icon:bgColor:
type: string
description: A six-character hexadecimal colour code assigned to the user. This
value is used in conjunction with
`icon:text` for the user's auto-generated
icon
example: "#f44336"
banned_until_readable:
type: string
teaser:
type: object
properties:
pid:
type: number
uid:
type: number
description: A user identifier
timestamp:
type: number
tid:
type: number
description: A topic identifier
content:
type: string
timestampISO:
type: string
description: An ISO 8601 formatted date string (complementing `timestamp`)
user:
type: object
properties:
uid:
type: number
description: A user identifier
username:
type: string
description: A friendly name for a given user account
userslug:
type: string
description: An URL-safe variant of the username (i.e. lower-cased, spaces
removed, etc.)
picture:
nullable: true
type: string
icon:text:
type: string
description: A single-letter representation of a username. This is used in the
auto-generated icon given to users
without an avatar
icon:bgColor:
type: string
description: A six-character hexadecimal colour code assigned to the user. This
value is used in conjunction with
`icon:text` for the user's
auto-generated icon
example: "#f44336"
index:
type: number
tags:
type: array
items:
type: object
properties:
value:
type: string
valueEscaped:
type: string
color:
type: string
bgColor:
type: string
score:
type: number
isOwner:
type: boolean
ignored:
type: boolean
unread:
type: boolean
bookmark:
nullable: true
unreplied:
type: boolean
icons:
type: array
items: {}
index:
type: number
thumb:
type: string
isQuestion:
nullable: true
- $ref: components/schemas/Breadcrumbs.yaml#/Breadcrumbs
- $ref: components/schemas/CommonProps.yaml#/CommonProps
"/api/categories/{cid}/moderators":
get:
tags:
- categories
summary: Get mods for a category
description: >
This route returns an array of uids that correspond to the moderators
for the category in question.
parameters:
- name: cid
description: The category identifier for the category you wish to look up
in: path
required: true
schema:
type: number
responses:
"200":
description: An array of moderators for the requested category
content:
application/json:
schema:
type: object
properties:
moderators:
type: array
example:
moderators:
- 1
- 2
- 3
"/api/recent/posts/{term?}":
get:
tags:
- topics
summary: /api/recent/posts/{term?}
parameters:
- name: term?
in: path
required: true
schema:
type: string
responses:
"200":
description: ""
content:
application/json:
schema:
$ref: components/schemas/PostsObject.yaml#/PostsObject
/api/unread/total:
get:
tags:
- posts
summary: /api/unread/total
responses: {}
"/api/topic/teaser/{topic_id}":
get:
tags:
- topics
summary: /api/topic/teaser/{topic_id}
parameters:
- name: topic_id
in: path
required: true
schema:
type: string
responses: {}
"/api/topic/pagination/{topic_id}":
get:
tags:
- topics
summary: /api/topic/pagination/{topic_id}
parameters:
- name: topic_id
in: path
required: true
schema:
type: string
responses:
"200":
description: ""
content:
application/json:
schema:
type: object
properties:
rel:
type: array
items:
type: object
properties:
rel:
type: string
href:
type: string
pages:
type: array
items:
type: object
properties:
page:
type: number
active:
type: boolean
qs:
type: string
currentPage:
type: number
pageCount:
type: number
prev:
type: object
properties:
page:
type: number
active:
type: boolean
qs:
type: string
next:
type: object
properties:
page:
type: number
active:
type: boolean
qs:
type: string
first:
type: object
properties:
page:
type: number
active:
type: boolean
qs:
type: string
last:
type: object
properties:
page:
type: number
active:
type: boolean
qs:
type: string
/api/post/upload:
post:
tags:
- posts
summary: /api/post/upload
responses:
"200":
description: ""
content:
application/json:
schema:
type: array
items:
type: object
properties:
name:
type: string
url:
type: string
text/plain:
schema:
type: array
items:
type: object
properties:
name:
type: string
url:
type: string
"403":
description: ""
content:
application/json:
schema:
type: string
example: Forbidden
text/plain:
schema:
type: string
example: Forbidden
"500":
description: ""
content:
application/json:
schema:
type: object
properties:
path:
type: string
error:
type: string
text/plain:
schema:
type: object
properties:
path:
type: string
error:
type: string
/api/topic/thumb/upload:
post:
tags:
- topics
summary: /api/topic/thumb/upload
responses: {}
"/api/user/{userslug}/uploadpicture":
post:
tags:
- users
summary: /api/user/{userslug}/uploadpicture
parameters:
- name: userslug
in: path
required: true
schema:
type: string
responses:
"200":
description: ""
content:
application/json:
schema:
type: array
items:
type: object
properties:
name:
type: string
url:
type: string
"/api/user/{userslug}/uploadcover":
post:
tags:
- users
summary: /api/user/{userslug}/uploadcover
parameters:
- name: userslug
in: path
required: true
schema:
type: string
responses: {}
/api/groups/uploadpicture:
post:
tags:
- groups
summary: /api/groups/uploadpicture
responses: {}
/api/login:
get:
tags:
- authentication
summary: /api/login
responses:
"200":
description: ""
content:
application/json:
schema:
allOf:
- type: object
properties:
loginFormEntry:
type: array
items: {}
alternate_logins:
type: boolean
authentication:
type: array
items:
type: object
properties:
name:
type: string
url:
type: string
callbackURL:
type: string
icon:
type: string
scope:
type: string
prompt:
type: string
allowRegistration:
type: boolean
allowLoginWith:
type: string
title:
type: string
allowPasswordReset:
type: boolean
allowLocalLogin:
type: boolean
- $ref: components/schemas/Breadcrumbs.yaml#/Breadcrumbs
- $ref: components/schemas/CommonProps.yaml#/CommonProps
/api/register:
get:
tags:
- authentication
summary: /api/register
responses:
"200":
description: ""
content:
application/json:
schema:
allOf:
- type: object
properties:
register_window:spansize:
type: string
alternate_logins:
type: boolean
authentication:
type: array
items:
type: object
properties:
name:
type: string
url:
type: string
callbackURL:
type: string
icon:
type: string
scope:
type: string
prompt:
type: string
minimumUsernameLength:
type: number
maximumUsernameLength:
type: number
minimumPasswordLength:
type: number
minimumPasswordStrength:
type: number
regFormEntry:
type: array
items:
type: object
properties:
label:
type: string
html:
type: string
styleName:
type: string
title:
type: string
- $ref: components/schemas/Breadcrumbs.yaml#/Breadcrumbs
- $ref: components/schemas/CommonProps.yaml#/CommonProps
/api/register/complete:
get:
tags:
- authentication
summary: /api/register/complete
responses:
"200":
description: ""
content:
application/json:
schema:
allOf:
- type: object
properties:
title:
type: string
errors:
type: array
items: {}
sections:
type: array
items:
type: string
- $ref: components/schemas/CommonProps.yaml#/CommonProps
/api/search:
get:
tags:
- search
summary: /api/search
responses:
"200":
description: ""
content:
application/json:
schema:
allOf:
- type: object
properties:
posts:
$ref: components/schemas/PostsObject.yaml#/PostsObject
matchCount:
type: number
pageCount:
type: number
time:
type: string
multiplePages:
type: boolean
search_query:
type: string
term:
type: string
categories:
type: array
items:
type: object
properties:
value:
oneOf:
- type: string
- type: number
text:
type: string
categoriesCount:
type: number
expandSearch:
type: boolean
showAsPosts:
type: boolean
showAsTopics:
type: boolean
title:
type: string
searchDefaultSortBy:
type: string
- $ref: components/schemas/Pagination.yaml#/Pagination
- $ref: components/schemas/Breadcrumbs.yaml#/Breadcrumbs
- $ref: components/schemas/CommonProps.yaml#/CommonProps
"/api/reset/{code?}":
get:
tags:
- authentication
summary: /api/reset/{code?}
parameters:
- name: code?
in: path
required: true
schema:
type: string
responses: {}
"/api/email/unsubscribe/{token}":
get:
tags:
- emails
summary: /api/email/unsubscribe/{token}
parameters:
- name: token
in: path
required: true
schema:
type: string
responses: {}
"/api/topic/{topic_id}/{slug}/{post_index?}":
get:
tags:
- topics
summary: /api/topic/{topic_id}/{slug}/{post_index?}
parameters:
- name: topic_id
in: path
required: true
schema:
type: string
- name: slug
in: path
required: true
schema:
type: string
- name: post_index?
in: path
required: true
schema:
type: string
responses:
"200":
description: ""
content:
application/json:
schema:
allOf:
- $ref: components/schemas/CategoryObject.yaml#/CategoryObject
- type: object
properties:
tid:
type: number
description: A topic identifier
uid:
type: number
description: A user identifier
cid:
type: number
description: A category identifier
mainPid:
type: number
description: The post id of the first post in this topic (also called the
"original post")
title:
type: string
slug:
type: string
timestamp:
type: number
lastposttime:
type: number
postcount:
type: number
viewcount:
type: number
teaserPid:
type: number
upvotes:
type: number
downvotes:
type: number
deleted:
type: number
locked:
type: number
pinned:
type: number
description: Whether or not this particular topic is pinned to the top of the
category
titleRaw:
type: string
timestampISO:
type: string
description: An ISO 8601 formatted date string (complementing `timestamp`)
lastposttimeISO:
type: string
votes:
type: number
tags:
type: array
items:
type: object
properties:
value:
type: string
valueEscaped:
type: string
color:
type: string
bgColor:
type: string
score:
type: number
posts:
type: array
items:
type: object
properties:
pid:
type: number
uid:
type: number
description: A user identifier
tid:
type: number
description: A topic identifier
content:
type: string
timestamp:
type: number
votes:
type: number
deleted:
type: number
upvotes:
type: number
downvotes:
type: number
deleterUid:
type: number
edited:
type: number
timestampISO:
type: string
description: An ISO 8601 formatted date string (complementing `timestamp`)
editedISO:
type: string
index:
type: number
user:
type: object
properties:
uid:
type: number
description: A user identifier
username:
type: string
description: A friendly name for a given user account
userslug:
type: string
description: An URL-safe variant of the username (i.e. lower-cased, spaces
removed, etc.)
reputation:
type: number
postcount:
type: number
topiccount:
type: number
picture:
type: string
signature:
type: string
banned:
type: number
banned:expire:
type: number
status:
type: string
lastonline:
type: number
groupTitle:
nullable: true
type: string
groupTitleArray:
type: array
items:
type: string
icon:text:
type: string
description: A single-letter representation of a username. This is used in the
auto-generated icon given to users without
an avatar
icon:bgColor:
type: string
description: A six-character hexadecimal colour code assigned to the user. This
value is used in conjunction with
`icon:text` for the user's auto-generated
icon
example: "#f44336"
lastonlineISO:
type: string
banned_until:
type: number
banned_until_readable:
type: string
selectedGroups:
type: array
items:
type: object
properties:
name:
type: string
slug:
type: string
labelColor:
type: string
textColor:
type: string
icon:
type: string
userTitle:
type: string
custom_profile_info:
type: array
items: {}
editor:
nullable: true
bookmarked:
type: boolean
upvoted:
type: boolean
downvoted:
type: boolean
replies:
type: object
properties:
hasMore:
type: boolean
users:
type: array
items: {}
text:
type: string
count:
type: number
selfPost:
type: boolean
display_edit_tools:
type: boolean
display_delete_tools:
type: boolean
display_moderator_tools:
type: boolean
display_move_tools:
type: boolean
display_post_menu:
type: boolean
tagWhitelist:
type: array
items: {}
thread_tools:
type: array
items:
type: object
properties:
class:
type: string
title:
type: string
icon:
type: string
isFollowing:
type: boolean
isNotFollowing:
type: boolean
isIgnoring:
type: boolean
bookmark:
nullable: true
postSharing:
type: array
items:
type: object
properties:
id:
type: string
name:
type: string
class:
type: string
activated:
type: boolean
deleter:
nullable: true
merger:
nullable: true
related:
type: array
items: {}
unreplied:
type: boolean
icons:
type: array
items: {}
privileges:
type: object
properties:
topics:reply:
type: boolean
topics:read:
type: boolean
topics:tag:
type: boolean
topics:delete:
type: boolean
posts:edit:
type: boolean
posts:history:
type: boolean
posts:delete:
type: boolean
posts:view_deleted:
type: boolean
read:
type: boolean
purge:
type: boolean
view_thread_tools:
type: boolean
editable:
type: boolean
deletable:
type: boolean
view_deleted:
type: boolean
isAdminOrMod:
type: boolean
disabled:
type: number
tid:
type: string
uid:
type: number
description: A user identifier
topicStaleDays:
type: number
reputation:disabled:
type: number
downvote:disabled:
type: number
feeds:disableRSS:
type: number
bookmarkThreshold:
type: number
postEditDuration:
type: number
postDeleteDuration:
type: number
scrollToMyPost:
type: boolean
allowMultipleBadges:
type: boolean
privateUploads:
type: boolean
rssFeedUrl:
type: string
postIndex:
type: number
- $ref: components/schemas/Pagination.yaml#/Pagination
- $ref: components/schemas/Breadcrumbs.yaml#/Breadcrumbs
- $ref: components/schemas/CommonProps.yaml#/CommonProps
"/api/topic/{topic_id}/{slug?}":
get:
tags:
- topics
summary: /api/topic/{topic_id}/{slug?}
parameters:
- name: topic_id
in: path
required: true
schema:
type: string
- name: slug?
in: path
required: true
schema:
type: string
responses:
"200":
description: ""
content:
application/json:
schema:
allOf:
- $ref: components/schemas/CategoryObject.yaml#/CategoryObject
- type: object
properties:
tid:
type: number
description: A topic identifier
uid:
type: number
description: A user identifier
cid:
type: number
description: A category identifier
mainPid:
type: number
description: The post id of the first post in this topic (also called the
"original post")
title:
type: string
slug:
type: string
timestamp:
type: number
lastposttime:
type: number
postcount:
type: number
viewcount:
type: number
teaserPid:
type: number
upvotes:
type: number
downvotes:
type: number
deleted:
type: number
locked:
type: number
pinned:
type: number
description: Whether or not this particular topic is pinned to the top of the
category
titleRaw:
type: string
timestampISO:
type: string
description: An ISO 8601 formatted date string (complementing `timestamp`)
lastposttimeISO:
type: string
votes:
type: number
tags:
type: array
items:
type: object
properties:
value:
type: string
valueEscaped:
type: string
color:
type: string
bgColor:
type: string
score:
type: number
posts:
type: array
items:
type: object
properties:
editor:
properties:
uid:
type: number
description: A user identifier
username:
type: string
description: A friendly name for a given user account
userslug:
type: string
description: An URL-safe variant of the username (i.e. lower-cased, spaces
removed, etc.)
nullable: true
type: object
votes:
type: number
timestamp:
type: number
tid:
type: number
description: A topic identifier
content:
type: string
pid:
type: number
edited:
type: number
uid:
type: number
description: A user identifier
upvotes:
type: number
bookmarks:
type: number
replies:
type: object
properties:
hasMore:
type: boolean
users:
type: array
items:
type: object
properties:
uid:
type: number
description: A user identifier
username:
type: string
description: A friendly name for a given user account
userslug:
type: string
description: An URL-safe variant of the username (i.e. lower-cased, spaces
removed, etc.)
picture:
nullable: true
icon:text:
type: string
description: A single-letter representation of a username. This is used in the
auto-generated icon given to users
without an avatar
icon:bgColor:
type: string
description: A six-character hexadecimal colour code assigned to the user. This
value is used in conjunction with
`icon:text` for the user's
auto-generated icon
example: "#f44336"
administrator:
type: boolean
text:
type: string
count:
type: number
timestampISO:
type: string
description: An ISO 8601 formatted date string (complementing `timestamp`)
deleted:
type: number
downvotes:
type: number
deleterUid:
type: number
timestampISO:
type: string
description: An ISO 8601 formatted date string (complementing `timestamp`)
editedISO:
type: string
index:
type: number
user:
type: object
properties:
uid:
type: number
description: A user identifier
username:
type: string
description: A friendly name for a given user account
fullname:
type: string
userslug:
type: string
description: An URL-safe variant of the username (i.e. lower-cased, spaces
removed, etc.)
reputation:
type: number
postcount:
type: number
topiccount:
type: number
picture:
nullable: true
type: string
signature:
type: string
banned:
type: number
banned:expire:
type: number
status:
type: string
lastonline:
type: number
groupTitle:
nullable: true
type: string
groupTitleArray:
type: array
items:
type: string
icon:text:
type: string
description: A single-letter representation of a username. This is used in the
auto-generated icon given to users without
an avatar
icon:bgColor:
type: string
description: A six-character hexadecimal colour code assigned to the user. This
value is used in conjunction with
`icon:text` for the user's auto-generated
icon
example: "#f44336"
lastonlineISO:
type: string
banned_until:
type: number
banned_until_readable:
type: string
selectedGroups:
type: array
items:
type: object
properties:
name:
type: string
slug:
type: string
labelColor:
type: string
textColor:
type: string
icon:
type: string
userTitle:
type: string
custom_profile_info:
type: array
items: {}
bookmarked:
type: boolean
upvoted:
type: boolean
downvoted:
type: boolean
selfPost:
type: boolean
display_edit_tools:
type: boolean
display_delete_tools:
type: boolean
display_moderator_tools:
type: boolean
display_move_tools:
type: boolean
display_post_menu:
type: boolean
toPid:
type: number
parent:
type: object
properties:
username:
type: string
description: A friendly name for a given user account
tagWhitelist:
type: array
items: {}
thread_tools:
type: array
items:
type: object
properties:
class:
type: string
title:
type: string
icon:
type: string
isFollowing:
type: boolean
isNotFollowing:
type: boolean
isIgnoring:
type: boolean
bookmark:
nullable: true
postSharing:
type: array
items:
type: object
properties:
id:
type: string
name:
type: string
class:
type: string
activated:
type: boolean
deleter:
nullable: true
merger:
nullable: true
related:
type: array
items: {}
unreplied:
type: boolean
icons:
type: array
items: {}
privileges:
type: object
properties:
topics:reply:
type: boolean
topics:read:
type: boolean
topics:tag:
type: boolean
topics:delete:
type: boolean
posts:edit:
type: boolean
posts:history:
type: boolean
posts:delete:
type: boolean
posts:view_deleted:
type: boolean
read:
type: boolean
purge:
type: boolean
view_thread_tools:
type: boolean
editable:
type: boolean
deletable:
type: boolean
view_deleted:
type: boolean
isAdminOrMod:
type: boolean
disabled:
type: number
tid:
type: string
uid:
type: number
description: A user identifier
topicStaleDays:
type: number
reputation:disabled:
type: number
downvote:disabled:
type: number
feeds:disableRSS:
type: number
bookmarkThreshold:
type: number
postEditDuration:
type: number
postDeleteDuration:
type: number
scrollToMyPost:
type: boolean
allowMultipleBadges:
type: boolean
privateUploads:
type: boolean
rssFeedUrl:
type: string
postIndex:
type: number
loggedInUser:
type: object
properties:
uid:
type: number
description: A user identifier
username:
type: string
description: A friendly name for a given user account
picture:
type: string
icon:text:
type: string
description: A single-letter representation of a username. This is used in the
auto-generated icon given to users without an
avatar
icon:bgColor:
type: string
description: A six-character hexadecimal colour code assigned to the user. This
value is used in conjunction with `icon:text` for
the user's auto-generated icon
example: "#f44336"
- $ref: components/schemas/Pagination.yaml#/Pagination
- $ref: components/schemas/Breadcrumbs.yaml#/Breadcrumbs
- $ref: components/schemas/CommonProps.yaml#/CommonProps
"/api/post/{pid}":
get:
tags:
- shorthand
summary: /api/post/{pid}
parameters:
- name: pid
in: path
required: true
schema:
type: string
responses:
"200":
description: ""
content:
application/json:
schema:
title: /topic/9995/cannot-post-or-reply-to-posts-in-nodebb-mobile-version/14?_=1574522486637&lang=en-US
type: undefined
text/plain:
schema:
title: /topic/9995/cannot-post-or-reply-to-posts-in-nodebb-mobile-version/14?_=1574522486637&lang=en-US
type: undefined
"404":
description: ""
content:
application/json:
schema:
type: string
example: Not Found
text/plain:
schema:
type: string
example: Not Found
/api/flags:
get:
tags:
- flags
summary: /api/flags
responses:
"200":
description: ""
content:
application/json:
schema:
allOf:
- type: object
properties:
flags:
type: array
items:
type: object
properties:
state:
type: string
flagId:
type: number
type:
type: string
targetId:
oneOf:
- type: string
- type: number
description:
type: string
uid:
type: number
description: A user identifier
datetime:
type: number
reporter:
type: object
properties:
username:
type: string
description: A friendly name for a given user account
picture:
nullable: true
type: string
icon:bgColor:
type: string
description: A six-character hexadecimal colour code assigned to the user. This
value is used in conjunction with
`icon:text` for the user's auto-generated
icon
example: "#f44336"
icon:text:
type: string
description: A single-letter representation of a username. This is used in the
auto-generated icon given to users without
an avatar
labelClass:
type: string
target_readable:
type: string
datetimeISO:
type: string
assignee:
type: string
analytics:
type: array
items:
type: number
categories:
type: object
properties:
"1":
type: string
"2":
type: string
"3":
type: string
"4":
type: string
"5":
type: string
"6":
type: string
"7":
type: string
"10":
type: string
"13":
type: string
"14":
type: string
"15":
type: string
"16":
type: string
"17":
type: string
"18":
type: string
"19":
type: string
"21":
type: string
"22":
type: string
"26":
type: string
hasFilter:
type: boolean
filters:
type: object
properties:
page:
type: number
perPage:
type: number
title:
type: string
- $ref: components/schemas/Pagination.yaml#/Pagination
- $ref: components/schemas/CommonProps.yaml#/CommonProps
"/api/flags/{flagId}":
get:
tags:
- flags
summary: /api/flags/{flagId}
parameters:
- name: flagId
in: path
required: true
schema:
type: string
responses:
"200":
description: ""
content:
application/json:
schema:
allOf:
- type: object
properties:
state:
type: string
flagId:
type: number
type:
type: string
targetId:
type: string
description:
type: string
uid:
type: number
description: A user identifier
datetime:
type: number
datetimeISO:
type: string
target_readable:
type: string
target:
type: object
properties: {}
history:
type: array
items:
type: object
properties:
uid:
type: number
description: A user identifier
fields:
type: object
properties:
state:
type: string
datetime:
type: number
datetimeISO:
type: string
user:
type: object
properties:
username:
type: string
description: A friendly name for a given user account
userslug:
type: string
description: An URL-safe variant of the username (i.e. lower-cased, spaces
removed, etc.)
picture:
nullable: true
uid:
type: number
description: A user identifier
icon:text:
type: string
description: A single-letter representation of a username. This is used in the
auto-generated icon given to users without
an avatar
icon:bgColor:
type: string
description: A six-character hexadecimal colour code assigned to the user. This
value is used in conjunction with
`icon:text` for the user's auto-generated
icon
example: "#f44336"
notes:
type: array
items: {}
reporter:
type: object
properties:
username:
type: string
description: A friendly name for a given user account
userslug:
type: string
description: An URL-safe variant of the username (i.e. lower-cased, spaces
removed, etc.)
picture:
nullable: true
reputation:
type: number
uid:
type: number
description: A user identifier
icon:text:
type: string
description: A single-letter representation of a username. This is used in the
auto-generated icon given to users without an
avatar
icon:bgColor:
type: string
description: A six-character hexadecimal colour code assigned to the user. This
value is used in conjunction with `icon:text` for
the user's auto-generated icon
example: "#f44336"
type_path:
type: string
assignees:
type: array
items:
$ref: components/schemas/UserObject.yaml#/UserObject
type_bool:
type: object
properties:
post:
type: boolean
user:
type: boolean
empty:
type: boolean
title:
type: string
categories:
type: object
additionalProperties:
type: string
- $ref: components/schemas/CommonProps.yaml#/CommonProps
/api/post-queue:
get:
tags:
- admin
summary: /api/post-queue
responses:
"200":
description: ""
content:
application/json:
schema:
allOf:
- type: object
properties:
title:
type: string
posts:
type: array
items:
allOf:
- type: object
properties:
id:
type: string
uid:
type: number
description: A user identifier
type:
type: string
data:
type: object
properties:
title:
type: string
content:
type: string
thumb:
type: string
cid:
oneOf:
- type: number
- type: string
tags:
type: array
items: {}
uid:
type: number
description: A user identifier
req:
type: object
properties:
uid:
type: number
description: A user identifier
ip:
type: string
host:
type: string
protocol:
type: string
secure:
type: boolean
url:
type: string
path:
type: string
headers:
type: object
properties:
x-real-ip:
type: string
x-forwarded-for:
type: string
x-forwarded-proto:
type: string
host:
type: string
x-nginx-proxy:
type: string
connection:
type: string
accept:
type: string
user-agent:
type: string
sec-fetch-site:
type: string
sec-fetch-mode:
type: string
referer:
type: string
accept-encoding:
type: string
accept-language:
type: string
cookie:
type: string
timestamp:
type: number
fromQueue:
type: boolean
timestampISO:
type: string
description: An ISO 8601 formatted date string (complementing `timestamp`)
rawContent:
type: string
tid:
type: number
description: A topic identifier
toPid:
nullable: true
user:
type: object
properties:
username:
type: string
description: A friendly name for a given user account
userslug:
type: string
description: An URL-safe variant of the username (i.e. lower-cased, spaces
removed, etc.)
picture:
nullable: true
type: string
uid:
type: number
description: A user identifier
icon:text:
type: string
description: A single-letter representation of a username. This is used in the
auto-generated icon given to users without
an avatar
icon:bgColor:
type: string
description: A six-character hexadecimal colour code assigned to the user. This
value is used in conjunction with
`icon:text` for the user's auto-generated
icon
example: "#f44336"
topic:
type: object
properties:
cid:
type: number
title:
type: string
titleRaw:
type: string
- $ref: components/schemas/CategoryObject.yaml#/CategoryObject
- $ref: components/schemas/Pagination.yaml#/Pagination
- $ref: components/schemas/CommonProps.yaml#/CommonProps
/api/ip-blacklist:
get:
tags:
- admin
summary: /api/ip-blacklist
responses: {}
/api/registration-queue:
get:
tags:
- admin
summary: /api/registration-queue
responses: {}
"/api/tags/{tag}":
get:
tags:
- tags
summary: /api/tags/{tag}
description: Returns a list of topics that are tagged with {tag}
parameters:
- name: tag
description: The tag used to retrieve the topics
in: path
required: true
schema:
type: string
- name: page
description: Page number used in pagination
in: query
required: false
schema:
type: number
responses:
"200":
description: ""
content:
application/json:
schema:
allOf:
- type: object
properties:
topics:
type: array
description: An array of topics that are all tagged with {tag}
items:
type: object
properties:
tid:
type: number
description: A topic identifier
uid:
type: number
description: A user identifier
cid:
type: number
description: A category identifier
mainPid:
type: number
description: The post id of the first post in this topic (also called the
"original post")
title:
type: string
slug:
type: string
timestamp:
type: number
lastposttime:
type: number
postcount:
type: number
viewcount:
type: number
teaserPid:
oneOf:
- type: number
- type: string
deleted:
type: number
locked:
type: number
pinned:
type: number
description: Whether or not this particular topic is pinned to the top of the
category
upvotes:
type: number
downvotes:
type: number
titleRaw:
type: string
timestampISO:
type: string
description: An ISO 8601 formatted date string (complementing `timestamp`)
lastposttimeISO:
type: string
votes:
type: number
category:
type: object
properties:
cid:
type: number
description: A category identifier
name:
type: string
slug:
type: string
icon:
type: string
image:
nullable: true
imageClass:
nullable: true
type: string
bgColor:
type: string
color:
type: string
disabled:
type: number
user:
type: object
properties:
uid:
type: number
description: A user identifier
username:
type: string
description: A friendly name for a given user account
userslug:
type: string
description: An URL-safe variant of the username (i.e. lower-cased, spaces
removed, etc.)
reputation:
type: number
postcount:
type: number
picture:
nullable: true
type: string
signature:
nullable: true
type: string
banned:
type: number
status:
type: string
icon:text:
type: string
description: A single-letter representation of a username. This is used in the
auto-generated icon given to users without
an avatar
icon:bgColor:
type: string
description: A six-character hexadecimal colour code assigned to the user. This
value is used in conjunction with
`icon:text` for the user's auto-generated
icon
example: "#f44336"
banned_until_readable:
type: string
fullname:
type: string
teaser:
type: object
properties:
pid:
type: number
uid:
type: number
description: A user identifier
timestamp:
type: number
tid:
type: number
description: A topic identifier
content:
type: string
timestampISO:
type: string
description: An ISO 8601 formatted date string (complementing `timestamp`)
user:
type: object
properties:
uid:
type: number
description: A user identifier
username:
type: string
description: A friendly name for a given user account
userslug:
type: string
description: An URL-safe variant of the username (i.e. lower-cased, spaces
removed, etc.)
picture:
nullable: true
type: string
icon:text:
type: string
description: A single-letter representation of a username. This is used in the
auto-generated icon given to users
without an avatar
icon:bgColor:
type: string
description: A six-character hexadecimal colour code assigned to the user. This
value is used in conjunction with
`icon:text` for the user's
auto-generated icon
example: "#f44336"
index:
type: number
tags:
type: array
items:
type: object
properties:
value:
type: string
valueEscaped:
type: string
color:
type: string
bgColor:
type: string
score:
type: number
isOwner:
type: boolean
ignored:
type: boolean
unread:
type: boolean
bookmark:
nullable: true
unreplied:
type: boolean
icons:
type: array
items: {}
index:
type: number
thumb:
type: string
isQuestion:
nullable: true
type: number
isSolved:
type: number
tag:
type: string
title:
type: string
categories:
type: array
items:
type: object
properties:
cid:
type: number
description: A category identifier
name:
type: string
level:
type: string
icon:
type: string
parentCid:
type: number
description: The category identifier for the category that is the immediate
ancestor of the current category
color:
type: string
bgColor:
type: string
selected:
type: boolean
imageClass:
type: string
rssFeedUrl:
type: string
- $ref: components/schemas/Pagination.yaml#/Pagination
- $ref: components/schemas/Breadcrumbs.yaml#/Breadcrumbs
- $ref: components/schemas/CommonProps.yaml#/CommonProps
/api/tags:
get:
tags:
- tags
summary: /api/tags
description: Returns a list of tags sorted by the most topics
responses:
"200":
description: ""
content:
application/json:
schema:
allOf:
- type: object
properties:
tags:
type: array
description: An array of tags sorted by the most topics
items:
type: object
properties:
value:
type: string
description: The raw tag
score:
type: number
description: Number of topics tagged by this tag
valueEscaped:
type: string
description: This is the escaped tag value, equal to validator.escape(value)
color:
type: string
bgColor:
type: string
displayTagSearch:
type: boolean
nextStart:
type: number
title:
type: string
- $ref: components/schemas/Breadcrumbs.yaml#/Breadcrumbs
- $ref: components/schemas/CommonProps.yaml#/CommonProps
/api/popular:
get:
tags:
- topics
summary: Popular Topics
description: Returns a list of topics sorted by most replies. In an event of a
tie breaker, the topic with the most views. Can be filtered by All Time,
Day, Week, or Month.
responses:
"200":
description: An array of topic objects sorted by most replies and views.
content:
application/json:
schema:
allOf:
- type: object
properties:
nextStart:
type: number
topicCount:
type: number
topics:
type: array
items:
type: object
properties:
tid:
type: number
description: A topic identifier
uid:
type: number
description: A user identifier
cid:
type: number
description: A category identifier
title:
type: string
slug:
type: string
timestamp:
type: number
lastposttime:
type: number
postcount:
type: number
viewcount:
type: number
pinned:
type: number
description: Whether or not this particular topic is pinned to the top of the
category
thumb:
type: string
mainPid:
type: number
description: The post id of the first post in this topic (also called the
"original post")
teaserPid:
oneOf:
- type: number
- type: string
upvotes:
type: number
downvotes:
type: number
deleted:
type: number
locked:
type: number
titleRaw:
type: string
timestampISO:
type: string
description: An ISO 8601 formatted date string (complementing `timestamp`)
lastposttimeISO:
type: string
votes:
type: number
category:
type: object
properties:
cid:
type: number
description: A category identifier
name:
type: string
slug:
type: string
icon:
type: string
image:
nullable: true
imageClass:
nullable: true
bgColor:
type: string
color:
type: string
disabled:
type: number
user:
type: object
properties:
uid:
type: number
description: A user identifier
username:
type: string
description: A friendly name for a given user account
fullname:
type: string
userslug:
type: string
description: An URL-safe variant of the username (i.e. lower-cased, spaces
removed, etc.)
reputation:
type: number
postcount:
type: number
picture:
nullable: true
type: string
signature:
nullable: true
type: string
banned:
type: number
status:
type: string
icon:text:
type: string
description: A single-letter representation of a username. This is used in the
auto-generated icon given to users without
an avatar
icon:bgColor:
type: string
description: A six-character hexadecimal colour code assigned to the user. This
value is used in conjunction with
`icon:text` for the user's auto-generated
icon
example: "#f44336"
banned_until_readable:
type: string
teaser:
type: object
properties:
pid:
type: number
uid:
type: number
description: A user identifier
timestamp:
type: number
tid:
type: number
description: A topic identifier
content:
type: string
timestampISO:
type: string
description: An ISO 8601 formatted date string (complementing `timestamp`)
user:
type: object
properties:
uid:
type: number
description: A user identifier
username:
type: string
description: A friendly name for a given user account
userslug:
type: string
description: An URL-safe variant of the username (i.e. lower-cased, spaces
removed, etc.)
picture:
nullable: true
type: string
icon:text:
type: string
description: A single-letter representation of a username. This is used in the
auto-generated icon given to users
without an avatar
icon:bgColor:
type: string
description: A six-character hexadecimal colour code assigned to the user. This
value is used in conjunction with
`icon:text` for the user's
auto-generated icon
example: "#f44336"
index:
type: number
tags:
type: array
items:
type: object
properties:
value:
type: string
valueEscaped:
type: string
color:
type: string
bgColor:
type: string
score:
type: number
isOwner:
type: boolean
ignored:
type: boolean
unread:
type: boolean
bookmark:
nullable: true
unreplied:
type: boolean
icons:
type: array
items: {}
index:
type: number
tids:
type: array
items:
type: number
canPost:
type: boolean
categories:
type: array
items:
type: object
properties:
cid:
type: number
description: A category identifier
name:
type: string
level:
type: string
icon:
type: string
parentCid:
type: number
description: The category identifier for the category that is the immediate
ancestor of the current category
color:
type: string
bgColor:
type: string
selected:
type: boolean
imageClass:
type: string
allCategoriesUrl:
type: string
selectedCids:
type: array
items: {}
feeds:disableRSS:
type: number
rssFeedUrl:
type: string
title:
type: string
filters:
type: array
items:
type: object
properties:
name:
type: string
url:
type: string
selected:
type: boolean
filter:
type: string
selectedFilter:
type: object
properties:
name:
type: string
url:
type: string
selected:
type: boolean
filter:
type: string
terms:
type: array
items:
type: object
properties:
name:
type: string
url:
type: string
selected:
type: boolean
term:
type: string
selectedTerm:
type: object
properties:
name:
type: string
url:
type: string
selected:
type: boolean
term:
type: string
- $ref: components/schemas/Pagination.yaml#/Pagination
- $ref: components/schemas/Breadcrumbs.yaml#/Breadcrumbs
- $ref: components/schemas/CommonProps.yaml#/CommonProps
/api/recent:
get:
tags:
- topics
summary: Recent Topics
description: Returns a list of topics sorted by timestamp.
responses:
"200":
description: An array of topic objects sorted by timestamp.
content:
application/json:
schema:
allOf:
- type: object
properties:
nextStart:
type: number
topicCount:
type: number
topics:
type: array
items:
type: object
properties:
tid:
type: number
description: A topic identifier
uid:
type: number
description: A user identifier
cid:
type: number
description: A category identifier
mainPid:
type: number
description: The post id of the first post in this topic (also called the
"original post")
title:
type: string
slug:
type: string
timestamp:
type: number
lastposttime:
type: number
postcount:
type: number
viewcount:
type: number
teaserPid:
type: number
upvotes:
type: number
downvotes:
type: number
deleted:
type: number
locked:
type: number
pinned:
type: number
description: Whether or not this particular topic is pinned to the top of the
category
titleRaw:
type: string
timestampISO:
type: string
description: An ISO 8601 formatted date string (complementing `timestamp`)
lastposttimeISO:
type: string
votes:
type: number
category:
type: object
properties:
cid:
type: number
description: A category identifier
name:
type: string
slug:
type: string
icon:
type: string
image:
nullable: true
imageClass:
nullable: true
type: string
bgColor:
type: string
color:
type: string
disabled:
type: number
user:
type: object
properties:
uid:
type: number
description: A user identifier
username:
type: string
description: A friendly name for a given user account
fullname:
type: string
userslug:
type: string
description: An URL-safe variant of the username (i.e. lower-cased, spaces
removed, etc.)
reputation:
type: number
postcount:
type: number
picture:
nullable: true
type: string
signature:
nullable: true
type: string
banned:
type: number
status:
type: string
icon:text:
type: string
description: A single-letter representation of a username. This is used in the
auto-generated icon given to users without
an avatar
icon:bgColor:
type: string
description: A six-character hexadecimal colour code assigned to the user. This
value is used in conjunction with
`icon:text` for the user's auto-generated
icon
example: "#f44336"
banned_until_readable:
type: string
teaser:
type: object
properties:
pid:
type: number
uid:
type: number
description: A user identifier
timestamp:
type: number
tid:
type: number
description: A topic identifier
content:
type: string
timestampISO:
type: string
description: An ISO 8601 formatted date string (complementing `timestamp`)
user:
type: object
properties:
uid:
type: number
description: A user identifier
username:
type: string
description: A friendly name for a given user account
userslug:
type: string
description: An URL-safe variant of the username (i.e. lower-cased, spaces
removed, etc.)
picture:
nullable: true
type: string
icon:text:
type: string
description: A single-letter representation of a username. This is used in the
auto-generated icon given to users
without an avatar
icon:bgColor:
type: string
description: A six-character hexadecimal colour code assigned to the user. This
value is used in conjunction with
`icon:text` for the user's
auto-generated icon
example: "#f44336"
index:
type: number
tags:
type: array
items:
type: object
properties:
value:
type: string
valueEscaped:
type: string
color:
type: string
bgColor:
type: string
score:
type: number
isOwner:
type: boolean
ignored:
type: boolean
unread:
type: boolean
bookmark:
nullable: true
unreplied:
type: boolean
icons:
type: array
items: {}
index:
type: number
thumb:
type: string
isQuestion:
nullable: true
tids:
type: array
items:
type: number
canPost:
type: boolean
categories:
type: array
items:
type: object
properties:
cid:
type: number
description: A category identifier
name:
type: string
level:
type: string
icon:
type: string
parentCid:
type: number
description: The category identifier for the category that is the immediate
ancestor of the current category
color:
type: string
bgColor:
type: string
selected:
type: boolean
imageClass:
type: string
allCategoriesUrl:
type: string
selectedCids:
type: array
items: {}
feeds:disableRSS:
type: number
rssFeedUrl:
type: string
title:
type: string
filters:
type: array
items:
type: object
properties:
name:
type: string
url:
type: string
selected:
type: boolean
filter:
type: string
selectedFilter:
type: object
properties:
name:
type: string
url:
type: string
selected:
type: boolean
filter:
type: string
terms:
type: array
items:
type: object
properties:
name:
type: string
url:
type: string
selected:
type: boolean
term:
type: string
selectedTerm:
type: object
properties:
name:
type: string
url:
type: string
selected:
type: boolean
term:
type: string
- $ref: components/schemas/Pagination.yaml#/Pagination
- $ref: components/schemas/Breadcrumbs.yaml#/Breadcrumbs
- $ref: components/schemas/CommonProps.yaml#/CommonProps
/api/top:
get:
tags:
- topics
summary: Top Topics
description: Returns a list of topics sorted by most upvotes.
responses:
"200":
description: An array of topic objects sorted by most upvotes.
content:
application/json:
schema:
allOf:
- type: object
properties:
nextStart:
type: number
topicCount:
type: number
topics:
type: array
items:
type: object
properties:
tid:
type: number
description: A topic identifier
uid:
type: number
description: A user identifier
cid:
type: number
description: A category identifier
mainPid:
type: number
description: The post id of the first post in this topic (also called the
"original post")
title:
type: string
slug:
type: string
timestamp:
type: number
lastposttime:
type: number
postcount:
type: number
viewcount:
type: number
teaserPid:
type: string
upvotes:
type: number
downvotes:
type: number
deleted:
type: number
locked:
type: number
pinned:
type: number
description: Whether or not this particular topic is pinned to the top of the
category
titleRaw:
type: string
timestampISO:
type: string
description: An ISO 8601 formatted date string (complementing `timestamp`)
lastposttimeISO:
type: string
votes:
type: number
category:
type: object
properties:
cid:
type: number
description: A category identifier
name:
type: string
slug:
type: string
icon:
type: string
image:
nullable: true
imageClass:
nullable: true
bgColor:
type: string
color:
type: string
disabled:
type: number
user:
type: object
properties:
uid:
type: number
description: A user identifier
username:
type: string
description: A friendly name for a given user account
userslug:
type: string
description: An URL-safe variant of the username (i.e. lower-cased, spaces
removed, etc.)
reputation:
type: number
postcount:
type: number
picture:
nullable: true
type: string
signature:
nullable: true
type: string
banned:
type: number
status:
type: string
icon:text:
type: string
description: A single-letter representation of a username. This is used in the
auto-generated icon given to users without
an avatar
icon:bgColor:
type: string
description: A six-character hexadecimal colour code assigned to the user. This
value is used in conjunction with
`icon:text` for the user's auto-generated
icon
example: "#f44336"
banned_until_readable:
type: string
fullname:
type: string
teaser:
type: object
properties:
pid:
type: number
uid:
type: number
description: A user identifier
timestamp:
type: number
tid:
type: number
description: A topic identifier
content:
type: string
timestampISO:
type: string
description: An ISO 8601 formatted date string (complementing `timestamp`)
user:
type: object
properties:
uid:
type: number
description: A user identifier
username:
type: string
description: A friendly name for a given user account
userslug:
type: string
description: An URL-safe variant of the username (i.e. lower-cased, spaces
removed, etc.)
picture:
nullable: true
type: string
icon:text:
type: string
description: A single-letter representation of a username. This is used in the
auto-generated icon given to users
without an avatar
icon:bgColor:
type: string
description: A six-character hexadecimal colour code assigned to the user. This
value is used in conjunction with
`icon:text` for the user's
auto-generated icon
example: "#f44336"
index:
type: number
tags:
type: array
items:
type: object
properties:
value:
type: string
valueEscaped:
type: string
color:
type: string
bgColor:
type: string
score:
type: number
isOwner:
type: boolean
ignored:
type: boolean
unread:
type: boolean
bookmark:
nullable: true
unreplied:
type: boolean
icons:
type: array
items: {}
index:
type: number
thumb:
type: string
tids:
type: array
items:
type: number
canPost:
type: boolean
categories:
type: array
items:
type: object
properties:
cid:
type: number
description: A category identifier
name:
type: string
level:
type: string
icon:
type: string
parentCid:
type: number
description: The category identifier for the category that is the immediate
ancestor of the current category
color:
type: string
bgColor:
type: string
selected:
type: boolean
imageClass:
type: string
allCategoriesUrl:
type: string
selectedCategory:
type: object
properties:
cid:
type: number
description: A category identifier
name:
type: string
level:
type: string
icon:
type: string
parentCid:
type: number
description: The category identifier for the category that is the immediate
ancestor of the current category
color:
type: string
bgColor:
type: string
selected:
type: boolean
selectedCids:
type: array
items:
type: number
feeds:disableRSS:
type: number
rssFeedUrl:
type: string
title:
type: string
filters:
type: array
items:
type: object
properties:
name:
type: string
url:
type: string
selected:
type: boolean
filter:
type: string
selectedFilter:
type: object
properties:
name:
type: string
url:
type: string
selected:
type: boolean
filter:
type: string
terms:
type: array
items:
type: object
properties:
name:
type: string
url:
type: string
selected:
type: boolean
term:
type: string
selectedTerm:
type: object
properties:
name:
type: string
url:
type: string
selected:
type: boolean
term:
type: string
- $ref: components/schemas/Pagination.yaml#/Pagination
- $ref: components/schemas/Breadcrumbs.yaml#/Breadcrumbs
- $ref: components/schemas/CommonProps.yaml#/CommonProps
/api/unread:
get:
tags:
- topics
summary: Unread Topics
description: Returns a list of the current user's unread topics, sorted by the
last post's timestamp.
responses:
"200":
description: An array of unread topic objects sorted by the last post's timestamp.
content:
application/json:
schema:
allOf:
- type: object
properties:
showSelect:
type: boolean
nextStart:
type: number
topics:
type: array
items:
type: object
properties:
tid:
type: number
description: A topic identifier
uid:
type: number
description: A user identifier
cid:
type: number
description: A category identifier
mainPid:
type: number
description: The post id of the first post in this topic (also called the
"original post")
title:
type: string
slug:
type: string
timestamp:
type: number
lastposttime:
type: number
postcount:
type: number
viewcount:
type: number
teaserPid:
type: number
upvotes:
type: number
downvotes:
type: number
deleted:
type: number
locked:
type: number
pinned:
type: number
description: Whether or not this particular topic is pinned to the top of the
category
titleRaw:
type: string
timestampISO:
type: string
description: An ISO 8601 formatted date string (complementing `timestamp`)
lastposttimeISO:
type: string
votes:
type: number
category:
type: object
properties:
cid:
type: number
description: A category identifier
name:
type: string
slug:
type: string
icon:
type: string
image:
nullable: true
imageClass:
nullable: true
type: string
bgColor:
type: string
color:
type: string
disabled:
type: number
user:
type: object
properties:
uid:
type: number
description: A user identifier
username:
type: string
description: A friendly name for a given user account
fullname:
type: string
userslug:
type: string
description: An URL-safe variant of the username (i.e. lower-cased, spaces
removed, etc.)
reputation:
type: number
postcount:
type: number
picture:
nullable: true
type: string
signature:
nullable: true
type: string
banned:
type: number
status:
type: string
icon:text:
type: string
description: A single-letter representation of a username. This is used in the
auto-generated icon given to users without
an avatar
icon:bgColor:
type: string
description: A six-character hexadecimal colour code assigned to the user. This
value is used in conjunction with
`icon:text` for the user's auto-generated
icon
example: "#f44336"
banned_until_readable:
type: string
teaser:
type: object
properties:
pid:
type: number
uid:
type: number
description: A user identifier
timestamp:
type: number
tid:
type: number
description: A topic identifier
content:
type: string
timestampISO:
type: string
description: An ISO 8601 formatted date string (complementing `timestamp`)
user:
type: object
properties:
uid:
type: number
description: A user identifier
username:
type: string
description: A friendly name for a given user account
userslug:
type: string
description: An URL-safe variant of the username (i.e. lower-cased, spaces
removed, etc.)
picture:
nullable: true
type: string
icon:text:
type: string
description: A single-letter representation of a username. This is used in the
auto-generated icon given to users
without an avatar
icon:bgColor:
type: string
description: A six-character hexadecimal colour code assigned to the user. This
value is used in conjunction with
`icon:text` for the user's
auto-generated icon
example: "#f44336"
index:
type: number
tags:
type: array
items:
type: object
properties:
value:
type: string
valueEscaped:
type: string
color:
type: string
bgColor:
type: string
score:
type: number
isOwner:
type: boolean
ignored:
type: boolean
unread:
type: boolean
bookmark:
nullable: true
unreplied:
type: boolean
icons:
type: array
items: {}
index:
type: number
isQuestion:
nullable: true
topicCount:
type: number
title:
type: string
pageCount:
type: number
categories:
type: array
items:
type: object
properties:
cid:
type: number
description: A category identifier
name:
type: string
level:
type: string
icon:
type: string
parentCid:
type: number
description: The category identifier for the category that is the immediate
ancestor of the current category
color:
type: string
bgColor:
type: string
selected:
type: boolean
imageClass:
type: string
allCategoriesUrl:
type: string
selectedCids:
type: array
items: {}
filters:
type: array
items:
type: object
properties:
name:
type: string
url:
type: string
selected:
type: boolean
filter:
type: string
selectedFilter:
type: object
properties:
name:
type: string
url:
type: string
selected:
type: boolean
filter:
type: string
- $ref: components/schemas/Pagination.yaml#/Pagination
- $ref: components/schemas/Breadcrumbs.yaml#/Breadcrumbs
- $ref: components/schemas/CommonProps.yaml#/CommonProps
"/api/category/{category_id}/{slug}/{topic_index}":
get:
tags:
- categories
summary: /api/category/{category_id}/{slug}/{topic_index}
parameters:
- name: category_id
in: path
required: true
schema:
type: string
- name: slug
in: path
required: true
schema:
type: string
- name: topic_index
in: path
required: true
schema:
type: string
responses:
"200":
description: ""
content:
application/json:
schema:
allOf:
- $ref: components/schemas/CategoryObject.yaml#/CategoryObject
- type: object
properties:
tagWhitelist:
type: array
items: {}
unread-class:
type: string
children:
type: array
items:
$ref: components/schemas/CategoryObject.yaml#/CategoryObject
topics:
type: array
items:
type: object
properties:
tid:
type: number
description: A topic identifier
uid:
type: number
description: A user identifier
cid:
type: number
description: A category identifier
title:
type: string
slug:
type: string
timestamp:
type: number
lastposttime:
type: number
postcount:
type: number
viewcount:
type: number
thumb:
type: string
mainPid:
type: number
description: The post id of the first post in this topic (also called the
"original post")
upvotes:
type: number
downvotes:
type: number
deleted:
type: number
locked:
type: number
pinned:
type: number
description: Whether or not this particular topic is pinned to the top of the
category
titleRaw:
type: string
timestampISO:
type: string
description: An ISO 8601 formatted date string (complementing `timestamp`)
lastposttimeISO:
type: string
votes:
type: number
category:
type: object
properties:
cid:
type: number
description: A category identifier
name:
type: string
slug:
type: string
icon:
type: string
image:
nullable: true
imageClass:
nullable: true
bgColor:
type: string
color:
type: string
disabled:
type: number
user:
type: object
properties:
uid:
type: number
description: A user identifier
username:
type: string
description: A friendly name for a given user account
userslug:
type: string
description: An URL-safe variant of the username (i.e. lower-cased, spaces
removed, etc.)
reputation:
type: number
postcount:
type: number
picture:
nullable: true
type: string
signature:
nullable: true
type: string
banned:
type: number
status:
type: string
icon:text:
type: string
description: A single-letter representation of a username. This is used in the
auto-generated icon given to users without
an avatar
icon:bgColor:
type: string
description: A six-character hexadecimal colour code assigned to the user. This
value is used in conjunction with
`icon:text` for the user's auto-generated
icon
example: "#f44336"
banned_until_readable:
type: string
fullname:
type: string
teaser:
type: object
properties:
pid:
type: number
uid:
type: number
description: A user identifier
timestamp:
type: number
tid:
type: number
description: A topic identifier
content:
type: string
timestampISO:
type: string
description: An ISO 8601 formatted date string (complementing `timestamp`)
user:
type: object
properties:
uid:
type: number
description: A user identifier
username:
type: string
description: A friendly name for a given user account
userslug:
type: string
description: An URL-safe variant of the username (i.e. lower-cased, spaces
removed, etc.)
picture:
nullable: true
type: string
icon:text:
type: string
description: A single-letter representation of a username. This is used in the
auto-generated icon given to users
without an avatar
icon:bgColor:
type: string
description: A six-character hexadecimal colour code assigned to the user. This
value is used in conjunction with
`icon:text` for the user's
auto-generated icon
example: "#f44336"
index:
type: number
tags:
type: array
items: {}
isOwner:
type: boolean
ignored:
type: boolean
unread:
type: boolean
bookmark:
nullable: true
unreplied:
type: boolean
icons:
type: array
items: {}
index:
type: number
teaserPid:
type: number
nextStart:
type: number
isWatched:
type: boolean
isNotWatched:
type: boolean
isIgnored:
type: boolean
title:
type: string
privileges:
type: object
properties:
topics:create:
type: boolean
topics:read:
type: boolean
topics:tag:
type: boolean
read:
type: boolean
cid:
type: string
uid:
type: number
description: A user identifier
editable:
type: boolean
view_deleted:
type: boolean
isAdminOrMod:
type: boolean
showSelect:
type: boolean
rssFeedUrl:
type: string
feeds:disableRSS:
type: number
reputation:disabled:
type: number
- $ref: components/schemas/Pagination.yaml#/Pagination
- $ref: components/schemas/Breadcrumbs.yaml#/Breadcrumbs
- $ref: components/schemas/CommonProps.yaml#/CommonProps
"/api/category/{category_id}/{slug?}":
get:
tags:
- categories
summary: /api/category/{category_id}/{slug?}
parameters:
- name: category_id
in: path
required: true
schema:
type: string
- name: slug?
in: path
required: true
schema:
type: string
responses:
"200":
description: ""
content:
application/json:
schema:
allOf:
- $ref: components/schemas/CategoryObject.yaml#/CategoryObject
- type: object
properties:
tagWhitelist:
type: array
items: {}
unread-class:
type: string
children:
type: array
items:
$ref: components/schemas/CategoryObject.yaml#/CategoryObject
topics:
type: array
items:
type: object
properties:
tid:
type: number
description: A topic identifier
uid:
type: number
description: A user identifier
cid:
type: number
description: A category identifier
title:
type: string
slug:
type: string
timestamp:
type: number
lastposttime:
type: number
postcount:
type: number
viewcount:
type: number
pinned:
type: number
description: Whether or not this particular topic is pinned to the top of the
category
thumb:
type: string
mainPid:
type: number
description: The post id of the first post in this topic (also called the
"original post")
teaserPid:
type: number
upvotes:
type: number
downvotes:
type: number
deleted:
type: number
locked:
type: number
titleRaw:
type: string
timestampISO:
type: string
description: An ISO 8601 formatted date string (complementing `timestamp`)
lastposttimeISO:
type: string
votes:
type: number
category:
type: object
properties:
cid:
type: number
description: A category identifier
name:
type: string
slug:
type: string
icon:
type: string
image:
nullable: true
imageClass:
nullable: true
bgColor:
type: string
color:
type: string
disabled:
type: number
user:
type: object
properties:
uid:
type: number
description: A user identifier
username:
type: string
description: A friendly name for a given user account
fullname:
type: string
userslug:
type: string
description: An URL-safe variant of the username (i.e. lower-cased, spaces
removed, etc.)
reputation:
type: number
postcount:
type: number
picture:
nullable: true
type: string
signature:
nullable: true
type: string
banned:
type: number
status:
type: string
icon:text:
type: string
description: A single-letter representation of a username. This is used in the
auto-generated icon given to users without
an avatar
icon:bgColor:
type: string
description: A six-character hexadecimal colour code assigned to the user. This
value is used in conjunction with
`icon:text` for the user's auto-generated
icon
example: "#f44336"
banned_until_readable:
type: string
teaser:
type: object
properties:
pid:
type: number
uid:
type: number
description: A user identifier
timestamp:
type: number
tid:
type: number
description: A topic identifier
content:
type: string
timestampISO:
type: string
description: An ISO 8601 formatted date string (complementing `timestamp`)
user:
type: object
properties:
uid:
type: number
description: A user identifier
username:
type: string
description: A friendly name for a given user account
userslug:
type: string
description: An URL-safe variant of the username (i.e. lower-cased, spaces
removed, etc.)
picture:
nullable: true
type: string
icon:text:
type: string
description: A single-letter representation of a username. This is used in the
auto-generated icon given to users
without an avatar
icon:bgColor:
type: string
description: A six-character hexadecimal colour code assigned to the user. This
value is used in conjunction with
`icon:text` for the user's
auto-generated icon
example: "#f44336"
index:
type: number
tags:
type: array
items:
type: object
properties:
value:
type: string
valueEscaped:
type: string
color:
type: string
bgColor:
type: string
score:
type: number
isOwner:
type: boolean
ignored:
type: boolean
unread:
type: boolean
bookmark:
nullable: true
unreplied:
type: boolean
icons:
type: array
items: {}
index:
type: number
isQuestion:
type: number
isSolved:
type: number
nextStart:
type: number
isWatched:
type: boolean
isNotWatched:
type: boolean
isIgnored:
type: boolean
title:
type: string
privileges:
type: object
properties:
topics:create:
type: boolean
topics:read:
type: boolean
topics:tag:
type: boolean
read:
type: boolean
cid:
type: string
uid:
type: number
description: A user identifier
editable:
type: boolean
view_deleted:
type: boolean
isAdminOrMod:
type: boolean
showSelect:
type: boolean
rssFeedUrl:
type: string
feeds:disableRSS:
type: number
reputation:disabled:
type: number
- $ref: components/schemas/Pagination.yaml#/Pagination
- $ref: components/schemas/Breadcrumbs.yaml#/Breadcrumbs
- $ref: components/schemas/CommonProps.yaml#/CommonProps
/api/me/*:
get:
tags:
- shorthand
summary: /api/me/*
responses: {}
"/api/uid/{uid*}":
get:
tags:
- shorthand
summary: /api/uid/{uid*}
parameters:
- name: uid*
in: path
required: true
schema:
type: string
responses:
"200":
description: ""
content:
application/json:
schema:
title: /user/the-penultimate-defenestrator
type: undefined
"/api/user/{userslug}":
get:
tags:
- users
summary: Get user profile
parameters:
- name: userslug
in: path
required: true
schema:
type: string
responses:
"200":
description: ""
content:
application/json:
schema:
allOf:
- $ref: components/schemas/UserObject.yaml#/UserObjectFull
- type: object
properties:
posts:
$ref: components/schemas/PostsObject.yaml#/PostsObject
latestPosts:
$ref: components/schemas/PostsObject.yaml#/PostsObject
bestPosts:
$ref: components/schemas/PostsObject.yaml#/PostsObject
hasPrivateChat:
type: number
title:
type: string
allowCoverPicture:
type: boolean
selectedGroup:
type: array
items:
type: object
properties:
name:
type: string
slug:
type: string
createtime:
type: number
userTitle:
type: string
description:
type: string
memberCount:
type: number
deleted:
type: string
hidden:
type: number
system:
type: number
private:
type: number
ownerUid:
type: number
icon:
type: string
labelColor:
type: string
cover:url:
type: string
cover:position:
type: string
userTitleEnabled:
type: number
disableJoinRequests:
type: number
disableLeave:
type: number
nameEncoded:
type: string
displayName:
type: string
textColor:
type: string
createtimeISO:
type: string
cover:thumb:url:
type: string
- $ref: components/schemas/Breadcrumbs.yaml#/Breadcrumbs
- $ref: components/schemas/CommonProps.yaml#/CommonProps
"/api/user/{userslug}/following":
get:
tags:
- users
summary: Get followed users
parameters:
- name: userslug
in: path
required: true
schema:
type: string
- name: page
in: query
schema:
type: number
responses:
"200":
description: ""
content:
application/json:
schema:
allOf:
- $ref: components/schemas/UserObject.yaml#/UserObjectFull
- type: object
properties:
title:
type: string
users:
type: array
items:
type: object
properties:
uid:
type: number
description: A user identifier
username:
type: string
description: A friendly name for a given user account
userslug:
type: string
description: An URL-safe variant of the username (i.e. lower-cased, spaces
removed, etc.)
picture:
nullable: true
type: string
status:
type: string
postcount:
type: number
reputation:
type: number
email:confirmed:
type: number
description: Whether the user has confirmed their email address or not
lastonline:
type: number
flags:
nullable: true
banned:
type: number
banned:expire:
type: number
joindate:
type: number
description: A UNIX timestamp representing the moment the user's account was
created
icon:text:
type: string
description: A single-letter representation of a username. This is used in the
auto-generated icon given to users without an
avatar
icon:bgColor:
type: string
description: A six-character hexadecimal colour code assigned to the user. This
value is used in conjunction with `icon:text`
for the user's auto-generated icon
example: "#f44336"
joindateISO:
type: string
lastonlineISO:
type: string
banned_until:
type: number
banned_until_readable:
type: string
administrator:
type: boolean
- $ref: components/schemas/Breadcrumbs.yaml#/Breadcrumbs
- $ref: components/schemas/Pagination.yaml#/Pagination
- $ref: components/schemas/CommonProps.yaml#/CommonProps
"/api/user/{userslug}/followers":
get:
tags:
- users
summary: Get followers
parameters:
- name: userslug
in: path
required: true
schema:
type: string
- name: page
in: query
schema:
type: number
responses:
"200":
description: ""
content:
application/json:
schema:
allOf:
- $ref: components/schemas/UserObject.yaml#/UserObjectFull
- type: object
properties:
title:
type: string
users:
type: array
items:
type: object
properties:
uid:
type: number
description: A user identifier
username:
type: string
description: A friendly name for a given user account
userslug:
type: string
description: An URL-safe variant of the username (i.e. lower-cased, spaces
removed, etc.)
picture:
nullable: true
type: string
status:
type: string
postcount:
type: number
reputation:
type: number
email:confirmed:
type: number
description: Whether the user has confirmed their email address or not
lastonline:
type: number
flags:
nullable: true
banned:
type: number
banned:expire:
type: number
joindate:
type: number
description: A UNIX timestamp representing the moment the user's account was
created
icon:text:
type: string
description: A single-letter representation of a username. This is used in the
auto-generated icon given to users without an
avatar
icon:bgColor:
type: string
description: A six-character hexadecimal colour code assigned to the user. This
value is used in conjunction with `icon:text`
for the user's auto-generated icon
example: "#f44336"
joindateISO:
type: string
lastonlineISO:
type: string
banned_until:
type: number
banned_until_readable:
type: string
administrator:
type: boolean
- $ref: components/schemas/Pagination.yaml#/Pagination
- $ref: components/schemas/Breadcrumbs.yaml#/Breadcrumbs
- $ref: components/schemas/CommonProps.yaml#/CommonProps
"/api/user/{userslug}/categories":
get:
tags:
- users
summary: /api/user/{userslug}/categories
parameters:
- name: userslug
in: path
required: true
schema:
type: string
responses:
"200":
description: ""
content:
application/json:
schema:
allOf:
- $ref: components/schemas/UserObject.yaml#/UserObjectFull
- type: object
properties:
categories:
type: array
items:
type: object
properties:
cid:
type: number
description: A category identifier
name:
type: string
level:
type: string
icon:
type: string
parentCid:
type: number
description: The category identifier for the category that is the immediate
ancestor of the current category
color:
type: string
bgColor:
type: string
descriptionParsed:
type: string
depth:
type: number
slug:
type: string
isIgnored:
type: boolean
isWatched:
type: boolean
isNotWatched:
type: boolean
imageClass:
type: string
title:
type: string
- $ref: components/schemas/CommonProps.yaml#/CommonProps
"/api/user/{userslug}/posts":
get:
tags:
- users
summary: /api/user/{userslug}/posts
parameters:
- name: userslug
in: path
required: true
schema:
type: string
responses:
"200":
description: ""
content:
application/json:
schema:
allOf:
- $ref: components/schemas/UserObject.yaml#/UserObjectFull
- type: object
properties:
posts:
type: array
items: {}
nextStart:
type: number
noItemsFoundKey:
type: string
title:
type: string
showSort:
type: boolean
sortOptions:
type: array
items:
type: object
properties:
url:
type: string
name:
type: string
selected:
type: boolean
- $ref: components/schemas/Pagination.yaml#/Pagination
- $ref: components/schemas/Breadcrumbs.yaml#/Breadcrumbs
- $ref: components/schemas/CommonProps.yaml#/CommonProps
"/api/user/{userslug}/topics":
get:
tags:
- users
summary: /api/user/{userslug}/topics
parameters:
- name: userslug
in: path
required: true
schema:
type: string
responses:
"200":
description: ""
content:
application/json:
schema:
allOf:
- $ref: components/schemas/UserObject.yaml#/UserObject
- type: object
properties:
age:
type: number
emailClass:
type: string
moderationNote:
type: string
isBlocked:
type: boolean
yourid:
type: number
theirid:
type: number
isTargetAdmin:
type: boolean
isAdmin:
type: boolean
isGlobalModerator:
type: boolean
isModerator:
type: boolean
isAdminOrGlobalModerator:
type: boolean
isAdminOrGlobalModeratorOrModerator:
type: boolean
isSelfOrAdminOrGlobalModerator:
type: boolean
canEdit:
type: boolean
canBan:
type: boolean
canChangePassword:
type: boolean
isSelf:
type: boolean
isFollowing:
type: boolean
showHidden:
type: boolean
groups:
type: array
items: {}
disableSignatures:
type: boolean
reputation:disabled:
type: boolean
downvote:disabled:
type: boolean
profile_links:
type: array
items: {}
sso:
type: array
items:
type: object
properties:
associated:
type: boolean
url:
type: string
name:
type: string
icon:
type: string
websiteLink:
type: string
websiteName:
type: string
username:disableEdit:
type: number
email:disableEdit:
type: number
topics:
type: array
items:
type: object
properties:
tid:
type: number
description: A topic identifier
uid:
type: number
description: A user identifier
cid:
type: number
description: A category identifier
title:
type: string
slug:
type: string
timestamp:
type: number
lastposttime:
type: number
postcount:
type: number
viewcount:
type: number
thumb:
type: string
mainPid:
type: number
description: The post id of the first post in this topic (also called the
"original post")
teaserPid:
type: number
upvotes:
type: number
downvotes:
type: number
deleted:
type: number
locked:
type: number
pinned:
type: number
description: Whether or not this particular topic is pinned to the top of the
category
titleRaw:
type: string
timestampISO:
type: string
description: An ISO 8601 formatted date string (complementing `timestamp`)
lastposttimeISO:
type: string
votes:
type: number
category:
type: object
properties:
cid:
type: number
description: A category identifier
name:
type: string
slug:
type: string
icon:
type: string
image:
nullable: true
imageClass:
nullable: true
bgColor:
type: string
color:
type: string
disabled:
type: number
user:
type: object
properties:
uid:
type: number
description: A user identifier
username:
type: string
description: A friendly name for a given user account
userslug:
type: string
description: An URL-safe variant of the username (i.e. lower-cased, spaces
removed, etc.)
reputation:
type: number
postcount:
type: number
picture:
nullable: true
signature:
type: string
banned:
type: number
status:
type: string
icon:text:
type: string
description: A single-letter representation of a username. This is used in the
auto-generated icon given to users without
an avatar
icon:bgColor:
type: string
description: A six-character hexadecimal colour code assigned to the user. This
value is used in conjunction with
`icon:text` for the user's auto-generated
icon
example: "#f44336"
banned_until_readable:
type: string
teaser:
type: object
properties:
pid:
type: number
uid:
type: number
description: A user identifier
timestamp:
type: number
tid:
type: number
description: A topic identifier
content:
type: string
timestampISO:
type: string
description: An ISO 8601 formatted date string (complementing `timestamp`)
user:
type: object
properties:
uid:
type: number
description: A user identifier
username:
type: string
description: A friendly name for a given user account
userslug:
type: string
description: An URL-safe variant of the username (i.e. lower-cased, spaces
removed, etc.)
picture:
nullable: true
type: string
icon:text:
type: string
description: A single-letter representation of a username. This is used in the
auto-generated icon given to users
without an avatar
icon:bgColor:
type: string
description: A six-character hexadecimal colour code assigned to the user. This
value is used in conjunction with
`icon:text` for the user's
auto-generated icon
example: "#f44336"
index:
type: number
tags:
type: array
items: {}
isOwner:
type: boolean
ignored:
type: boolean
unread:
type: boolean
bookmark:
nullable: true
unreplied:
type: boolean
icons:
type: array
items: {}
index:
type: number
nextStart:
type: number
noItemsFoundKey:
type: string
title:
type: string
showSort:
type: boolean
sortOptions:
type: array
items:
type: object
properties:
url:
type: string
name:
type: string
selected:
type: boolean
- $ref: components/schemas/Pagination.yaml#/Pagination
- $ref: components/schemas/Breadcrumbs.yaml#/Breadcrumbs
- $ref: components/schemas/CommonProps.yaml#/CommonProps
"/api/user/{userslug}/best":
get:
tags:
- users
summary: /api/user/{userslug}/best
parameters:
- name: userslug
in: path
required: true
schema:
type: string
responses:
"200":
description: ""
content:
application/json:
schema:
allOf:
- $ref: components/schemas/UserObject.yaml#/UserObjectFull
- type: object
properties:
posts:
$ref: components/schemas/PostsObject.yaml#/PostsObject
nextStart:
type: number
noItemsFoundKey:
type: string
title:
type: string
showSort:
type: boolean
sortOptions:
type: array
items:
type: object
properties:
url:
type: string
name:
type: string
selected:
type: boolean
- $ref: components/schemas/Pagination.yaml#/Pagination
- $ref: components/schemas/Breadcrumbs.yaml#/Breadcrumbs
- $ref: components/schemas/CommonProps.yaml#/CommonProps
"/api/user/{userslug}/groups":
get:
tags:
- users
summary: /api/user/{userslug}/groups
parameters:
- name: userslug
in: path
required: true
schema:
type: string
responses:
"200":
description: ""
content:
application/json:
schema:
allOf:
- $ref: components/schemas/UserObject.yaml#/UserObjectFull
- type: object
properties:
title:
type: string
template:
type: object
properties:
name:
type: string
account/groups:
type: boolean
"304":
description: ""
"/api/user/{userslug}/bookmarks":
get:
tags:
- users
summary: /api/user/{userslug}/bookmarks
parameters:
- name: userslug
in: path
required: true
schema:
type: string
responses:
"200":
description: ""
content:
application/json:
schema:
allOf:
- $ref: components/schemas/UserObject.yaml#/UserObject
- type: object
properties:
age:
type: number
emailClass:
type: string
ips:
type: array
items:
type: string
moderationNote:
type: string
isBlocked:
type: boolean
blocksCount:
type: number
yourid:
type: number
theirid:
type: number
isTargetAdmin:
type: boolean
isAdmin:
type: boolean
isGlobalModerator:
type: boolean
isModerator:
type: boolean
isAdminOrGlobalModerator:
type: boolean
isAdminOrGlobalModeratorOrModerator:
type: boolean
isSelfOrAdminOrGlobalModerator:
type: boolean
canEdit:
type: boolean
canBan:
type: boolean
canChangePassword:
type: boolean
isSelf:
type: boolean
isFollowing:
type: boolean
showHidden:
type: boolean
groups:
type: array
items: {}
disableSignatures:
type: boolean
reputation:disabled:
type: boolean
downvote:disabled:
type: boolean
profile_links:
type: array
items:
type: object
properties:
id:
type: string
route:
type: string
name:
type: string
visibility:
type: object
properties:
self:
type: boolean
other:
type: boolean
moderator:
type: boolean
globalMod:
type: boolean
admin:
type: boolean
canViewInfo:
type: boolean
public:
type: boolean
icon:
type: string
sso:
type: array
items:
type: object
properties:
associated:
type: boolean
url:
type: string
name:
type: string
icon:
type: string
websiteLink:
type: string
websiteName:
type: string
username:disableEdit:
type: number
email:disableEdit:
type: number
posts:
type: array
items: {}
nextStart:
type: number
noItemsFoundKey:
type: string
title:
type: string
showSort:
type: boolean
sortOptions:
type: array
items:
type: object
properties:
url:
type: string
name:
type: string
selected:
type: boolean
- $ref: components/schemas/Pagination.yaml#/Pagination
- $ref: components/schemas/Breadcrumbs.yaml#/Breadcrumbs
- $ref: components/schemas/CommonProps.yaml#/CommonProps
"/api/user/{userslug}/watched":
get:
tags:
- users
summary: /api/user/{userslug}/watched
parameters:
- name: userslug
in: path
required: true
schema:
type: string
responses:
"200":
description: ""
content:
application/json:
schema:
allOf:
- $ref: components/schemas/UserObject.yaml#/UserObject
- type: object
properties:
aboutmeParsed:
type: string
age:
type: number
emailClass:
type: string
ips:
type: array
items:
type: string
isBlocked:
type: boolean
blocksCount:
type: number
yourid:
type: number
theirid:
type: number
isTargetAdmin:
type: boolean
isAdmin:
type: boolean
isGlobalModerator:
type: boolean
isModerator:
type: boolean
isAdminOrGlobalModerator:
type: boolean
isAdminOrGlobalModeratorOrModerator:
type: boolean
isSelfOrAdminOrGlobalModerator:
type: boolean
canEdit:
type: boolean
canBan:
type: boolean
canChangePassword:
type: boolean
isSelf:
type: boolean
isFollowing:
type: boolean
hasPrivateChat:
type: number
showHidden:
type: boolean
groups:
type: array
items:
type: object
properties:
name:
type: string
slug:
type: string
createtime:
type: number
userTitle:
type: string
description:
type: string
memberCount:
type: number
deleted:
oneOf:
- type: string
- type: number
hidden:
type: number
system:
type: number
private:
type: number
ownerUid:
type: number
icon:
type: string
labelColor:
type: string
userTitleEnabled:
type: number
disableJoinRequests:
type: number
disableLeave:
type: number
nameEncoded:
type: string
displayName:
type: string
textColor:
type: string
createtimeISO:
type: string
cover:thumb:url:
type: string
cover:url:
type: string
cover:position:
type: string
disableSignatures:
type: boolean
reputation:disabled:
type: boolean
downvote:disabled:
type: boolean
profile_links:
type: array
items:
type: object
properties:
id:
type: string
route:
type: string
name:
type: string
visibility:
type: object
properties:
self:
type: boolean
other:
type: boolean
moderator:
type: boolean
globalMod:
type: boolean
admin:
type: boolean
canViewInfo:
type: boolean
public:
type: boolean
icon:
type: string
sso:
type: array
items:
type: object
properties:
associated:
type: boolean
url:
type: string
deauthUrl:
type: string
name:
type: string
icon:
type: string
websiteLink:
type: string
websiteName:
type: string
moderationNote:
type: string
username:disableEdit:
type: boolean
email:disableEdit:
type: boolean
topics:
type: array
items:
type: object
properties:
tid:
type: number
description: A topic identifier
uid:
type: number
description: A user identifier
cid:
type: number
description: A category identifier
mainPid:
type: number
description: The post id of the first post in this topic (also called the
"original post")
title:
type: string
slug:
type: string
timestamp:
type: number
lastposttime:
type: number
postcount:
type: number
viewcount:
type: number
teaserPid:
oneOf:
- type: number
- type: string
upvotes:
type: number
downvotes:
type: number
deleted:
type: number
locked:
type: number
pinned:
type: number
description: Whether or not this particular topic is pinned to the top of the
category
deleterUid:
type: number
titleRaw:
type: string
timestampISO:
type: string
description: An ISO 8601 formatted date string (complementing `timestamp`)
lastposttimeISO:
type: string
votes:
type: number
category:
type: object
properties:
cid:
type: number
description: A category identifier
name:
type: string
slug:
type: string
icon:
type: string
image:
nullable: true
type: string
imageClass:
nullable: true
type: string
bgColor:
type: string
color:
type: string
disabled:
type: number
user:
type: object
properties:
uid:
type: number
description: A user identifier
username:
type: string
description: A friendly name for a given user account
userslug:
type: string
description: An URL-safe variant of the username (i.e. lower-cased, spaces
removed, etc.)
reputation:
type: number
postcount:
type: number
picture:
type: string
signature:
nullable: true
type: string
banned:
type: number
status:
type: string
icon:text:
type: string
description: A single-letter representation of a username. This is used in the
auto-generated icon given to users without
an avatar
icon:bgColor:
type: string
description: A six-character hexadecimal colour code assigned to the user. This
value is used in conjunction with
`icon:text` for the user's auto-generated
icon
example: "#f44336"
banned_until_readable:
type: string
fullname:
type: string
teaser:
type: object
properties:
pid:
type: number
uid:
type: number
description: A user identifier
timestamp:
type: number
tid:
type: number
description: A topic identifier
content:
type: string
timestampISO:
type: string
description: An ISO 8601 formatted date string (complementing `timestamp`)
user:
type: object
properties:
uid:
type: number
description: A user identifier
username:
type: string
description: A friendly name for a given user account
userslug:
type: string
description: An URL-safe variant of the username (i.e. lower-cased, spaces
removed, etc.)
picture:
nullable: true
type: string
icon:text:
type: string
description: A single-letter representation of a username. This is used in the
auto-generated icon given to users
without an avatar
icon:bgColor:
type: string
description: A six-character hexadecimal colour code assigned to the user. This
value is used in conjunction with
`icon:text` for the user's
auto-generated icon
example: "#f44336"
index:
type: number
tags:
type: array
items:
type: object
properties:
value:
type: string
valueEscaped:
type: string
color:
type: string
bgColor:
type: string
score:
type: number
isOwner:
type: boolean
ignored:
type: boolean
unread:
type: boolean
bookmark:
nullable: true
type: number
unreplied:
type: boolean
icons:
type: array
items: {}
index:
type: number
thumb:
type: string
isQuestion:
type: number
isSolved:
type: number
nextStart:
type: number
noItemsFoundKey:
type: string
title:
type: string
showSort:
type: boolean
sortOptions:
type: array
items:
type: object
properties:
url:
type: string
name:
type: string
selected:
type: boolean
- $ref: components/schemas/Breadcrumbs.yaml#/Breadcrumbs
- $ref: components/schemas/Pagination.yaml#/Pagination
- $ref: components/schemas/Breadcrumbs.yaml#/Breadcrumbs
- $ref: components/schemas/CommonProps.yaml#/CommonProps
"/api/user/{userslug}/ignored":
get:
tags:
- users
summary: /api/user/{userslug}/ignored
parameters:
- name: userslug
in: path
required: true
schema:
type: string
responses:
"200":
description: ""
content:
application/json:
schema:
allOf:
- $ref: components/schemas/UserObject.yaml#/UserObjectFull
- type: object
properties:
topics:
type: array
items: {}
nextStart:
type: number
noItemsFoundKey:
type: string
title:
type: string
showSort:
type: boolean
sortOptions:
type: array
items:
type: object
properties:
url:
type: string
name:
type: string
selected:
type: boolean
- $ref: components/schemas/Pagination.yaml#/Pagination
- $ref: components/schemas/Breadcrumbs.yaml#/Breadcrumbs
- $ref: components/schemas/CommonProps.yaml#/CommonProps
"/api/user/{userslug}/upvoted":
get:
tags:
- users
summary: /api/user/{userslug}/upvoted
parameters:
- name: userslug
in: path
required: true
schema:
type: string
responses: {}
"/api/user/{userslug}/downvoted":
get:
tags:
- users
summary: /api/user/{userslug}/downvoted
parameters:
- name: userslug
in: path
required: true
schema:
type: string
responses: {}
"/api/user/{userslug}/edit":
get:
tags:
- users
summary: /api/user/{userslug}/edit
parameters:
- name: userslug
in: path
required: true
schema:
type: string
responses:
"200":
description: ""
content:
application/json:
schema:
allOf:
- $ref: components/schemas/UserObject.yaml#/UserObjectFull
- type: object
properties:
maximumSignatureLength:
type: number
maximumAboutMeLength:
type: number
maximumProfileImageSize:
type: number
allowProfilePicture:
type: boolean
allowCoverPicture:
type: boolean
allowProfileImageUploads:
type: number
allowedProfileImageExtensios:
type: string
allowMultipleBadges:
type: boolean
allowAccountDelete:
type: boolean
allowWebsite:
type: boolean
allowAboutMe:
type: boolean
allowSignature:
type: boolean
profileImageDimension:
type: number
defaultAvatar:
type: string
groupSelectSize:
type: number
title:
type: string
editButtons:
type: array
items: {}
- $ref: components/schemas/Breadcrumbs.yaml#/Breadcrumbs
- $ref: components/schemas/CommonProps.yaml#/CommonProps
"/api/user/{userslug}/edit/username":
get:
tags:
- users
summary: /api/user/{userslug}/edit/username
parameters:
- name: userslug
in: path
required: true
schema:
type: string
responses:
"200":
description: ""
content:
application/json:
schema:
allOf:
- $ref: components/schemas/UserObject.yaml#/UserObjectFull
- type: object
properties:
hasPassword:
type: boolean
title:
type: string
- $ref: components/schemas/Breadcrumbs.yaml#/Breadcrumbs
- $ref: components/schemas/CommonProps.yaml#/CommonProps
"/api/user/{userslug}/edit/email":
get:
tags:
- users
summary: /api/user/{userslug}/edit/email
parameters:
- name: userslug
in: path
required: true
schema:
type: string
responses:
"200":
description: ""
content:
application/json:
schema:
allOf:
- $ref: components/schemas/UserObject.yaml#/UserObjectFull
- type: object
properties:
hasPassword:
type: boolean
title:
type: string
- $ref: components/schemas/Breadcrumbs.yaml#/Breadcrumbs
- $ref: components/schemas/CommonProps.yaml#/CommonProps
"/api/user/{userslug}/edit/password":
get:
tags:
- users
summary: /api/user/{userslug}/edit/password
parameters:
- name: userslug
in: path
required: true
schema:
type: string
responses:
"200":
description: ""
content:
application/json:
schema:
allOf:
- $ref: components/schemas/UserObject.yaml#/UserObjectFull
- type: object
properties:
hasPassword:
type: boolean
minimumPasswordLength:
type: number
minimumPasswordStrength:
type: number
title:
type: string
- $ref: components/schemas/Breadcrumbs.yaml#/Breadcrumbs
- $ref: components/schemas/CommonProps.yaml#/CommonProps
"/api/user/{userslug}/info":
get:
tags:
- users
summary: /api/user/{userslug}/info
parameters:
- name: userslug
in: path
required: true
schema:
type: string
responses:
"200":
description: ""
content:
application/json:
schema:
allOf:
- $ref: components/schemas/UserObject.yaml#/UserObjectFull
- type: object
properties:
history:
type: object
properties:
flags:
type: array
items:
type: object
properties:
pid:
type: number
timestamp:
type: number
timestampISO:
type: string
description: An ISO 8601 formatted date string (complementing `timestamp`)
timestampReadable:
type: string
title:
type: string
titleRaw:
type: string
bans:
type: array
items: {}
sessions:
type: array
items:
type: object
properties:
ip:
type: string
uuid:
type: string
datetime:
type: number
platform:
type: string
browser:
type: string
version:
type: string
current:
type: boolean
datetimeISO:
type: string
usernames:
type: array
items:
type: object
properties:
value:
type: string
timestamp:
type: number
timestampISO:
type: string
description: An ISO 8601 formatted date string (complementing `timestamp`)
emails:
type: array
items:
type: object
properties:
value:
type: string
timestamp:
type: number
timestampISO:
type: string
description: An ISO 8601 formatted date string (complementing `timestamp`)
moderationNotes:
type: array
items: {}
title:
type: string
- $ref: components/schemas/Pagination.yaml#/Pagination
- $ref: components/schemas/Breadcrumbs.yaml#/Breadcrumbs
- $ref: components/schemas/CommonProps.yaml#/CommonProps
"/api/user/{userslug}/settings":
get:
tags:
- users
summary: /api/user/{userslug}/settings
parameters:
- name: userslug
in: path
required: true
schema:
type: string
responses:
"200":
description: ""
content:
application/json:
schema:
allOf:
- $ref: components/schemas/UserObject.yaml#/UserObjectFull
- type: object
properties:
settings:
type: object
properties:
showemail:
type: boolean
usePagination:
type: boolean
topicsPerPage:
type: number
postsPerPage:
type: number
notificationSounds:
type: number
topicPostSort:
type: string
openOutgoingLinksInNewTab:
type: boolean
dailyDigestFreq:
type: string
language:
type: string
showfullname:
type: boolean
followTopicsOnCreate:
type: boolean
followTopicsOnReply:
type: boolean
restrictChat:
type: boolean
topicSearchEnabled:
type: boolean
categoryTopicSort:
type: string
userLang:
type: string
groupTitle:
nullable: true
pushbullet:enabled:
type: number
pushbullet:target:
type: string
bootswatchSkin:
type: string
homePageRoute:
type: string
scrollToMyPost:
type: boolean
delayImageLoading:
type: number
notificationSound:
type: string
incomingChatSound:
type: string
outgoingChatSound:
type: string
notificationType_new-chat:
type: string
notificationType_new-reply:
type: string
sendChatNotifications:
nullable: true
sendPostNotifications:
nullable: true
notificationType_upvote:
type: string
notificationType_new-topic:
type: string
notificationType_follow:
type: string
notificationType_group-invite:
type: string
upvoteNotifFreq:
type: string
notificationType_mention:
type: string
acpLang:
type: string
notificationType_new-register:
type: string
notificationType_post-queue:
type: string
notificationType_new-post-flag:
type: string
notificationType_new-user-flag:
type: string
categoryWatchState:
type: string
notificationType_group-request-membership:
type: string
uid:
type: number
description: A user identifier
languages:
type: array
items:
type: object
properties:
name:
type: string
code:
type: string
dir:
type: string
selected:
type: boolean
acpLanguages:
type: array
items:
type: object
properties:
name:
type: string
code:
type: string
dir:
type: string
selected:
type: boolean
notification-sound:
type: array
items:
type: object
properties:
name:
type: string
sounds:
type: array
items:
type: object
properties:
name:
type: string
value:
type: string
selected:
type: boolean
notificationSound:
type: array
items:
type: object
properties:
name:
type: string
selected:
type: boolean
chat-incoming-sound:
type: array
items:
type: object
properties:
name:
type: string
sounds:
type: array
items:
type: object
properties:
name:
type: string
value:
type: string
selected:
type: boolean
incomingChatSound:
type: array
items:
type: object
properties:
name:
type: string
selected:
type: boolean
chat-outgoing-sound:
type: array
items:
type: object
properties:
name:
type: string
sounds:
type: array
items:
type: object
properties:
name:
type: string
value:
type: string
selected:
type: boolean
outgoingChatSound:
type: array
items:
type: object
properties:
name:
type: string
selected:
type: boolean
customSettings:
type: array
items: {}
homePageRoutes:
type: array
items:
type: object
properties:
route:
type: string
name:
type: string
selected:
type: boolean
notificationSettings:
type: array
items:
type: object
properties:
name:
type: string
label:
type: string
none:
type: boolean
notification:
type: boolean
email:
type: boolean
notificationemail:
type: boolean
disableEmailSubscriptions:
type: number
dailyDigestFreqOptions:
type: array
items:
type: object
properties:
value:
type: string
name:
type: string
selected:
type: boolean
bootswatchSkinOptions:
type: array
items:
type: object
properties:
name:
type: string
value:
type: string
selected:
type: boolean
upvoteNotifFreq:
type: array
items:
type: object
properties:
name:
type: string
selected:
type: boolean
categoryWatchState:
type: object
properties:
watching:
type: boolean
disableCustomUserSkins:
type: number
allowUserHomePage:
type: number
hideFullname:
type: number
hideEmail:
type: number
inTopicSearchAvailable:
type: boolean
maxTopicsPerPage:
type: number
maxPostsPerPage:
type: number
title:
type: string
- $ref: components/schemas/Breadcrumbs.yaml#/Breadcrumbs
- $ref: components/schemas/CommonProps.yaml#/CommonProps
"/api/user/{userslug}/uploads":
get:
tags:
- users
summary: /api/user/{userslug}/uploads
parameters:
- name: userslug
in: path
required: true
schema:
type: string
responses:
"200":
description: ""
content:
application/json:
schema:
allOf:
- $ref: components/schemas/UserObject.yaml#/UserObjectFull
- type: object
properties:
uploads:
type: array
items: {}
privateUploads:
type: boolean
title:
type: string
- $ref: components/schemas/Pagination.yaml#/Pagination
- $ref: components/schemas/Breadcrumbs.yaml#/Breadcrumbs
- $ref: components/schemas/CommonProps.yaml#/CommonProps
"/api/user/{userslug}/consent":
get:
tags:
- users
summary: /api/user/{userslug}/consent
parameters:
- name: userslug
in: path
required: true
schema:
type: string
responses:
"200":
description: ""
content:
application/json:
schema:
allOf:
- $ref: components/schemas/UserObject.yaml#/UserObjectFull
- type: object
properties:
gdpr_consent:
type: boolean
digest:
type: object
properties:
frequency:
type: string
enabled:
type: boolean
title:
type: string
- $ref: components/schemas/Breadcrumbs.yaml#/Breadcrumbs
- $ref: components/schemas/CommonProps.yaml#/CommonProps
"/api/user/{userslug}/blocks":
get:
tags:
- users
summary: /api/user/{userslug}/blocks
parameters:
- name: userslug
in: path
required: true
schema:
type: string
responses:
"200":
description: ""
content:
application/json:
schema:
allOf:
- $ref: components/schemas/UserObject.yaml#/UserObjectFull
- type: object
properties:
users:
type: array
items: {}
title:
type: string
- $ref: components/schemas/Pagination.yaml#/Pagination
- $ref: components/schemas/Breadcrumbs.yaml#/Breadcrumbs
- $ref: components/schemas/CommonProps.yaml#/CommonProps
"/api/user/{userslug}/sessions":
get:
tags:
- users
summary: /api/user/{userslug}/sessions
parameters:
- name: userslug
in: path
required: true
schema:
type: string
responses:
"200":
description: ""
content:
application/json:
schema:
allOf:
- $ref: components/schemas/UserObject.yaml#/UserObjectFull
- type: object
properties:
sessions:
type: array
items: {}
title:
type: string
- $ref: components/schemas/Breadcrumbs.yaml#/Breadcrumbs
- $ref: components/schemas/CommonProps.yaml#/CommonProps
"/api/user/{userslug}/session/{uuid}":
delete:
tags:
- users
summary: /api/user/{userslug}/session/{uuid}
parameters:
- name: userslug
in: path
required: true
schema:
type: string
- name: uuid
in: path
required: true
schema:
type: string
responses: {}
/api/notifications:
get:
tags:
- notifications
summary: /api/notifications
responses:
"200":
description: ""
content:
application/json:
schema:
allOf:
- type: object
properties:
notifications:
type: array
items:
type: object
properties:
type:
type: string
bodyShort:
type: string
bodyLong:
type: string
pid:
oneOf:
- type: number
- type: string
tid:
type: number
description: A topic identifier
path:
type: string
nid:
type: string
from:
type: number
mergeId:
type: string
topicTitle:
type: string
importance:
type: number
datetime:
type: number
datetimeISO:
type: string
user:
type: object
properties:
username:
type: string
description: A friendly name for a given user account
userslug:
type: string
description: An URL-safe variant of the username (i.e. lower-cased, spaces
removed, etc.)
picture:
type: string
uid:
type: number
description: A user identifier
icon:text:
type: string
description: A single-letter representation of a username. This is used in the
auto-generated icon given to users without
an avatar
icon:bgColor:
type: string
description: A six-character hexadecimal colour code assigned to the user. This
value is used in conjunction with
`icon:text` for the user's auto-generated
icon
example: "#f44336"
image:
type: string
read:
type: boolean
readClass:
type: string
subject:
type: string
filters:
type: array
items:
type: object
properties:
name:
type: string
filter:
type: string
selected:
type: boolean
regularFilters:
type: array
items:
type: object
properties:
name:
type: string
filter:
type: string
selected:
type: boolean
moderatorFilters:
type: array
items:
type: object
properties:
name:
type: string
filter:
type: string
selectedFilter:
type: object
properties:
name:
type: string
filter:
type: string
selected:
type: boolean
title:
type: string
- $ref: components/schemas/Pagination.yaml#/Pagination
- $ref: components/schemas/Breadcrumbs.yaml#/Breadcrumbs
- $ref: components/schemas/CommonProps.yaml#/CommonProps
"/api/user/{userslug}/chats/{roomid?}":
get:
tags:
- users
summary: /api/user/{userslug}/chats/{roomid?}
parameters:
- name: userslug
in: path
required: true
schema:
type: string
- name: roomid?
in: path
required: true
schema:
type: string
responses:
"200":
description: ""
content:
application/json:
schema:
allOf:
- type: object
properties:
owner:
type: number
roomId:
type: number
roomName:
type: string
messages:
type: array
items:
type: object
properties:
content:
type: string
timestamp:
type: number
fromuid:
type: number
roomId:
type: string
deleted:
type: boolean
system:
type: boolean
edited:
type: number
timestampISO:
type: string
description: An ISO 8601 formatted date string (complementing `timestamp`)
editedISO:
type: string
messageId:
type: number
fromUser:
type: object
properties:
uid:
type: number
description: A user identifier
username:
type: string
description: A friendly name for a given user account
userslug:
type: string
description: An URL-safe variant of the username (i.e. lower-cased, spaces
removed, etc.)
picture:
type: string
status:
type: string
banned:
type: boolean
icon:text:
type: string
description: A single-letter representation of a username. This is used in the
auto-generated icon given to users without
an avatar
icon:bgColor:
type: string
description: A six-character hexadecimal colour code assigned to the user. This
value is used in conjunction with
`icon:text` for the user's auto-generated
icon
example: "#f44336"
banned_until_readable:
type: string
deleted:
type: boolean
self:
type: number
newSet:
type: boolean
index:
type: number
cleanedContent:
type: string
isOwner:
type: boolean
users:
type: array
items:
type: object
properties:
uid:
type: number
description: A user identifier
username:
type: string
description: A friendly name for a given user account
picture:
type: string
status:
type: string
icon:text:
type: string
description: A single-letter representation of a username. This is used in the
auto-generated icon given to users without an
avatar
icon:bgColor:
type: string
description: A six-character hexadecimal colour code assigned to the user. This
value is used in conjunction with `icon:text`
for the user's auto-generated icon
example: "#f44336"
isOwner:
type: boolean
canReply:
type: boolean
groupChat:
type: boolean
usernames:
type: string
maximumUsersInChatRoom:
type: number
maximumChatMessageLength:
type: number
showUserInput:
type: boolean
isAdminOrGlobalMod:
type: boolean
rooms:
type: array
items:
type: object
properties:
owner:
oneOf:
- type: number
- type: string
roomId:
type: number
roomName:
type: string
users:
type: array
items:
type: object
properties:
uid:
type: number
description: A user identifier
username:
type: string
description: A friendly name for a given user account
userslug:
type: string
description: An URL-safe variant of the username (i.e. lower-cased, spaces
removed, etc.)
picture:
nullable: true
type: string
status:
type: string
lastonline:
type: number
icon:text:
type: string
description: A single-letter representation of a username. This is used in the
auto-generated icon given to users without
an avatar
icon:bgColor:
type: string
description: A six-character hexadecimal colour code assigned to the user. This
value is used in conjunction with
`icon:text` for the user's auto-generated
icon
example: "#f44336"
lastonlineISO:
type: string
groupChat:
type: boolean
unread:
type: boolean
teaser:
type: object
properties:
fromuid:
type: number
content:
type: string
timestamp:
type: number
timestampISO:
type: string
description: An ISO 8601 formatted date string (complementing `timestamp`)
user:
type: object
properties:
uid:
type: number
description: A user identifier
username:
type: string
description: A friendly name for a given user account
userslug:
type: string
description: An URL-safe variant of the username (i.e. lower-cased, spaces
removed, etc.)
picture:
nullable: true
type: string
status:
type: string
lastonline:
type: number
icon:text:
type: string
description: A single-letter representation of a username. This is used in the
auto-generated icon given to users
without an avatar
icon:bgColor:
type: string
description: A six-character hexadecimal colour code assigned to the user. This
value is used in conjunction with
`icon:text` for the user's
auto-generated icon
example: "#f44336"
lastonlineISO:
type: string
lastUser:
type: object
properties:
uid:
type: number
description: A user identifier
username:
type: string
description: A friendly name for a given user account
userslug:
type: string
description: An URL-safe variant of the username (i.e. lower-cased, spaces
removed, etc.)
picture:
nullable: true
type: string
status:
type: string
lastonline:
type: number
icon:text:
type: string
description: A single-letter representation of a username. This is used in the
auto-generated icon given to users without
an avatar
icon:bgColor:
type: string
description: A six-character hexadecimal colour code assigned to the user. This
value is used in conjunction with
`icon:text` for the user's auto-generated
icon
example: "#f44336"
lastonlineISO:
type: string
usernames:
type: string
nextStart:
type: number
title:
type: string
uid:
type: number
description: A user identifier
userslug:
type: string
description: An URL-safe variant of the username (i.e. lower-cased, spaces
removed, etc.)
canViewInfo:
type: boolean
- $ref: components/schemas/CommonProps.yaml#/CommonProps
"/api/chats/{roomid?}":
get:
tags:
- shorthand
summary: /api/chats/{roomid?}
parameters:
- name: roomid?
in: path
required: true
schema:
type: string
responses:
"200":
description: ""
content:
application/json:
schema:
title: /user/baris/chats/3499
type: undefined
/api/users:
get:
tags:
- users
summary: /api/users
responses:
"200":
description: ""
content:
application/json:
schema:
allOf:
- type: object
properties:
users:
type: array
items:
type: object
properties:
uid:
type: number
description: A user identifier
username:
type: string
description: A friendly name for a given user account
userslug:
type: string
description: An URL-safe variant of the username (i.e. lower-cased, spaces
removed, etc.)
picture:
nullable: true
type: string
status:
type: string
postcount:
type: number
reputation:
type: number
email:confirmed:
type: number
description: Whether the user has confirmed their email address or not
lastonline:
type: number
flags:
nullable: true
banned:
type: number
banned:expire:
type: number
joindate:
type: number
description: A UNIX timestamp representing the moment the user's account was
created
icon:text:
type: string
description: A single-letter representation of a username. This is used in the
auto-generated icon given to users without an
avatar
icon:bgColor:
type: string
description: A six-character hexadecimal colour code assigned to the user. This
value is used in conjunction with `icon:text`
for the user's auto-generated icon
example: "#f44336"
joindateISO:
type: string
lastonlineISO:
type: string
banned_until:
type: number
banned_until_readable:
type: string
administrator:
type: boolean
userCount:
type: number
title:
type: string
isAdminOrGlobalMod:
type: boolean
isAdmin:
type: boolean
isGlobalMod:
type: boolean
displayUserSearch:
type: boolean
section_joindate:
type: boolean
maximumInvites:
type: number
inviteOnly:
type: boolean
adminInviteOnly:
type: boolean
invites:
type: number
showInviteButton:
type: boolean
reputation:disabled:
type: number
- $ref: components/schemas/Pagination.yaml#/Pagination
- $ref: components/schemas/Breadcrumbs.yaml#/Breadcrumbs
- $ref: components/schemas/CommonProps.yaml#/CommonProps
/api/groups:
get:
tags:
- groups
summary: /api/groups
responses:
"200":
description: ""
content:
application/json:
schema:
allOf:
- type: object
properties:
groups:
type: array
items:
type: object
properties:
name:
type: string
description:
type: string
deleted:
oneOf:
- type: number
- type: string
hidden:
type: number
system:
type: number
userTitle:
type: string
icon:
type: string
labelColor:
type: string
createtime:
type: number
slug:
type: string
memberCount:
type: number
private:
type: number
userTitleEnabled:
type: number
disableJoinRequests:
type: number
disableLeave:
type: number
nameEncoded:
type: string
displayName:
type: string
textColor:
type: string
createtimeISO:
type: string
cover:thumb:url:
type: string
cover:url:
type: string
cover:position:
type: string
members:
type: array
items:
type: object
properties:
uid:
type: number
description: A user identifier
username:
type: string
description: A friendly name for a given user account
picture:
nullable: true
type: string
userslug:
type: string
description: An URL-safe variant of the username (i.e. lower-cased, spaces
removed, etc.)
icon:text:
type: string
description: A single-letter representation of a username. This is used in the
auto-generated icon given to users without
an avatar
icon:bgColor:
type: string
description: A six-character hexadecimal colour code assigned to the user. This
value is used in conjunction with
`icon:text` for the user's auto-generated
icon
example: "#f44336"
truncated:
type: boolean
ownerUid:
type: number
allowGroupCreation:
type: boolean
nextStart:
type: number
title:
type: string
- $ref: components/schemas/Breadcrumbs.yaml#/Breadcrumbs
- $ref: components/schemas/CommonProps.yaml#/CommonProps
"/api/groups/{slug}":
get:
tags:
- groups
summary: /api/groups/{slug}
parameters:
- name: slug
in: path
required: true
schema:
type: string
responses:
"200":
description: ""
content:
application/json:
schema:
allOf:
- type: object
properties:
title:
type: string
group:
type: object
properties:
name:
type: string
description:
type: string
deleted:
type: number
hidden:
type: number
system:
type: number
userTitle:
type: string
icon:
type: string
labelColor:
type: string
slug:
type: string
createtime:
type: number
memberCount:
type: number
private:
type: number
cover:url:
type: string
cover:position:
type: string
userTitleEnabled:
type: number
disableJoinRequests:
type: number
disableLeave:
type: number
nameEncoded:
type: string
displayName:
type: string
textColor:
type: string
createtimeISO:
type: string
cover:thumb:url:
type: string
descriptionParsed:
type: string
members:
type: array
items:
type: object
properties:
uid:
type: number
description: A user identifier
username:
type: string
description: A friendly name for a given user account
userslug:
type: string
description: An URL-safe variant of the username (i.e. lower-cased, spaces
removed, etc.)
picture:
type: string
status:
type: string
postcount:
type: number
reputation:
type: number
email:confirmed:
type: number
description: Whether the user has confirmed their email address or not
lastonline:
type: number
flags:
nullable: true
type: number
banned:
type: number
banned:expire:
type: number
joindate:
type: number
description: A UNIX timestamp representing the moment the user's account was
created
icon:text:
type: string
description: A single-letter representation of a username. This is used in the
auto-generated icon given to users without
an avatar
icon:bgColor:
type: string
description: A six-character hexadecimal colour code assigned to the user. This
value is used in conjunction with
`icon:text` for the user's auto-generated
icon
example: "#f44336"
joindateISO:
type: string
lastonlineISO:
type: string
banned_until:
type: number
banned_until_readable:
type: string
administrator:
type: boolean
isOwner:
type: boolean
membersNextStart:
type: number
pending:
type: array
items: {}
invited:
type: array
items: {}
isMember:
type: boolean
isPending:
type: boolean
isInvited:
type: boolean
isOwner:
type: boolean
posts:
$ref: components/schemas/PostsObject.yaml#/PostsObject
isAdmin:
type: boolean
isGlobalMod:
type: boolean
allowPrivateGroups:
type: number
- $ref: components/schemas/Breadcrumbs.yaml#/Breadcrumbs
- $ref: components/schemas/CommonProps.yaml#/CommonProps
"/api/groups/{slug}/members":
get:
tags:
- groups
summary: Get user group members
parameters:
- name: userslug
in: path
required: true
schema:
type: string
responses:
"200":
description: ""
content:
application/json:
schema:
allOf:
- type: object
properties:
users:
type: array
- $ref: components/schemas/Pagination.yaml#/Pagination
- $ref: components/schemas/Breadcrumbs.yaml#/Breadcrumbs
- $ref: components/schemas/CommonProps.yaml#/CommonProps