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