You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
8367 lines
328 KiB
YAML
8367 lines
328 KiB
YAML
openapi: 3.0.0
|
|
info:
|
|
title: nodebb
|
|
version: 1.13.2
|
|
license:
|
|
name: GPL-3.0
|
|
description: >-
|
|
# Overview
|
|
|
|
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 time as the APIs mature.
|
|
|
|
## Shortcomings
|
|
|
|
The Read API is named because its primary use is by NodeBB itself when navigating between pages. Therefore, the routes almost universally always follow the same path as actual pages on NodeBB itself. There are also a small number of non-`GET` routes, which doesn't necessarily make sense in a Read API. These will be merged into the Write API in time.
|
|
|
|
## Authentication
|
|
|
|
There are a multitude of ways to authenticate with the Read API.
|
|
|
|
### Cookie Authentication
|
|
|
|
This default authentication behaviour of this API is via cookie jar to find a valid session. 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.
|
|
|
|
### Bearer Authentication
|
|
|
|
Both the Read API and Write API offers bearer authentication, as administered through the administration panel.
|
|
|
|
* For NodeBB v1.x, this is provided by [`nodebb-plugin-write-api`](https://github.com/NodeBB/nodebb-plugin-write-api). The Write API plugin needs to be installed before authentication via bearer token is enabled on routes provided by the Read API.
|
|
* For NodeBB v2.x+ (in development), the Write API is available in core, and bearer authentication is available out-of-the-box
|
|
|
|
### JSON Web Token (JWT)
|
|
|
|
The Write API also consumes valid JWTs as payload bodies, when signed with a server-generated key. The same restrictions apply as above, with Bearer Authentication (re: NodeBB v1.x vs v2.x).
|
|
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
|
|
description: The page title
|
|
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:
|
|
type: string
|
|
unread-class:
|
|
type: string
|
|
children:
|
|
type: array
|
|
items:
|
|
allOf:
|
|
- $ref: components/schemas/CategoryObject.yaml#/CategoryObject
|
|
- type: object
|
|
properties:
|
|
tagWhitelist:
|
|
type: array
|
|
items:
|
|
type: string
|
|
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:
|
|
type: string
|
|
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
|
|
- $ref: components/schemas/CommonProps.yaml#/CommonProps
|
|
/api/admin/general/dashboard:
|
|
get:
|
|
tags:
|
|
- admin
|
|
summary: Get administrative dashboard
|
|
responses:
|
|
"200":
|
|
description: A JSON object containing dashboard data
|
|
content:
|
|
application/json:
|
|
schema:
|
|
allOf:
|
|
- type: object
|
|
properties:
|
|
version:
|
|
type: string
|
|
lookupFailed:
|
|
type: boolean
|
|
latestVersion:
|
|
type: string
|
|
nullable: true
|
|
upgradeAvailable:
|
|
type: boolean
|
|
nullable: true
|
|
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
|
|
required:
|
|
- done
|
|
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:
|
|
nullable: true
|
|
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: Get language settings
|
|
responses:
|
|
"200":
|
|
description: A JSON object containing available languages and settings
|
|
content:
|
|
application/json:
|
|
schema:
|
|
allOf:
|
|
- type: object
|
|
properties:
|
|
languages:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
name:
|
|
type: string
|
|
description: Localised name of the language
|
|
code:
|
|
type: string
|
|
description: A language code (similar to ISO-639)
|
|
dir:
|
|
type: string
|
|
description: Directionality of the language
|
|
enum: [ltr, rtl]
|
|
selected:
|
|
type: boolean
|
|
description: Denotes the currently selected default system language on the forum
|
|
autoDetectLang:
|
|
type: integer
|
|
description: Whether the forum will attempt to guess language based on browser's `Accept-Language` header
|
|
- $ref: components/schemas/CommonProps.yaml#/CommonProps
|
|
/api/admin/general/sounds:
|
|
get:
|
|
tags:
|
|
- admin
|
|
summary: Get sound settings
|
|
responses:
|
|
"200":
|
|
description: A JSON object containing available sounds and settings
|
|
content:
|
|
application/json:
|
|
schema:
|
|
allOf:
|
|
- type: object
|
|
properties:
|
|
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
|
|
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
|
|
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
|
|
- $ref: components/schemas/CommonProps.yaml#/CommonProps
|
|
/api/admin/general/navigation:
|
|
get:
|
|
tags:
|
|
- admin
|
|
summary: Get navigation bar settings
|
|
responses:
|
|
"200":
|
|
description: A JSON object containing navigation settings
|
|
content:
|
|
application/json:
|
|
schema:
|
|
allOf:
|
|
- type: object
|
|
properties:
|
|
enabled:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
route:
|
|
type: string
|
|
description: Relative URL to the page the navigation item goes to
|
|
title:
|
|
type: string
|
|
description: Tooltip text
|
|
enabled:
|
|
type: boolean
|
|
iconClass:
|
|
type: string
|
|
description: A FontAwesome icon string
|
|
textClass:
|
|
type: string
|
|
description: HTML class applied to the text label for this navigation item
|
|
text:
|
|
type: string
|
|
description: Label text for this navigation item
|
|
order:
|
|
type: integer
|
|
description: Ordinality of this item, lower value appears earlier
|
|
groups:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
displayName:
|
|
type: string
|
|
selected:
|
|
type: boolean
|
|
index:
|
|
type: integer
|
|
description: Seemingly identical to order, but an integer instead of a string
|
|
selected:
|
|
type: boolean
|
|
available:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
description: Unique ID that will be added to the navigation element's `id` property in the DOM
|
|
route:
|
|
type: string
|
|
description: Relative URL to the page the navigation item goes to
|
|
title:
|
|
type: string
|
|
description: Tooltip text
|
|
enabled:
|
|
type: boolean
|
|
iconClass:
|
|
type: string
|
|
description: A FontAwesome icon string
|
|
textClass:
|
|
type: string
|
|
description: HTML class applied to the text label for this navigation item
|
|
text:
|
|
type: string
|
|
description: Label text for this navigation item
|
|
core:
|
|
type: boolean
|
|
description: Whether the navigation item is provided by core or not (a plugin)
|
|
groups:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
name:
|
|
type: string
|
|
displayName:
|
|
type: string
|
|
properties:
|
|
type: object
|
|
properties:
|
|
targetBlank:
|
|
type: boolean
|
|
groups:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
name:
|
|
type: string
|
|
displayName:
|
|
type: string
|
|
navigation:
|
|
type: array
|
|
description: A clone of `enabled`
|
|
- $ref: components/schemas/CommonProps.yaml#/CommonProps
|
|
/api/admin/general/homepage:
|
|
get:
|
|
tags:
|
|
- admin
|
|
summary: Get homepage settings
|
|
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: Get post social sharing settings
|
|
responses:
|
|
"200":
|
|
description: "A JSON object containing post social sharing settings"
|
|
content:
|
|
application/json:
|
|
schema:
|
|
allOf:
|
|
- type: object
|
|
properties:
|
|
posts:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
name:
|
|
type: string
|
|
class:
|
|
type: string
|
|
description: A FontAwesome icon string
|
|
activated:
|
|
type: boolean
|
|
- $ref: components/schemas/CommonProps.yaml#/CommonProps
|
|
/api/admin/manage/categories:
|
|
get:
|
|
tags:
|
|
- admin
|
|
summary: Get category management settings
|
|
responses:
|
|
"200":
|
|
description: ""
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: components/schemas/CommonProps.yaml#/CommonProps
|
|
"/api/admin/manage/categories/{category_id}":
|
|
get:
|
|
tags:
|
|
- admin
|
|
summary: Get category settings
|
|
parameters:
|
|
- name: category_id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: 1
|
|
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:
|
|
type: string
|
|
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:
|
|
type: string
|
|
- $ref: components/schemas/CommonProps.yaml#/CommonProps
|
|
"/api/admin/manage/categories/{category_id}/analytics":
|
|
get:
|
|
tags:
|
|
- admin
|
|
summary: Get category anayltics
|
|
parameters:
|
|
- name: category_id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: 1
|
|
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: Get category privileges
|
|
parameters:
|
|
- name: cid
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: 1
|
|
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:
|
|
type: object
|
|
properties:
|
|
name:
|
|
type: string
|
|
nameEscaped:
|
|
type: string
|
|
privileges:
|
|
type: object
|
|
additionalProperties:
|
|
type: boolean
|
|
description: Each privilege will have a key in this object
|
|
groups:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
name:
|
|
type: string
|
|
nameEscaped:
|
|
type: string
|
|
privileges:
|
|
type: object
|
|
additionalProperties:
|
|
type: boolean
|
|
description: Each privilege will have a key in this object
|
|
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
|
|
required:
|
|
- cid
|
|
- name
|
|
- icon
|
|
- selected
|
|
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
|
|
imageClass:
|
|
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: Get tag settings
|
|
responses:
|
|
"200":
|
|
description: "A JSON object containing tag settings"
|
|
content:
|
|
application/json:
|
|
schema:
|
|
allOf:
|
|
- type: object
|
|
properties:
|
|
tags:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
value:
|
|
type: string
|
|
description: The tag name
|
|
score:
|
|
type: number
|
|
description: The number of topics containing this tag
|
|
valueEscaped:
|
|
type: string
|
|
color:
|
|
type: string
|
|
description: Six-character hexadecimal string (with `#` prepended)
|
|
example: "#ff0000"
|
|
bgColor:
|
|
type: string
|
|
description: Six-character hexadecimal string (with `#` prepended)
|
|
example: "#ff0000"
|
|
- $ref: components/schemas/CommonProps.yaml#/CommonProps
|
|
/api/admin/manage/post-queue:
|
|
get:
|
|
tags:
|
|
- admin
|
|
summary: Get post queue settings
|
|
responses:
|
|
"200":
|
|
description: "A JSON object containing post queue settings"
|
|
content:
|
|
application/json:
|
|
schema:
|
|
allOf:
|
|
- type: object
|
|
properties:
|
|
posts:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
description: Unique ID given to this queued post
|
|
uid:
|
|
type: number
|
|
description: A user identifier
|
|
data:
|
|
type: object
|
|
description: Queued post data
|
|
properties:
|
|
title:
|
|
type: string
|
|
content:
|
|
type: string
|
|
thumb:
|
|
type: string
|
|
cid:
|
|
type: number
|
|
tags:
|
|
type: array
|
|
uid:
|
|
type: number
|
|
req:
|
|
type: object
|
|
properties:
|
|
uid:
|
|
type: number
|
|
ip:
|
|
type: string
|
|
host:
|
|
type: string
|
|
protocol:
|
|
type: string
|
|
secure:
|
|
type: boolean
|
|
url:
|
|
type: string
|
|
path:
|
|
type: string
|
|
headers:
|
|
type: object
|
|
properties:
|
|
host:
|
|
type: string
|
|
user-agent:
|
|
type: string
|
|
accept:
|
|
type: string
|
|
accept-language:
|
|
type: string
|
|
accept-encoding:
|
|
type: string
|
|
referer:
|
|
type: string
|
|
dnt:
|
|
type: string
|
|
connection:
|
|
type: string
|
|
cookie:
|
|
type: string
|
|
pragma:
|
|
type: string
|
|
cache-control:
|
|
type: string
|
|
timestamp:
|
|
type: number
|
|
fromQueue:
|
|
type: boolean
|
|
timestampISO:
|
|
type: string
|
|
rawContent:
|
|
type: string
|
|
type:
|
|
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"
|
|
topic:
|
|
type: object
|
|
properties:
|
|
title:
|
|
type: number
|
|
cid:
|
|
type: number
|
|
category:
|
|
$ref: components/schemas/CategoryObject.yaml#/CategoryObject
|
|
title:
|
|
type: string
|
|
- $ref: components/schemas/Pagination.yaml#/Pagination
|
|
- $ref: components/schemas/CommonProps.yaml#/CommonProps
|
|
/api/admin/manage/ip-blacklist:
|
|
get:
|
|
tags:
|
|
- admin
|
|
summary: Get IP blacklist settings
|
|
responses:
|
|
"200":
|
|
description: "A JSON object containing IP blacklist settings"
|
|
content:
|
|
application/json:
|
|
schema:
|
|
allOf:
|
|
- type: object
|
|
properties:
|
|
title:
|
|
type: string
|
|
rules:
|
|
type: string
|
|
description: A plain text string containing blocked IPs or IP ranges. Separate entries are separated by a newline (`\n`)
|
|
nullable: true
|
|
analytics:
|
|
type: object
|
|
properties:
|
|
daily:
|
|
type: array
|
|
description: The values here are shown in ascending order from 6 days ago, to the current day
|
|
items:
|
|
type: number
|
|
description: The number of requests blocked per day
|
|
hourly:
|
|
type: array
|
|
description: The values here are shown in ascending order from 23 hours ago, to the current hour
|
|
items:
|
|
type: number
|
|
description: The number of requests blocked per hour
|
|
- $ref: components/schemas/CommonProps.yaml#/CommonProps
|
|
/api/admin/manage/users:
|
|
get:
|
|
tags:
|
|
- admin
|
|
summary: Get users
|
|
responses:
|
|
"200":
|
|
description: ""
|
|
content:
|
|
application/json:
|
|
schema:
|
|
allOf:
|
|
- type: object
|
|
properties:
|
|
users:
|
|
type: array
|
|
items:
|
|
$ref: components/schemas/UserObject.yaml#/UserObjectACP
|
|
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: Get users via search term
|
|
responses:
|
|
"200":
|
|
description: ""
|
|
content:
|
|
application/json:
|
|
schema:
|
|
allOf:
|
|
- type: object
|
|
properties:
|
|
search_display:
|
|
type: string
|
|
users:
|
|
type: array
|
|
items:
|
|
$ref: components/schemas/UserObject.yaml#/UserObjectACP
|
|
- $ref: components/schemas/CommonProps.yaml#/CommonProps
|
|
/api/admin/manage/users/latest:
|
|
get:
|
|
tags:
|
|
- admin
|
|
summary: Get latest users
|
|
responses:
|
|
"418":
|
|
description: "TODO: A proper response needs to be added. It is not really a teapot | Replace this responses block with the block from /manage/users/latest"
|
|
/api/admin/manage/users/not-validated:
|
|
get:
|
|
tags:
|
|
- admin
|
|
summary: Get non-verified users
|
|
responses:
|
|
"418":
|
|
description: "TODO: A proper response needs to be added. It is not really a teapot | Replace this responses block with the block from /manage/users/latest"
|
|
/api/admin/manage/users/no-posts:
|
|
get:
|
|
tags:
|
|
- admin
|
|
summary: Get users with no posts
|
|
responses:
|
|
"418":
|
|
description: "TODO: A proper response needs to be added. It is not really a teapot | Replace this responses block with the block from /manage/users/latest"
|
|
/api/admin/manage/users/top-posters:
|
|
get:
|
|
tags:
|
|
- admin
|
|
summary: Get users with the most posts
|
|
responses:
|
|
"418":
|
|
description: "TODO: A proper response needs to be added. It is not really a teapot | Replace this responses block with the block from /manage/users/latest"
|
|
/api/admin/manage/users/most-reputation:
|
|
get:
|
|
tags:
|
|
- admin
|
|
summary: Get users with the most reputation
|
|
responses:
|
|
"418":
|
|
description: "TODO: A proper response needs to be added. It is not really a teapot | Replace this responses block with the block from /manage/users/latest"
|
|
/api/admin/manage/users/inactive:
|
|
get:
|
|
tags:
|
|
- admin
|
|
summary: Get inactive users
|
|
responses:
|
|
"418":
|
|
description: "TODO: A proper response needs to be added. It is not really a teapot | Replace this responses block with the block from /manage/users/latest"
|
|
/api/admin/manage/users/flagged:
|
|
get:
|
|
tags:
|
|
- admin
|
|
summary: Get flagged users
|
|
responses:
|
|
"418":
|
|
description: "TODO: A proper response needs to be added. It is not really a teapot | Replace this responses block with the block from /manage/users/latest"
|
|
/api/admin/manage/users/banned:
|
|
get:
|
|
tags:
|
|
- admin
|
|
summary: Get banned users
|
|
responses:
|
|
"418":
|
|
description: "TODO: A proper response needs to be added. It is not really a teapot | Replace this responses block with the block from /manage/users/latest"
|
|
/api/admin/manage/registration:
|
|
get:
|
|
tags:
|
|
- admin
|
|
summary: Get registration queue/invites
|
|
responses:
|
|
"200":
|
|
description: "A JSON object containing the registration queue and invites"
|
|
content:
|
|
application/json:
|
|
schema:
|
|
allOf:
|
|
- type: object
|
|
properties:
|
|
registrationQueueCount:
|
|
type: number
|
|
users:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
username:
|
|
type: string
|
|
email:
|
|
type: string
|
|
ip:
|
|
type: string
|
|
timestampISO:
|
|
type: string
|
|
usernameEscaped:
|
|
type: string
|
|
ipMatch:
|
|
type: array
|
|
items:
|
|
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"
|
|
customActions:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
title:
|
|
type: string
|
|
id:
|
|
type: string
|
|
class:
|
|
type: string
|
|
icon:
|
|
type: string
|
|
customHeaders:
|
|
type: array
|
|
invites:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
uid:
|
|
type: number
|
|
invitations:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
email:
|
|
type: string
|
|
- $ref: components/schemas/Pagination.yaml#/Pagination
|
|
- $ref: components/schemas/CommonProps.yaml#/CommonProps
|
|
/api/admin/manage/admins-mods:
|
|
get:
|
|
tags:
|
|
- admin
|
|
summary: Get administrators and moderators
|
|
responses:
|
|
"200":
|
|
description: "A JSON object containing administrators and moderators globally and per-category"
|
|
content:
|
|
application/json:
|
|
schema:
|
|
allOf:
|
|
- type: object
|
|
properties:
|
|
admins:
|
|
$ref: components/schemas/GroupObject.yaml#/GroupFullObject
|
|
globalMods:
|
|
$ref: components/schemas/GroupObject.yaml#/GroupFullObject
|
|
categories:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
cid:
|
|
type: number
|
|
name:
|
|
type: string
|
|
level:
|
|
type: number
|
|
example: 0
|
|
icon:
|
|
type: string
|
|
description: A FontAwesome icon string
|
|
parentCid:
|
|
type: number
|
|
description: The parent category's identifier
|
|
color:
|
|
type: string
|
|
description: A six-character hexadecimal colour code
|
|
bgColor:
|
|
type: string
|
|
description: A six-character hexadecimal colour code
|
|
imageClass:
|
|
type: string
|
|
depth:
|
|
type: number
|
|
description: The depth of the category relative to the forum root (`0` is root level)
|
|
moderators:
|
|
type: array
|
|
items:
|
|
$ref: components/schemas/UserObject.yaml#/UserObjectSlim
|
|
allPrivileges:
|
|
type: array
|
|
items:
|
|
type: string
|
|
description: A simple array containing user privilege names (used client-side when giving mod privilege)
|
|
- $ref: components/schemas/CommonProps.yaml#/CommonProps
|
|
/api/admin/manage/groups:
|
|
get:
|
|
tags:
|
|
- admin
|
|
summary: Get user 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
|
|
required:
|
|
- name
|
|
- description
|
|
- hidden
|
|
- system
|
|
- userTitle
|
|
- icon
|
|
- labelColor
|
|
- slug
|
|
- createtime
|
|
- memberCount
|
|
- private
|
|
- cover:url
|
|
- cover:position
|
|
- userTitleEnabled
|
|
- disableJoinRequests
|
|
- disableLeave
|
|
- nameEncoded
|
|
- displayName
|
|
- textColor
|
|
- createtimeISO
|
|
- cover:thumb:url
|
|
yourid:
|
|
type: number
|
|
- $ref: components/schemas/Pagination.yaml#/Pagination
|
|
- $ref: components/schemas/CommonProps.yaml#/CommonProps
|
|
"/api/admin/manage/groups/{name}":
|
|
get:
|
|
tags:
|
|
- admin
|
|
summary: Get user group details
|
|
parameters:
|
|
- name: name
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: administrators
|
|
responses:
|
|
"200":
|
|
description: ""
|
|
content:
|
|
application/json:
|
|
schema:
|
|
allOf:
|
|
- type: object
|
|
properties:
|
|
group:
|
|
$ref: components/schemas/GroupObject.yaml#/GroupFullObject
|
|
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: Get uploaded files
|
|
parameters:
|
|
- in: query
|
|
name: dir
|
|
schema:
|
|
type: string
|
|
description: Path of the folder, relative to `public/uploads/`
|
|
example: /
|
|
responses:
|
|
"200":
|
|
description: "A JSON object containing uploaded files"
|
|
content:
|
|
application/json:
|
|
schema:
|
|
allOf:
|
|
- type: object
|
|
properties:
|
|
currentFolder:
|
|
type: string
|
|
description: Path of the folder, relative to `public/uploads/`
|
|
showPids:
|
|
type: boolean
|
|
description: Whether or not the post identifiers should be shown (this is `true` only for `public/uploads/files/`, as that is where post uploads go)
|
|
files:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
name:
|
|
type: string
|
|
path:
|
|
type: string
|
|
description: Path relative to `currentFolder`
|
|
url:
|
|
type: string
|
|
description: Relative URL ready to be combined with `config.relative_path` on the client-side or templates
|
|
fileCount:
|
|
type: number
|
|
description: For directories, the number of files inside
|
|
size:
|
|
type: number
|
|
description: The size of the file/directory
|
|
sizeHumanReadable:
|
|
type: string
|
|
isDirectory:
|
|
type: boolean
|
|
isFile:
|
|
type: boolean
|
|
mtime:
|
|
type: number
|
|
description: Last modified time of the file, down to the microsecond (expressed as a UNIX timestamp)
|
|
- $ref: components/schemas/Breadcrumbs.yaml#/Breadcrumbs
|
|
- $ref: components/schemas/Pagination.yaml#/Pagination
|
|
- $ref: components/schemas/CommonProps.yaml#/CommonProps
|
|
/api/admin/manage/digest:
|
|
get:
|
|
tags:
|
|
- admin
|
|
summary: Get system digest info/settings
|
|
responses:
|
|
"200":
|
|
description: "A JSON object containing recent digest sends and settings"
|
|
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
|
|
required:
|
|
- title
|
|
- delivery
|
|
- $ref: components/schemas/Pagination.yaml#/Pagination
|
|
- $ref: components/schemas/CommonProps.yaml#/CommonProps
|
|
"/api/admin/settings/{term}":
|
|
get:
|
|
tags:
|
|
- admin
|
|
summary: Get system settings
|
|
parameters:
|
|
- name: term
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: general
|
|
responses:
|
|
"200":
|
|
description: ""
|
|
content:
|
|
application/json:
|
|
schema:
|
|
allOf:
|
|
- type: object
|
|
properties: {}
|
|
additionalProperties:
|
|
type: object
|
|
description: Most of the settings pages have their values loaded on the client-side, so the settings are not exposed server-side.
|
|
- $ref: components/schemas/CommonProps.yaml#/CommonProps
|
|
"/api/admin/appearance/{term}":
|
|
get:
|
|
tags:
|
|
- admin
|
|
summary: Get appearance settings
|
|
parameters:
|
|
- name: term
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: themes
|
|
responses:
|
|
"200":
|
|
description: ""
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: components/schemas/CommonProps.yaml#/CommonProps
|
|
/api/admin/extend/plugins:
|
|
get:
|
|
tags:
|
|
- admin
|
|
summary: Get system plugin settings
|
|
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
|
|
nullable: true
|
|
outdated:
|
|
type: boolean
|
|
settingsRoute:
|
|
type: string
|
|
required:
|
|
- latest
|
|
- description
|
|
- name
|
|
- id
|
|
- installed
|
|
- active
|
|
- isTheme
|
|
- error
|
|
- version
|
|
- license
|
|
- outdated
|
|
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
|
|
required:
|
|
- name
|
|
- updated
|
|
- latest
|
|
- url
|
|
- numInstalls
|
|
- isCompatible
|
|
- id
|
|
- installed
|
|
- active
|
|
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
|
|
required:
|
|
- name
|
|
- updated
|
|
- latest
|
|
- url
|
|
- numInstalls
|
|
- isCompatible
|
|
- id
|
|
- installed
|
|
- active
|
|
submitPluginUsage:
|
|
type: number
|
|
version:
|
|
type: string
|
|
- $ref: components/schemas/CommonProps.yaml#/CommonProps
|
|
/api/admin/extend/widgets:
|
|
get:
|
|
tags:
|
|
- admin
|
|
summary: Get widget settings
|
|
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: Get rewards settings
|
|
responses:
|
|
"200":
|
|
description: "A JSON object containing rewards and their settings"
|
|
content:
|
|
application/json:
|
|
schema:
|
|
allOf:
|
|
- type: object
|
|
properties:
|
|
active:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
condition:
|
|
type: string
|
|
conditional:
|
|
type: string
|
|
value:
|
|
type: number
|
|
rid:
|
|
type: string
|
|
claimable:
|
|
type: string
|
|
id:
|
|
type: string
|
|
disabled:
|
|
type: boolean
|
|
rewards:
|
|
type: array
|
|
items:
|
|
additionalProperties: {}
|
|
description: Reward-specific properties
|
|
conditions:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
name:
|
|
type: string
|
|
condition:
|
|
type: string
|
|
conditionals:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
name:
|
|
type: string
|
|
conditional:
|
|
type: string
|
|
rewards:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
rid:
|
|
type: string
|
|
name:
|
|
type: string
|
|
inputs:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
type:
|
|
type: string
|
|
name:
|
|
type: string
|
|
label:
|
|
type: string
|
|
values:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
name:
|
|
type: string
|
|
value:
|
|
type: string
|
|
- $ref: components/schemas/CommonProps.yaml#/CommonProps
|
|
/api/admin/advanced/database:
|
|
get:
|
|
tags:
|
|
- admin
|
|
summary: Get database information
|
|
responses:
|
|
"200":
|
|
description: "A JSON object with database status information"
|
|
content:
|
|
application/json:
|
|
schema:
|
|
properties: {}
|
|
additionalProperties:
|
|
type: object
|
|
description: Each database configured will have an entry here with information about its runtime status
|
|
/api/admin/advanced/events:
|
|
get:
|
|
tags:
|
|
- admin
|
|
summary: Get event log
|
|
parameters:
|
|
- in: query
|
|
name: type
|
|
schema:
|
|
type: string
|
|
description: Event name to filter by
|
|
example: config-change
|
|
- in: query
|
|
name: start
|
|
schema:
|
|
type: string
|
|
description: Start date to filter by
|
|
example: ''
|
|
- in: query
|
|
name: end
|
|
schema:
|
|
type: string
|
|
description: End date to filter by
|
|
example: ''
|
|
- in: query
|
|
name: perPage
|
|
schema:
|
|
type: string
|
|
description: Limit the number of events returned per page
|
|
example: 20
|
|
responses:
|
|
"200":
|
|
description: "A JSON object containing "
|
|
content:
|
|
application/json:
|
|
schema:
|
|
allOf:
|
|
- type: object
|
|
properties:
|
|
events:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
type:
|
|
type: string
|
|
additionalProperties:
|
|
description: Each individual event as added by core/plugins can append their own metadata related to the event
|
|
- $ref: components/schemas/Pagination.yaml#/Pagination
|
|
- type: object
|
|
properties:
|
|
types:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
value:
|
|
type: string
|
|
name:
|
|
type: string
|
|
selected:
|
|
type: boolean
|
|
query:
|
|
additionalProperties:
|
|
description: An object containing the query string parameters, if any
|
|
- $ref: components/schemas/CommonProps.yaml#/CommonProps
|
|
/api/admin/advanced/hooks:
|
|
get:
|
|
tags:
|
|
- admin
|
|
summary: Get active plugin hooks
|
|
responses:
|
|
"200":
|
|
description: "A JSON object containing all hooks with active listeners"
|
|
content:
|
|
application/json:
|
|
schema:
|
|
allOf:
|
|
- type: object
|
|
properties:
|
|
hooks:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
hookName:
|
|
type: string
|
|
description: The name of the hook (also the name used in code)
|
|
methods:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
description: Plugin listening to this hook
|
|
priority:
|
|
type: number
|
|
description: Priority level, lower priorities are executed earlier
|
|
method:
|
|
type: string
|
|
description: Stringified method for examination
|
|
index:
|
|
type: string
|
|
description: Internal counter used for DOM element ids
|
|
index:
|
|
type: string
|
|
description: Internal counter used for DOM element ids
|
|
count:
|
|
type: number
|
|
description: The number of listeners subscribed to this hook
|
|
- $ref: components/schemas/CommonProps.yaml#/CommonProps
|
|
/api/admin/advanced/logs:
|
|
get:
|
|
tags:
|
|
- admin
|
|
summary: Get server-side log output
|
|
responses:
|
|
"200":
|
|
description: "A JSON object containing the server-side log"
|
|
content:
|
|
application/json:
|
|
schema:
|
|
allOf:
|
|
- type: object
|
|
properties:
|
|
data:
|
|
type: string
|
|
description: Output of the server-side log file
|
|
- $ref: components/schemas/CommonProps.yaml#/CommonProps
|
|
/api/admin/advanced/errors:
|
|
get:
|
|
tags:
|
|
- admin
|
|
summary: Get server-side errors
|
|
responses:
|
|
"200":
|
|
description: "A JSON object containing server-side errors"
|
|
content:
|
|
application/json:
|
|
schema:
|
|
allOf:
|
|
- type: object
|
|
properties:
|
|
not-found:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
value:
|
|
type: string
|
|
description: Path to the requested URL that returned a 404
|
|
score:
|
|
type: number
|
|
description: The number of times that URL was requested
|
|
analytics:
|
|
type: object
|
|
properties:
|
|
not-found:
|
|
type: array
|
|
description: 404 responses groups by day, from 6 days ago, to present day
|
|
items:
|
|
type: number
|
|
toobusy:
|
|
type: array
|
|
description: 503 responses groups by day, from 6 days ago, to present day
|
|
items:
|
|
type: number
|
|
- $ref: components/schemas/CommonProps.yaml#/CommonProps
|
|
/api/admin/advanced/errors/export:
|
|
get:
|
|
tags:
|
|
- admin
|
|
summary: Export errors (.csv)
|
|
responses:
|
|
"200":
|
|
description: "A CSV file containing server-side errors"
|
|
content:
|
|
text/csv:
|
|
schema:
|
|
type: string
|
|
format: binary
|
|
/api/admin/advanced/cache:
|
|
get:
|
|
tags:
|
|
- admin
|
|
summary: Get system cache info
|
|
responses:
|
|
"200":
|
|
description: ""
|
|
content:
|
|
application/json:
|
|
schema:
|
|
allOf:
|
|
- type: object
|
|
properties:
|
|
postCache:
|
|
type: object
|
|
properties:
|
|
length:
|
|
type: number
|
|
max:
|
|
type: number
|
|
nullable: true
|
|
itemCount:
|
|
type: number
|
|
percentFull:
|
|
type: number
|
|
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: number
|
|
hits:
|
|
type: string
|
|
misses:
|
|
type: string
|
|
hitRatio:
|
|
type: string
|
|
localCache:
|
|
type: object
|
|
properties:
|
|
length:
|
|
type: number
|
|
max:
|
|
type: number
|
|
itemCount:
|
|
type: number
|
|
percentFull:
|
|
type: number
|
|
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: number
|
|
hits:
|
|
type: string
|
|
misses:
|
|
type: string
|
|
hitRatio:
|
|
type: string
|
|
required:
|
|
- postCache
|
|
- groupCache
|
|
- localCache
|
|
- $ref: components/schemas/CommonProps.yaml#/CommonProps
|
|
/api/admin/development/logger:
|
|
get:
|
|
tags:
|
|
- admin
|
|
summary: Get system logger settings
|
|
responses:
|
|
"200":
|
|
description: ""
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: components/schemas/CommonProps.yaml#/CommonProps
|
|
/api/admin/development/info:
|
|
get:
|
|
tags:
|
|
- admin
|
|
summary: Get process/system information
|
|
responses:
|
|
"200":
|
|
description: "A JSON object containing process and system information"
|
|
content:
|
|
application/json:
|
|
schema:
|
|
allOf:
|
|
- type: object
|
|
properties:
|
|
info:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
process:
|
|
type: object
|
|
properties:
|
|
port:
|
|
description: An array containing the port numbers configured to be used by NodeBB processes
|
|
oneOf:
|
|
- type: array
|
|
items:
|
|
oneOf:
|
|
- type: string
|
|
- type: number
|
|
- type: string
|
|
- type: number
|
|
pid:
|
|
type: number
|
|
description: Process id
|
|
title:
|
|
type: number
|
|
description: Executable
|
|
version:
|
|
type: number
|
|
description: NodeBB version
|
|
memoryUsage:
|
|
type: object
|
|
properties:
|
|
rss:
|
|
type: number
|
|
heapTotal:
|
|
type: number
|
|
heapUsed:
|
|
type: number
|
|
external:
|
|
type: number
|
|
arrayBuffers:
|
|
type: number
|
|
humanReadable:
|
|
type: number
|
|
required:
|
|
- rss
|
|
- heapTotal
|
|
- heapUsed
|
|
- external
|
|
- humanReadable
|
|
uptime:
|
|
type: number
|
|
cpuUsage:
|
|
type: object
|
|
properties:
|
|
user:
|
|
type: string
|
|
system:
|
|
type: string
|
|
os:
|
|
type: object
|
|
properties:
|
|
hostname:
|
|
type: string
|
|
type:
|
|
type: string
|
|
platform:
|
|
type: string
|
|
arch:
|
|
type: string
|
|
release:
|
|
type: string
|
|
load:
|
|
type: string
|
|
description: CPU load
|
|
git:
|
|
type: object
|
|
properties:
|
|
hash:
|
|
type: string
|
|
branch:
|
|
type: string
|
|
stats:
|
|
type: object
|
|
properties:
|
|
onlineGuestCount:
|
|
type: number
|
|
onlineRegisteredCount:
|
|
type: number
|
|
socketCount:
|
|
type: number
|
|
users:
|
|
type: object
|
|
properties:
|
|
categories:
|
|
type: number
|
|
recent:
|
|
type: number
|
|
unread:
|
|
type: number
|
|
topics:
|
|
type: number
|
|
category:
|
|
type: number
|
|
topics:
|
|
type: array
|
|
id:
|
|
type: string
|
|
infoJSON:
|
|
type: string
|
|
description: "`info`, but stringified"
|
|
host:
|
|
type: string
|
|
description: Server hostname
|
|
port:
|
|
description: An array containing the port numbers configured to be used by NodeBB processes
|
|
oneOf:
|
|
- type: array
|
|
items:
|
|
oneOf:
|
|
- type: string
|
|
- type: number
|
|
- type: string
|
|
- type: number
|
|
nodeCount:
|
|
type: number
|
|
description: The number of NodeBB application processes currently running
|
|
timeout:
|
|
type: number
|
|
ip:
|
|
type: string
|
|
loggedIn:
|
|
type: boolean
|
|
relative_path:
|
|
type: string
|
|
- $ref: components/schemas/CommonProps.yaml#/CommonProps
|
|
/api/admin/users/csv:
|
|
get:
|
|
tags:
|
|
- admin
|
|
summary: Get users export (.csv)
|
|
parameters:
|
|
- in: header
|
|
name: referer
|
|
schema:
|
|
type: string
|
|
required: true
|
|
example: /admin/manage/users
|
|
responses:
|
|
"200":
|
|
description: "A CSV file containing all registered users"
|
|
content:
|
|
text/csv:
|
|
schema:
|
|
type: string
|
|
format: binary
|
|
/api/admin/analytics:
|
|
get:
|
|
tags:
|
|
- admin
|
|
summary: Get site analytics
|
|
parameters:
|
|
- in: query
|
|
name: units
|
|
schema:
|
|
type: string
|
|
enum: [hours, days]
|
|
description: Whether to display dashboard data segmented daily or hourly
|
|
example: days
|
|
- in: query
|
|
name: until
|
|
schema:
|
|
type: number
|
|
description: A UNIX timestamp denoting the end of the analytics reporting period
|
|
example: ''
|
|
- in: query
|
|
name: count
|
|
schema:
|
|
type: number
|
|
description: The number of entries to return (e.g. if `units` is `hourly`, and `count` is `24`, the result set will contain 24 hours' worth of analytics)
|
|
example: 20
|
|
responses:
|
|
"200":
|
|
description: "A JSON object containing analytics data"
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
query:
|
|
additionalProperties:
|
|
description: The query string passed in
|
|
result:
|
|
type: object
|
|
properties:
|
|
uniquevisitors:
|
|
type: array
|
|
items:
|
|
type: number
|
|
pageviews:
|
|
type: array
|
|
items:
|
|
type: number
|
|
pageviews:registered:
|
|
type: array
|
|
items:
|
|
type: number
|
|
pageviews:bot:
|
|
type: array
|
|
items:
|
|
type: number
|
|
pageviews:guest:
|
|
type: array
|
|
items:
|
|
type: number
|
|
/api/admin/category/uploadpicture:
|
|
post:
|
|
tags:
|
|
- admin
|
|
summary: Update category picture (via image upload)
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
multipart/form-data:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
cid:
|
|
type: number
|
|
description: Category identifier whose picture will be set after successful upload
|
|
example: 1
|
|
files:
|
|
type: array
|
|
items:
|
|
type: string
|
|
format: binary
|
|
required:
|
|
- cid
|
|
- files
|
|
responses:
|
|
"200":
|
|
description: "Image uploaded"
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
name:
|
|
type: string
|
|
description: The filename
|
|
url:
|
|
type: string
|
|
description: URL of the uploaded image for use client-side
|
|
/api/admin/uploadfavicon:
|
|
post:
|
|
tags:
|
|
- admin
|
|
summary: Upload favicon
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
multipart/form-data:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
files:
|
|
type: array
|
|
items:
|
|
type: string
|
|
format: binary
|
|
required:
|
|
- files
|
|
responses:
|
|
"200":
|
|
description: "Image uploaded"
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
name:
|
|
type: string
|
|
description: The filename
|
|
url:
|
|
type: string
|
|
description: URL of the uploaded image for use client-side
|
|
/api/admin/uploadTouchIcon:
|
|
post:
|
|
tags:
|
|
- admin
|
|
summary: Upload Touch Icon
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
multipart/form-data:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
files:
|
|
type: array
|
|
items:
|
|
type: string
|
|
format: binary
|
|
required:
|
|
- files
|
|
responses:
|
|
"200":
|
|
description: "Image uploaded"
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
name:
|
|
type: string
|
|
description: The filename
|
|
url:
|
|
type: string
|
|
description: URL of the uploaded image for use client-side
|
|
/api/admin/uploadlogo:
|
|
post:
|
|
tags:
|
|
- admin
|
|
summary: Upload site logo
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
multipart/form-data:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
files:
|
|
type: array
|
|
items:
|
|
type: string
|
|
format: binary
|
|
required:
|
|
- files
|
|
responses:
|
|
"200":
|
|
description: "Image uploaded"
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
name:
|
|
type: string
|
|
description: The filename
|
|
url:
|
|
type: string
|
|
description: URL of the uploaded image for use client-side
|
|
/api/admin/uploadOgImage:
|
|
post:
|
|
tags:
|
|
- admin
|
|
summary: Upload site-wide Open Graph Image
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
multipart/form-data:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
files:
|
|
type: array
|
|
items:
|
|
type: string
|
|
format: binary
|
|
required:
|
|
- files
|
|
responses:
|
|
"200":
|
|
description: "Image uploaded"
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
name:
|
|
type: string
|
|
description: The filename
|
|
url:
|
|
type: string
|
|
description: URL of the uploaded image for use client-side
|
|
/api/admin/upload/sound:
|
|
post:
|
|
tags:
|
|
- admin
|
|
summary: Upload sound file
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
multipart/form-data:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
files:
|
|
type: array
|
|
items:
|
|
type: string
|
|
format: binary
|
|
required:
|
|
- files
|
|
responses:
|
|
"200":
|
|
description: "Sound uploaded"
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties: {}
|
|
/api/admin/upload/file:
|
|
post:
|
|
tags:
|
|
- admin
|
|
summary: Upload a file
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
multipart/form-data:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
folder:
|
|
type: string
|
|
description: The folder to upload the files to (relative to `public/uploads/`)
|
|
files:
|
|
type: array
|
|
items:
|
|
type: string
|
|
format: binary
|
|
required:
|
|
- files
|
|
responses:
|
|
"200":
|
|
description: "File uploaded"
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
name:
|
|
type: string
|
|
description: The filename
|
|
url:
|
|
type: string
|
|
description: URL of the uploaded file for use client-side
|
|
/api/admin/uploadDefaultAvatar:
|
|
post:
|
|
tags:
|
|
- admin
|
|
summary: Upload default avatar
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
multipart/form-data:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
files:
|
|
type: array
|
|
items:
|
|
type: string
|
|
format: binary
|
|
required:
|
|
- files
|
|
responses:
|
|
"200":
|
|
description: "Image uploaded"
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
name:
|
|
type: string
|
|
description: The filename
|
|
url:
|
|
type: string
|
|
description: URL of the uploaded image for use client-side
|
|
/api/config:
|
|
get:
|
|
tags:
|
|
- home
|
|
summary: Get forum settings
|
|
description: This route retrieves forum settings and user-specific settings for client-side options on the forum.
|
|
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
|
|
openOutgoingLinksInNewTab:
|
|
type: boolean
|
|
topicSearchEnabled:
|
|
type: boolean
|
|
hideSubCategories:
|
|
type: boolean
|
|
hideCategoryLastPost:
|
|
type: boolean
|
|
enableQuickReply:
|
|
type: boolean
|
|
/api/users:
|
|
get:
|
|
tags:
|
|
- users
|
|
summary: Get users
|
|
parameters:
|
|
- in: query
|
|
name: section
|
|
schema:
|
|
type: string
|
|
enum: ['joindate', 'online', 'sort-posts', 'sort-reputation', 'banned', 'flagged']
|
|
required: false
|
|
description: Allows filtering of the user list via pre-defined sections
|
|
example: 'joindate'
|
|
- in: query
|
|
name: term
|
|
schema:
|
|
type: string
|
|
required: false
|
|
description: Allows for searching of user list
|
|
example: ''
|
|
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/user/uid/{uid}":
|
|
get:
|
|
tags:
|
|
- users
|
|
summary: Get user by uid
|
|
description: This route retrieves a user's public profile data. If the calling user is the same as the profile, then it will also return data the user elected to hide (e.g. email/fullname)
|
|
parameters:
|
|
- name: uid
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: 1
|
|
responses:
|
|
"200":
|
|
description: ""
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: components/schemas/UserObject.yaml#/UserObject
|
|
"/api/user/username/{username}":
|
|
get:
|
|
tags:
|
|
- users
|
|
summary: Get user by username
|
|
description: This route retrieves a user's public profile data. If the calling user is the same as the profile, then it will also return data the user elected to hide (e.g. email/fullname)
|
|
parameters:
|
|
- name: username
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: admin
|
|
responses:
|
|
"200":
|
|
description: ""
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: components/schemas/UserObject.yaml#/UserObject
|
|
"/api/user/email/{email}":
|
|
get:
|
|
tags:
|
|
- users
|
|
summary: Get user by email
|
|
description: This route retrieves a user's public profile data. If the calling user is the same as the profile, then it will also return data the user elected to hide (e.g. email/fullname)
|
|
parameters:
|
|
- name: email
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: 'test@example.org'
|
|
responses:
|
|
"200":
|
|
description: ""
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: components/schemas/UserObject.yaml#/UserObject
|
|
"/api/user/uid/{userslug}/export/posts":
|
|
get:
|
|
tags:
|
|
- users
|
|
summary: Export a user's posts (.csv)
|
|
parameters:
|
|
- name: userslug
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: admin
|
|
responses:
|
|
"200":
|
|
description: "A CSV file containing a user's posts"
|
|
content:
|
|
text/csv:
|
|
schema:
|
|
type: string
|
|
format: binary
|
|
"/api/user/uid/{userslug}/export/uploads":
|
|
get:
|
|
tags:
|
|
- users
|
|
summary: Export a user's uploads (.zip)
|
|
parameters:
|
|
- name: userslug
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: admin
|
|
responses:
|
|
"200":
|
|
description: Successful export of user uploads
|
|
content:
|
|
application/zip:
|
|
schema:
|
|
type: string
|
|
format: binary
|
|
"/api/user/uid/{userslug}/export/profile":
|
|
get:
|
|
tags:
|
|
- users
|
|
summary: Export a user's profile data (.csv)
|
|
parameters:
|
|
- name: userslug
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: admin
|
|
responses:
|
|
"200":
|
|
description: "A CSV file containing the user profile"
|
|
content:
|
|
text/csv:
|
|
schema:
|
|
type: string
|
|
format: binary
|
|
"/api/post/pid/{id}":
|
|
get:
|
|
tags:
|
|
- shorthand
|
|
summary: Get post data
|
|
parameters:
|
|
- name: id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: number
|
|
example: 1
|
|
responses:
|
|
"200":
|
|
description: "A JSON object containing post data"
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
uid:
|
|
type: number
|
|
tid:
|
|
type: number
|
|
timestamp:
|
|
type: number
|
|
content:
|
|
type: string
|
|
pid:
|
|
type: number
|
|
downvotes:
|
|
type: number
|
|
upvotes:
|
|
type: number
|
|
deleted:
|
|
type: number
|
|
deleterUid:
|
|
type: number
|
|
edited:
|
|
type: number
|
|
votes:
|
|
type: number
|
|
timestampISO:
|
|
type: string
|
|
editedISO:
|
|
type: string
|
|
upvoted:
|
|
type: boolean
|
|
downvoted:
|
|
type: boolean
|
|
"/api/topic/tid/{id}":
|
|
get:
|
|
tags:
|
|
- shorthand
|
|
summary: Get topic data
|
|
parameters:
|
|
- name: id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: 1
|
|
responses:
|
|
"200":
|
|
description: "A JSON object containing topic data"
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
tid:
|
|
type: number
|
|
uid:
|
|
type: number
|
|
cid:
|
|
type: number
|
|
mainPid:
|
|
type: number
|
|
teaserPid:
|
|
type: number
|
|
nullable: true
|
|
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
|
|
upvotes:
|
|
type: number
|
|
downvotes:
|
|
type: number
|
|
deleterUid:
|
|
type: number
|
|
titleRaw:
|
|
type: string
|
|
timestampISO:
|
|
type: string
|
|
lastposttimeISO:
|
|
type: string
|
|
votes:
|
|
type: number
|
|
"/api/category/cid/{id}":
|
|
get:
|
|
tags:
|
|
- shorthand
|
|
summary: Get category data
|
|
parameters:
|
|
- name: id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: 1
|
|
responses:
|
|
"200":
|
|
description: "A JSON object containing topic data"
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
cid:
|
|
type: number
|
|
name:
|
|
type: number
|
|
description:
|
|
type: string
|
|
descriptionParsed:
|
|
type: string
|
|
icon:
|
|
type: string
|
|
bgColor:
|
|
type: string
|
|
color:
|
|
type: string
|
|
slug:
|
|
type: string
|
|
parentCid:
|
|
type: number
|
|
topic_count:
|
|
type: number
|
|
post_count:
|
|
type: number
|
|
disabled:
|
|
type: number
|
|
order:
|
|
type: number
|
|
link:
|
|
type: string
|
|
numRecentReplies:
|
|
type: number
|
|
class:
|
|
type: string
|
|
imageClass:
|
|
type: string
|
|
isSection:
|
|
type: number
|
|
totalPostCount:
|
|
type: number
|
|
totalTopicCount:
|
|
type: number
|
|
/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 page 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:
|
|
type: string
|
|
unread-class:
|
|
type: string
|
|
children:
|
|
type: array
|
|
items:
|
|
allOf:
|
|
- $ref: components/schemas/CategoryObject.yaml#/CategoryObject
|
|
- type: object
|
|
properties:
|
|
tagWhitelist:
|
|
type: array
|
|
items:
|
|
type: string
|
|
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:
|
|
type: string
|
|
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
|
|
- $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
|
|
example: 1
|
|
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/topic/{topic_id}/{slug}/{post_index}":
|
|
get:
|
|
tags:
|
|
- topics
|
|
summary: Get topic data
|
|
parameters:
|
|
- name: topic_id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: 1
|
|
- name: slug
|
|
description: This parameter is not required. If omitted, the request will be automatically redirected with the proper topic slug.
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: test-topic
|
|
- name: post_index
|
|
description: This parameter is not required. If omitted, the request will presume that you want the first post. The API response is largely unaffected by this parameter, it is used client-side (to send the user to the requested post), and changes the meta/link tags in the server-side generated HTML.
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: 1
|
|
responses:
|
|
"200":
|
|
description: ""
|
|
content:
|
|
application/json:
|
|
schema:
|
|
allOf:
|
|
- 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
|
|
mainPid:
|
|
type: number
|
|
description: The post id of the first post in this topic (also called the
|
|
"original post")
|
|
teaserPid:
|
|
type: number
|
|
nullable: true
|
|
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
|
|
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
|
|
nullable: true
|
|
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:
|
|
type: object
|
|
properties:
|
|
content:
|
|
type: string
|
|
description: HTML that is injected into `topic.tpl` of themes that support custom profile info
|
|
editor:
|
|
nullable: true
|
|
bookmarked:
|
|
type: boolean
|
|
upvoted:
|
|
type: boolean
|
|
downvoted:
|
|
type: boolean
|
|
replies:
|
|
type: object
|
|
properties:
|
|
hasMore:
|
|
type: boolean
|
|
users:
|
|
type: array
|
|
items:
|
|
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"
|
|
administrator:
|
|
type: boolean
|
|
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
|
|
category:
|
|
$ref: components/schemas/CategoryObject.yaml#/CategoryObject
|
|
tagWhitelist:
|
|
type: array
|
|
items:
|
|
type: string
|
|
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:
|
|
$ref: components/schemas/TopicObject.yaml#/TopicObject
|
|
unreplied:
|
|
type: boolean
|
|
icons:
|
|
type: array
|
|
items:
|
|
type: string
|
|
description: HTML that is rendered by the theme
|
|
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
|
|
necroThreshold:
|
|
type: number
|
|
postEditDuration:
|
|
type: number
|
|
postDeleteDuration:
|
|
type: number
|
|
scrollToMyPost:
|
|
type: boolean
|
|
allowMultipleBadges:
|
|
type: boolean
|
|
privateUploads:
|
|
type: boolean
|
|
rssFeedUrl:
|
|
type: string
|
|
postIndex:
|
|
type: number
|
|
loggedInUser:
|
|
$ref: components/schemas/UserObject.yaml#/UserObject
|
|
- $ref: components/schemas/Pagination.yaml#/Pagination
|
|
- $ref: components/schemas/Breadcrumbs.yaml#/Breadcrumbs
|
|
- $ref: components/schemas/CommonProps.yaml#/CommonProps
|
|
/api/recent:
|
|
get:
|
|
tags:
|
|
- topics
|
|
summary: Get 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:
|
|
$ref: components/schemas/TopicObject.yaml#/TopicObject
|
|
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:
|
|
icon:
|
|
type: string
|
|
name:
|
|
type: string
|
|
bgColor:
|
|
type: string
|
|
nullable: true
|
|
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/recent/posts/{term}":
|
|
get:
|
|
tags:
|
|
- posts
|
|
summary: Get recent posts
|
|
parameters:
|
|
- name: term
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: daily
|
|
responses:
|
|
"200":
|
|
description: ""
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: components/schemas/PostsObject.yaml#/PostsObject
|
|
/api/unread:
|
|
get:
|
|
tags:
|
|
- topics
|
|
summary: Get 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:
|
|
type: string
|
|
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:
|
|
type: number
|
|
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/unread/total:
|
|
get:
|
|
tags:
|
|
- topics
|
|
summary: Get number of unread topics
|
|
responses:
|
|
"200":
|
|
description: "Success"
|
|
content:
|
|
text/plain:
|
|
schema:
|
|
type: number
|
|
"/api/topic/teaser/{topic_id}":
|
|
get:
|
|
tags:
|
|
- topics
|
|
summary: Get a topic's teaser post
|
|
parameters:
|
|
- name: topic_id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: 1
|
|
responses:
|
|
"200":
|
|
description: "A JSON object containing the teaser post for a topic"
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: components/schemas/PostsObject.yaml#/PostsObject
|
|
"/api/topic/pagination/{topic_id}":
|
|
get:
|
|
tags:
|
|
- topics
|
|
summary: Get topic pagination data
|
|
description: This route retrieves pagination data for a given topic. It is used mainly client-side, as it return data necessary to update a pagination block client-side.
|
|
parameters:
|
|
- name: topic_id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: 1
|
|
responses:
|
|
"200":
|
|
description: ""
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: components/schemas/Pagination.yaml#/Pagination
|
|
/api/post/upload:
|
|
post:
|
|
tags:
|
|
- posts
|
|
summary: Upload a file to a specific post
|
|
description: Provided by NodeBB core and used mainly by the composer, this route allows you to upload an image or file to a post.
|
|
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: Upload topic thumb
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
multipart/form-data:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
files:
|
|
type: array
|
|
items:
|
|
type: string
|
|
format: binary
|
|
required:
|
|
- files
|
|
responses:
|
|
"200":
|
|
description: "Image uploaded"
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
name:
|
|
type: string
|
|
description: The filename
|
|
url:
|
|
type: string
|
|
description: URL of the uploaded image for use client-side
|
|
path:
|
|
type: string
|
|
description: Path to the file in the local file system
|
|
/api/login:
|
|
get:
|
|
tags:
|
|
- authentication
|
|
summary: /api/login
|
|
responses:
|
|
"200":
|
|
description: ""
|
|
content:
|
|
application/json:
|
|
schema:
|
|
allOf:
|
|
- type: object
|
|
properties:
|
|
loginFormEntry:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
label:
|
|
type: string
|
|
description: A label for the added block
|
|
html:
|
|
type: string
|
|
description: HTML to render on the login page
|
|
styleName:
|
|
type: string
|
|
description: Custom identifier (value is added to `input[id]` and `label[for]`)
|
|
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: Get search results
|
|
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
|
|
required:
|
|
- posts
|
|
- matchCount
|
|
- pageCount
|
|
- time
|
|
- multiplePages
|
|
- search_query
|
|
- categories
|
|
- categoriesCount
|
|
- expandSearch
|
|
- showAsPosts
|
|
- showAsTopics
|
|
- title
|
|
- searchDefaultSortBy
|
|
- $ref: components/schemas/Pagination.yaml#/Pagination
|
|
- $ref: components/schemas/Breadcrumbs.yaml#/Breadcrumbs
|
|
- $ref: components/schemas/CommonProps.yaml#/CommonProps
|
|
"/api/reset":
|
|
get:
|
|
tags:
|
|
- authentication
|
|
summary: Get user password reset (step 1)
|
|
responses:
|
|
"200":
|
|
description: "A JSON object containing the 1st step of the user password reset flow"
|
|
content:
|
|
application/json:
|
|
schema:
|
|
allOf:
|
|
- type: object
|
|
properties:
|
|
code:
|
|
type: string
|
|
nullable: true
|
|
title:
|
|
type: string
|
|
- $ref: components/schemas/Breadcrumbs.yaml#/Breadcrumbs
|
|
- $ref: components/schemas/CommonProps.yaml#/CommonProps
|
|
"/api/reset/{code}":
|
|
get:
|
|
tags:
|
|
- authentication
|
|
summary: Get user password reset (step 2)
|
|
parameters:
|
|
- name: code
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: testCode
|
|
responses:
|
|
"200":
|
|
description: "A JSON object containing the 2nd step of the user password reset flow"
|
|
content:
|
|
application/json:
|
|
schema:
|
|
allOf:
|
|
- type: object
|
|
properties:
|
|
valid:
|
|
type: boolean
|
|
code:
|
|
type: string
|
|
minimumPasswordLength:
|
|
type: number
|
|
minimumPasswordStrength:
|
|
type: number
|
|
title:
|
|
type: string
|
|
- $ref: components/schemas/Breadcrumbs.yaml#/Breadcrumbs
|
|
- $ref: components/schemas/CommonProps.yaml#/CommonProps
|
|
"/api/email/unsubscribe/{token}":
|
|
# TODO: Need GET route here as well
|
|
post:
|
|
tags:
|
|
- emails
|
|
summary: Unsubscribe user from email type
|
|
parameters:
|
|
- name: token
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: testToken
|
|
responses:
|
|
"200":
|
|
description: "Successfully unsubscribed"
|
|
"500":
|
|
description: "Server-side error (likely token verification failure)"
|
|
"/api/post/{pid}":
|
|
get:
|
|
tags:
|
|
- shorthand
|
|
summary: Access a specific post
|
|
description: This route comes in handy when all you have is the `pid`, and you want to redirect users to the canonical URL for the topic, with the appropriate topic slug and post index.
|
|
parameters:
|
|
- name: pid
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: 1
|
|
responses:
|
|
"200":
|
|
description: "Canonical URL of topic"
|
|
content:
|
|
text/plain:
|
|
schema:
|
|
type: string
|
|
/api/flags:
|
|
get:
|
|
tags:
|
|
- flags
|
|
summary: Get flags list
|
|
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
|
|
nullable: true
|
|
analytics:
|
|
type: array
|
|
items:
|
|
type: number
|
|
categories:
|
|
type: object
|
|
properties: {}
|
|
additionalProperties:
|
|
type: string
|
|
description: All categories will be listed here, with the `cid` as the key, and the category name as the value
|
|
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
|
|
example: 1
|
|
responses:
|
|
"200":
|
|
description: ""
|
|
content:
|
|
application/json:
|
|
schema:
|
|
allOf:
|
|
- type: object
|
|
properties:
|
|
state:
|
|
type: string
|
|
flagId:
|
|
type: number
|
|
type:
|
|
type: string
|
|
targetId:
|
|
type: number
|
|
description:
|
|
type: string
|
|
uid:
|
|
type: number
|
|
description: A user identifier
|
|
datetime:
|
|
type: number
|
|
datetimeISO:
|
|
type: string
|
|
target_readable:
|
|
type: string
|
|
target:
|
|
type: object
|
|
properties: {}
|
|
additionalProperties:
|
|
description: Properties change depending on the target type (user, post, etc.)
|
|
assignee:
|
|
type: number
|
|
nullable: true
|
|
filters:
|
|
type: object
|
|
properties:
|
|
page:
|
|
type: number
|
|
perPage:
|
|
type: number
|
|
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:
|
|
type: object
|
|
properties:
|
|
uid:
|
|
type: number
|
|
content:
|
|
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:
|
|
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"
|
|
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: Get flag data
|
|
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: Get IP blacklist settings
|
|
responses:
|
|
"418":
|
|
description: "TODO: A proper response needs to be added. It is not really a teapot | Copy response from corresponding admin route"
|
|
/api/registration-queue:
|
|
get:
|
|
tags:
|
|
- admin
|
|
summary: Get registration queue
|
|
responses:
|
|
"418":
|
|
description: "TODO: A proper response needs to be added. It is not really a teapot | Copy response from corresponding admin route"
|
|
/api/tags:
|
|
get:
|
|
tags:
|
|
- tags
|
|
summary: Get 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/tags/{tag}":
|
|
get:
|
|
tags:
|
|
- tags
|
|
summary: Get tag data
|
|
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
|
|
example: test
|
|
- name: page
|
|
description: Page number used in pagination
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: number
|
|
example: ''
|
|
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
|
|
required:
|
|
- topics
|
|
- tag
|
|
- title
|
|
- categories
|
|
- $ref: components/schemas/Pagination.yaml#/Pagination
|
|
- $ref: components/schemas/Breadcrumbs.yaml#/Breadcrumbs
|
|
- $ref: components/schemas/CommonProps.yaml#/CommonProps
|
|
/api/popular:
|
|
get:
|
|
tags:
|
|
- topics
|
|
summary: Get 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:
|
|
$ref: components/schemas/TopicObject.yaml#/TopicObject
|
|
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:
|
|
icon:
|
|
type: string
|
|
name:
|
|
type: string
|
|
bgColor:
|
|
type: string
|
|
nullable: true
|
|
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/top:
|
|
get:
|
|
tags:
|
|
- topics
|
|
summary: Get 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:
|
|
$ref: components/schemas/TopicObject.yaml#/TopicObject
|
|
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
|
|
nullable: true
|
|
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/category/{category_id}/{slug}/{topic_index}":
|
|
get:
|
|
tags:
|
|
- categories
|
|
summary: Get a single category
|
|
description: This route retrieves a single category's data, along with its children and the topics created inside of the category.
|
|
parameters:
|
|
- name: category_id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: 1
|
|
- name: slug
|
|
description: This parameter is not required. If omitted, the request will be automatically redirected with the proper category slug.
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: test
|
|
- name: topic_index
|
|
description: This parameter is not required. If omitted, the request will presume that you want the first post. The API response is largely unaffected by this parameter, it is used client-side (to send the user to the requested post), and changes the meta/link tags in the server-side generated HTML.
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: 1
|
|
responses:
|
|
"200":
|
|
description: ""
|
|
content:
|
|
application/json:
|
|
schema:
|
|
allOf:
|
|
- $ref: components/schemas/CategoryObject.yaml#/CategoryObject
|
|
- type: object
|
|
properties:
|
|
tagWhitelist:
|
|
type: array
|
|
items:
|
|
type: string
|
|
unread-class:
|
|
type: string
|
|
children:
|
|
type: array
|
|
items:
|
|
$ref: components/schemas/CategoryObject.yaml#/CategoryObject
|
|
topics:
|
|
type: array
|
|
items:
|
|
$ref: components/schemas/TopicObject.yaml#/TopicObject
|
|
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: Access your profile
|
|
description: This shorthand is useful if you want to link to pages in your own account profile, but do not want (or have) the userslug. It is also especially useful as a means to instruct users on how to do things, as you can easily redirect them to their own profile pages.
|
|
responses:
|
|
"200":
|
|
description: ""
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: components/schemas/UserObject.yaml#/UserObjectFull
|
|
/api/me/*:
|
|
get:
|
|
tags:
|
|
- shorthand
|
|
summary: Access your own profile's sub-pages
|
|
description: >-
|
|
This shorthand is useful if you want to link to pages in your own account profile, but do not want (or have) the `userslug`. It is also especially useful as a
|
|
means to instruct users on how to do things, as you can easily redirect them to their own profile pages.
|
|
responses:
|
|
"200":
|
|
description: "Canonical URL to your requested profile page"
|
|
"/api/uid/{uid}/*":
|
|
get:
|
|
tags:
|
|
- shorthand
|
|
summary: Access a user's profile pages
|
|
description: >-
|
|
This particular shorthand is useful if you are looking to redirect to a user's profile (or other associated pages), but do not know or want to retrieve their userslug,
|
|
which is part of the canonical url.
|
|
|
|
For example, to go to `uid` 15's list of topics made, you can navigate to `/api/uid/15/topics`, which will send you to the appropriate canonical URL for that user's topics.
|
|
parameters:
|
|
- name: uid
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: 1
|
|
responses:
|
|
"200":
|
|
description: "Canonical URL of user profile page"
|
|
"/api/user/{userslug}":
|
|
get:
|
|
tags:
|
|
- users
|
|
summary: Get user profile
|
|
parameters:
|
|
- name: userslug
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: admin
|
|
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
|
|
example: admin
|
|
- name: page
|
|
in: query
|
|
schema:
|
|
type: number
|
|
example: ''
|
|
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
|
|
example: admin
|
|
- name: page
|
|
in: query
|
|
schema:
|
|
type: number
|
|
example: ''
|
|
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: Get user's watched categories
|
|
description: This route retrieves the list of categories and their watch states
|
|
parameters:
|
|
- name: userslug
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: admin
|
|
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: Get a user's posts
|
|
parameters:
|
|
- name: userslug
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: admin
|
|
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}/topics":
|
|
get:
|
|
tags:
|
|
- users
|
|
summary: Get a user's topics
|
|
parameters:
|
|
- name: userslug
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: admin
|
|
responses:
|
|
"200":
|
|
description: ""
|
|
content:
|
|
application/json:
|
|
schema:
|
|
allOf:
|
|
- $ref: components/schemas/UserObject.yaml#/UserObjectFull
|
|
- type: object
|
|
properties:
|
|
topics:
|
|
type: array
|
|
items:
|
|
$ref: components/schemas/TopicObject.yaml#/TopicObject
|
|
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: Get a user's best performing topics
|
|
parameters:
|
|
- name: userslug
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: admin
|
|
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: Get user's groups
|
|
parameters:
|
|
- name: userslug
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: admin
|
|
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
|
|
- $ref: components/schemas/Breadcrumbs.yaml#/Breadcrumbs
|
|
- $ref: components/schemas/CommonProps.yaml#/CommonProps
|
|
"/api/user/{userslug}/bookmarks":
|
|
get:
|
|
tags:
|
|
- users
|
|
summary: Get user's bookmarks
|
|
parameters:
|
|
- name: userslug
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: admin
|
|
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}/watched":
|
|
get:
|
|
tags:
|
|
- users
|
|
summary: Get user's watched topics
|
|
parameters:
|
|
- name: userslug
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: admin
|
|
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:
|
|
$ref: components/schemas/TopicObject.yaml#/TopicObject
|
|
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}/ignored":
|
|
get:
|
|
tags:
|
|
- users
|
|
summary: Get user's ignored topics
|
|
parameters:
|
|
- name: userslug
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: admin
|
|
responses:
|
|
"200":
|
|
description: ""
|
|
content:
|
|
application/json:
|
|
schema:
|
|
allOf:
|
|
- $ref: components/schemas/UserObject.yaml#/UserObjectFull
|
|
- type: object
|
|
properties:
|
|
topics:
|
|
type: array
|
|
items:
|
|
$ref: components/schemas/TopicObject.yaml#/TopicObject
|
|
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: Get user's upvoted posts
|
|
parameters:
|
|
- name: userslug
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: admin
|
|
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
|
|
description: Translation key for message notifying user that there were no posts found
|
|
title:
|
|
type: string
|
|
showSort:
|
|
type: boolean
|
|
sortOptions:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
url:
|
|
type: string
|
|
name:
|
|
type: string
|
|
selected:
|
|
type: boolean
|
|
required:
|
|
- posts
|
|
- nextStart
|
|
- noItemsFoundKey
|
|
- title
|
|
- $ref: components/schemas/Pagination.yaml#/Pagination
|
|
- $ref: components/schemas/Breadcrumbs.yaml#/Breadcrumbs
|
|
- $ref: components/schemas/CommonProps.yaml#/CommonProps
|
|
"/api/user/{userslug}/downvoted":
|
|
get:
|
|
tags:
|
|
- users
|
|
summary: Get user's downvoted posts
|
|
parameters:
|
|
- name: userslug
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: admin
|
|
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
|
|
description: Translation key for message notifying user that there were no posts found
|
|
title:
|
|
type: string
|
|
showSort:
|
|
type: boolean
|
|
sortOptions:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
url:
|
|
type: string
|
|
name:
|
|
type: string
|
|
selected:
|
|
type: boolean
|
|
required:
|
|
- posts
|
|
- nextStart
|
|
- noItemsFoundKey
|
|
- title
|
|
- $ref: components/schemas/Pagination.yaml#/Pagination
|
|
- $ref: components/schemas/Breadcrumbs.yaml#/Breadcrumbs
|
|
- $ref: components/schemas/CommonProps.yaml#/CommonProps
|
|
"/api/user/{userslug}/edit":
|
|
get:
|
|
tags:
|
|
- users
|
|
summary: Get user profile for editing
|
|
parameters:
|
|
- name: userslug
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: admin
|
|
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:
|
|
type: object
|
|
properties:
|
|
link:
|
|
type: string
|
|
description: A relative path to the page linked to
|
|
text:
|
|
type: string
|
|
description: Button label
|
|
- $ref: components/schemas/Breadcrumbs.yaml#/Breadcrumbs
|
|
- $ref: components/schemas/CommonProps.yaml#/CommonProps
|
|
"/api/user/{userslug}/edit/username":
|
|
get:
|
|
tags:
|
|
- users
|
|
summary: Get configs for username editing
|
|
parameters:
|
|
- name: userslug
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: admin
|
|
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: Get configs for email editing
|
|
parameters:
|
|
- name: userslug
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: admin
|
|
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: Get configs for password editing
|
|
parameters:
|
|
- name: userslug
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: admin
|
|
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: Get user moderation info
|
|
description: Administrators and Global Moderators get access to the `/info` page, which shows some backend data that is useful from a moderation point-of-view (such as IP addresses, recent bans, moderation history, etc).
|
|
parameters:
|
|
- name: userslug
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: admin
|
|
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
|
|
additionalProperties:
|
|
description: Contextual data is added to this object (such as topic data, etc.)
|
|
bans:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
uid:
|
|
type: number
|
|
timestamp:
|
|
type: number
|
|
expire:
|
|
type: number
|
|
fromUid:
|
|
type: number
|
|
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"
|
|
until:
|
|
type: number
|
|
untilReadable:
|
|
type: string
|
|
timestampReadable:
|
|
type: string
|
|
timestampISO:
|
|
type: string
|
|
reason:
|
|
type: string
|
|
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:
|
|
type: object
|
|
properties:
|
|
uid:
|
|
type: number
|
|
note:
|
|
type: string
|
|
timestamp:
|
|
type: number
|
|
timestampISO:
|
|
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"
|
|
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: Get user's settings
|
|
parameters:
|
|
- name: userslug
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: admin
|
|
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
|
|
topicPostSort:
|
|
type: string
|
|
openOutgoingLinksInNewTab:
|
|
type: boolean
|
|
dailyDigestFreq:
|
|
type: string
|
|
showfullname:
|
|
type: boolean
|
|
followTopicsOnCreate:
|
|
type: boolean
|
|
followTopicsOnReply:
|
|
type: boolean
|
|
restrictChat:
|
|
type: boolean
|
|
topicSearchEnabled:
|
|
type: boolean
|
|
categoryTopicSort:
|
|
type: string
|
|
userLang:
|
|
type: string
|
|
bootswatchSkin:
|
|
type: string
|
|
homePageRoute:
|
|
type: string
|
|
scrollToMyPost:
|
|
type: boolean
|
|
notificationSound:
|
|
type: string
|
|
incomingChatSound:
|
|
type: string
|
|
outgoingChatSound:
|
|
type: string
|
|
notificationType_new-chat:
|
|
type: string
|
|
notificationType_new-reply:
|
|
type: string
|
|
notificationType_post-edit:
|
|
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
|
|
required:
|
|
- showemail
|
|
- usePagination
|
|
- topicsPerPage
|
|
- postsPerPage
|
|
- topicPostSort
|
|
- openOutgoingLinksInNewTab
|
|
- dailyDigestFreq
|
|
- showfullname
|
|
- followTopicsOnCreate
|
|
- followTopicsOnReply
|
|
- restrictChat
|
|
- topicSearchEnabled
|
|
- categoryTopicSort
|
|
- userLang
|
|
- bootswatchSkin
|
|
- homePageRoute
|
|
- scrollToMyPost
|
|
- notificationType_new-chat
|
|
- notificationType_new-reply
|
|
- notificationType_upvote
|
|
- notificationType_new-topic
|
|
- notificationType_follow
|
|
- notificationType_group-invite
|
|
- upvoteNotifFreq
|
|
- acpLang
|
|
- notificationType_new-register
|
|
- notificationType_post-queue
|
|
- notificationType_new-post-flag
|
|
- notificationType_new-user-flag
|
|
- categoryWatchState
|
|
- notificationType_group-request-membership
|
|
- uid
|
|
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:
|
|
type: object
|
|
properties: {}
|
|
additionalProperties: {}
|
|
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: Get user's uploads
|
|
parameters:
|
|
- name: userslug
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: admin
|
|
responses:
|
|
"200":
|
|
description: ""
|
|
content:
|
|
application/json:
|
|
schema:
|
|
allOf:
|
|
- $ref: components/schemas/UserObject.yaml#/UserObjectFull
|
|
- type: object
|
|
properties:
|
|
uploads:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
name:
|
|
type: string
|
|
url:
|
|
type: string
|
|
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: Get user's GDPR consent settings
|
|
parameters:
|
|
- name: userslug
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: admin
|
|
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: Get user's blocks
|
|
parameters:
|
|
- name: userslug
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: admin
|
|
responses:
|
|
"200":
|
|
description: ""
|
|
content:
|
|
application/json:
|
|
schema:
|
|
allOf:
|
|
- $ref: components/schemas/UserObject.yaml#/UserObjectFull
|
|
- type: object
|
|
properties:
|
|
users:
|
|
type: array
|
|
items:
|
|
$ref: components/schemas/UserObject.yaml#/UserObjectSlim
|
|
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: Get user's active sessions
|
|
parameters:
|
|
- name: userslug
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: admin
|
|
responses:
|
|
"200":
|
|
description: ""
|
|
content:
|
|
application/json:
|
|
schema:
|
|
allOf:
|
|
- $ref: components/schemas/UserObject.yaml#/UserObjectFull
|
|
- type: object
|
|
properties:
|
|
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
|
|
title:
|
|
type: string
|
|
- $ref: components/schemas/Breadcrumbs.yaml#/Breadcrumbs
|
|
- $ref: components/schemas/CommonProps.yaml#/CommonProps
|
|
"/api/user/{userslug}/session/{uuid}":
|
|
delete:
|
|
tags:
|
|
- users
|
|
summary: Revoke a user session
|
|
parameters:
|
|
- name: userslug
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: admin
|
|
- name: uuid
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: testuuid
|
|
responses:
|
|
"200":
|
|
description: User session revoked
|
|
/api/notifications:
|
|
get:
|
|
tags:
|
|
- notifications
|
|
summary: Get 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
|
|
additionalProperties: {}
|
|
regularFilters:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
name:
|
|
type: string
|
|
filter:
|
|
type: string
|
|
selected:
|
|
type: boolean
|
|
required:
|
|
- name
|
|
- filter
|
|
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: Get chat room
|
|
parameters:
|
|
- name: userslug
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: admin
|
|
- name: roomid
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: 1
|
|
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
|
|
nullable: true
|
|
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
|
|
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
|
|
nullable: true
|
|
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
|
|
nullable: true
|
|
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: Access a chat room
|
|
description: Redirects a request to the proper chat page URL
|
|
parameters:
|
|
- name: roomid
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: 1
|
|
responses:
|
|
"200":
|
|
description: "Chat identifier resolved"
|
|
content:
|
|
text/plain:
|
|
schema:
|
|
type: string
|
|
description: A relative path to the canonical URL for that chat page
|
|
/api/groups:
|
|
get:
|
|
tags:
|
|
- groups
|
|
summary: Get user 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: Get user group details
|
|
parameters:
|
|
- name: slug
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: administrators
|
|
responses:
|
|
"200":
|
|
description: ""
|
|
content:
|
|
application/json:
|
|
schema:
|
|
allOf:
|
|
- type: object
|
|
properties:
|
|
title:
|
|
type: string
|
|
group:
|
|
$ref: components/schemas/GroupObject.yaml#/GroupFullObject
|
|
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: slug
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: administrators
|
|
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
|