mirror of
https://github.com/NodeBB/NodeBB.git
synced 2026-01-02 13:50:36 +01:00
* chore: up deps * chore: up composer * fix(deps): bump 2factor to v7 * chore: up harmony * chore: up harmony * fix: missing await * feat: allow middlewares to pass in template values via res.locals * feat: buildAccountData middleware automatically added ot all account routes * fix: properly allow values in res.locals.templateValues to be added to the template data * refactor: user/blocks * refactor(accounts): categories and consent * feat: automatically 404 if exposeUid or exposeGroupName come up empty * refactor: remove calls to getUserDataByUserSlug for most account routes, since it is populated via middleware now * fix: allow exposeUid and exposeGroupName to work with slugs with mixed capitalization * fix: move reputation removal check to accountHelpers method * test: skip i18n tests if ref branch when present is not develop * fix(deps): bump theme versions * fix(deps): bump ntfy and 2factor * chore: up harmony * fix: add missing return * fix: #11191, only focus on search input on md environments and up * feat: allow file uploads on mobile chat closes https://github.com/NodeBB/NodeBB/issues/11217 * chore: up themes * chore: add lang string * fix(deps): bump ntfy to 1.0.15 * refactor: use new if/each syntax * chore: up composer * fix: regression from user helper refactor * chore: up harmony * chore: up composer * chore: up harmony * chore: up harmony * chore: up harmony * chore: fix composer version * feat: add increment helper * chore: up harmony * fix: #11228 no timestamps in future ⌛ * chore: up harmony * check config.theme as well fire action:posts.loaded after processing dom * chore: up harmony * chore: up harmony * chore: up harmony * chore: up themes * chore: up harmony * remove extra class * refactor: move these to core from harmony * chore: up widgets * chore: up widgets * height auto * fix: closes #11238 * dont focus inputs, annoying on mobile * fix: dont focus twice, only focus on chat input on desktop dont wrap widget footer in row * chore: up harmony * chore: up harmony * update chat window * chore: up themes * fix cache buster for skins * chat fixes * chore: up harmony * chore: up composer * refactor: change hook logs to debug * fix: scroll to post right after adding to dom * fix: hash scrolling and highlighting correct post * test: re-enable read API schema tests * fix: add back schema changes for179faa2270andc3920ccb10* fix: schema changes from488f0978a4* fix: schema changes forf4cf482a87* fix: schema update forbe6bbabd0e* fix: schema changes for69c96078ea* fix: schema changes ford1364c3130* fix: schema changes for84ff1152f7* fix: schema changes forb860c2605c* fix: schema changes for23cb67a112* fix: schema changes forb916e42f40* fix: schema change fora9bbb586fc* fix: schema changes for4b738c8cd3* fix: schema changes for58b5781cea* fix: schema changes for794bf01b21* fix: schema changes for80ea12c1c1,e368feef51, and52ead114be* fix: composer-default object in config? * fix: schema changes for9acdc6808cand0930934200* fix: schema changes forc0a52924f1* fix: schema change foraba420a3f3, move loggedInUser to optional props * fix: schema changes for8c67031609* fix: schema changes for27e53b42f3* fix: schema changes for2835966518* fix: breaking test for email confirmation API call * fix: schema changes for refactored search page * fix: schema changes for user object * fix: schema changes for9f531f957e* fix: schema changes forc4042c70deand23175110a2* fix: schema changes for9b3616b103* fix: schema changes for5afd5de07d* fix: schema change for1d7baf1217* fix: schema changes for57bfb37c55andbe6bbabd0e* fix: schema changes for6e86b4afa2and3efad2e13band68f66223e7* fix: allowing optional qs prop in pagination keys (not sure why this didn't break before) * fix: re-login on email change * fix: schema changes forc926358d73* fix: schema changes for388a8270c9* fix: schema change for2658bcc821* fix: no need to call account middlewares for chats routes * fix: schema changes for71743affc3* fix: final schema changes * test: support for anyOf and oneOf * fix: check thumb * dont scroll to top on back press * remove group log * fix: add top margin to merged and deleted alerts * chore: up widgets * fix: improve fix-lists mixin * chore: up harmony/composer * feat: allow hiding quicksearch results during search * dont record searches made by composer * chore: up 54 * chore: up spam be gone * feat: add prev/next page and page count into mobile paginator * chore: up harmony * chore: up harmony * use old style for IS * fix: hide entire toolbar row if no posts or not singlePost * fix: updated messaging for post-queue template, #11206 * fix: btn-sm on post queue back button * fix: bump harmony, closes #11206 * fix: remove unused alert module import * fix: bump harmony * fix: bump harmony * chore: up harmony * refactor: IS scrolltop * fix: update users:search-user-for-chat source string * feat: support for mark-read toggle on chats dropdown and recent chats list * feat: api v3 calls to mark chat read/unread * feat: send event:chats.mark socket event on mark read or unread * refactor: allow frontend to mark chats as unread, use new API v3 routes instead of socket calls, better frontend event handling * docs: openapi schema updates for chat marking * fix: allow unread state toggling in chats dropdown too * fix: issue where repeated openings of the chats dropdown would continually add events for mark-read/unread * fix: debug log * refactor: move userSearch filter to a module * feat(routes): allow remounting /categories (#11230) * feat: send flags count to frontend on flags list page * refactor: filter form client-side js to extract out some logic * fix: applyFilters to not take any arguments, update selectedCids in updateButton instead of onHidden * fix: use userFilter module for assignee, reporterId, targetUid * fix(openapi): schema changes for updated flags page * fix: dont allow adding duplicates to userFilter * use same var * remove log * fix: closes #11282 * feat: lang key for x-topics * chore: up harmony * chore: up emoji * chore: up harmony * fix: update userFilter to allow new option `selectedBlock` * fix: wrong block name passed to userFilter * fix: https://github.com/NodeBB/NodeBB/issues/11283 * fix: chats, allow multiple dropdowns like in harmony * chore: up harmony * refactor: flag note adding/editing, closes #11285 * fix: remove old prepareEdit logic * chore: add caveat about hacky code block in userFilter module * fix: placeholders for userFilter module * refactor: navigator so it works with multiple thumbs/navigators * chore: up harmony * fix: closes #11287, destroy quick reply autocomplete on navigation * fix: filter disabled categories on user categories page count * chore: up harmony * docs: update openapi spec to include info about passing in timestamps for topic creation, removing timestamp as valid request param for topic replying * fix: send back null values on ACP search dashboard for startDate and endDate if not expicitly passed in, fix tests * fix: tweak table order in ACP dash searches * fix: only invoke navigator click drag on left mouse button * feat: add back unread indicator to navigator * clear bookmark on mark unread * fix: navigator crash on ajaxify * better thumb top calculation * fix: reset user bookmark when topic is marked unread * Revert "fix: reset user bookmark when topic is marked unread" This reverts commit9bcd85c2c6. * fix: update unread indicator on scroll, add unread count * chore: bump harmony * fix: crash on navigator unread update when backing out of a topic * fix: closes #11183 * fix: update topics:recent zset when rescheduling a topic * fix: dupe quote button, increase delay, hide immediately on empty selection * fix: navigator not showing up on first load * refactor: remove glance assorted fixes to navigator dont reduce remaning count if user scrolls down and up quickly only call topic.navigatorCallback when index changes * more sanity checks for bookmark dont allow setting bookmark higher than topic postcount * closes #11218, 🚋 * Revert "fix: update topics:recent zset when rescheduling a topic" This reverts commit737973cca9. * fix: #11306, show proper error if queued post doesn't exist was showing no-privileges if someone else accepted the post * https://github.com/NodeBB/NodeBB/issues/11307 dont use li * chore: up harmony * chore: bump version string * fix: copy paste fail * feat: closes #7382, tag filtering add client side support for filtering by tags on /category, /recent and /unread * chore: up harmony * chore: up harmony * Revert "fix: add back req.query fallback for backwards compatibility" [breaking] This reverts commitcf6cc2c454. This commit is no longer required as passing in a CSRF token via query parameter is no longer supported as of NodeBB v3.x This is a breaking change. * fix: pass csrf token in form data, re: NodeBB/NodeBB#11309 * chore: up deps * fix: tests, use x-csrf-token query param removed * test: fix csrf_token * lint: remove unused * feat: add itemprop="image" to avatar helper * fix: get chat upload button in chat modal * breaking: remove deprecated socket.io methods * test: update messaging tests to not use sockets * fix: parent post links * fix: prevent post tooltip if mouse leaves before data/tpl is loaded * chore: up harmony * chore: up harmony * chore: up harmony * chore: up harmony * fix: nested replies indices * fix(deps): bump 2factor * feat: add loggedIn user to all api routes * chore: up themes * refactor: audit admin v3 write api routes as per #11321 * refactor: audit category v3 write api routes as per #11321 [breaking] docs: fix open api spec for #11321 * refactor: audit chat v3 write api routes as per #11321 * refactor: audit files v3 write api routes as per #11321 * refactor: audit flags v3 write api routes as per #11321 * refactor: audit posts v3 write api routes as per #11321 * refactor: audit topics v3 write api routes as per #11321 * refactor: audit users v3 write api routes as per #11321 * fix: lang string * remove min height * fix: empty topic/labels taking up space * fix: tag filtering when changing filter to watched topics or changing popular time limit to month * chore: up harmony * fix: closes #11354, show no post error if queued post already accepted/rejected * test: #11354 * test: #11354 * fix(deps): bump 2factor * fix: #11357 clear cache on thumb remove * fix: thumb remove on windows, closes #11357 * test: openapi for thumbs * test: fix openapi --------- Co-authored-by: Julian Lam <julian@nodebb.org> Co-authored-by: Opliko <opliko.reg@protonmail.com>
180 lines
6.3 KiB
YAML
180 lines
6.3 KiB
YAML
openapi: 3.0.0
|
|
info:
|
|
title: NodeBB Write API
|
|
description: >-
|
|
# Overview
|
|
|
|
The following document outlines every route exposed by the NodeBB Write API. As of NodeBB v1.15.0, NodeBB will use these routes to make changes to the database (e.g. creating new posts, editing user profiles, etc.)
|
|
|
|
We invite you to build external integrations with NodeBB using this document as a guide.
|
|
|
|
# History
|
|
|
|
Up until v1.15.0, NodeBB utilised the [WebSocket](https://en.wikipedia.org/wiki/WebSocket) protocol to communicate with the backend. However, it was decided in early 2020 that this usage of WebSocket – while functional – led to occasional wheel reinvention and disregarded an otherwise fully-featured technology (that is, REST).
|
|
|
|
Years prior to this determination, many users of NodeBB had asked for a RESTful API to call against NodeBB, which led to the creation of [`nodebb-plugin-write-api`](https://github.com/NodeBB/nodebb-plugin-write-api). In tandem with the above decision, the Write API was merged into NodeBB core in late 2020.
|
|
|
|
v3 of the Write API (this document) achieves rough feature parity with v2 of the Write API plugin.
|
|
|
|
# Authentication
|
|
|
|
Please see the ["Authentication" section under the Read API](../read/#section/Overview/Authentication) for more information on how to authenticate against this API in order to make calls.
|
|
version: 1.19.0
|
|
contact:
|
|
email: support@nodebb.org
|
|
license:
|
|
name: GPL-3.0
|
|
servers:
|
|
- url: /api/v3
|
|
tags:
|
|
- name: utilities
|
|
description: Utility calls to test Write API functionality
|
|
- name: users
|
|
description: Account related calls (create, modify, delete, etc.)
|
|
- name: groups
|
|
description: Calls related to user groups
|
|
- name: categories
|
|
description: Administrative calls to manage categories
|
|
- name: topics
|
|
description: Topic-based calls (create, modify, delete, etc.)
|
|
- name: posts
|
|
description: Individual post-related calls (create, modify, delete, etc.)
|
|
- name: chats
|
|
description: Calls related to the user private messaging system
|
|
- name: admin
|
|
description: Administrative calls
|
|
- name: files
|
|
description: File upload routes
|
|
paths:
|
|
/ping:
|
|
$ref: 'write/ping.yaml'
|
|
/utilities/login:
|
|
$ref: 'write/login.yaml'
|
|
/users/:
|
|
$ref: 'write/users.yaml'
|
|
/users/{uid}:
|
|
$ref: 'write/users/uid.yaml'
|
|
/users/{uid}/picture:
|
|
$ref: 'write/users/uid/picture.yaml'
|
|
/users/{uid}/content:
|
|
$ref: 'write/users/uid/content.yaml'
|
|
/users/{uid}/account:
|
|
$ref: 'write/users/uid/account.yaml'
|
|
/users/{uid}/settings:
|
|
$ref: 'write/users/uid/settings.yaml'
|
|
/users/{uid}/password:
|
|
$ref: 'write/users/uid/password.yaml'
|
|
/users/{uid}/follow:
|
|
$ref: 'write/users/uid/follow.yaml'
|
|
/users/{uid}/ban:
|
|
$ref: 'write/users/uid/ban.yaml'
|
|
/users/{uid}/mute:
|
|
$ref: 'write/users/uid/mute.yaml'
|
|
/users/{uid}/tokens:
|
|
$ref: 'write/users/uid/tokens.yaml'
|
|
/users/{uid}/tokens/{token}:
|
|
$ref: 'write/users/uid/tokens/token.yaml'
|
|
/users/{uid}/sessions/{uuid}:
|
|
$ref: 'write/users/uid/sessions/uuid.yaml'
|
|
/users/{uid}/invites:
|
|
$ref: 'write/users/uid/invites.yaml'
|
|
/users/{uid}/invites/groups:
|
|
$ref: 'write/users/uid/invites/groups.yaml'
|
|
/users/{uid}/emails:
|
|
$ref: 'write/users/uid/emails.yaml'
|
|
/users/{uid}/emails/{email}:
|
|
$ref: 'write/users/uid/emails/email.yaml'
|
|
/users/{uid}/emails/{email}/confirm:
|
|
$ref: 'write/users/uid/emails/email/confirm.yaml'
|
|
/users/{uid}/exports/{type}:
|
|
$ref: 'write/users/uid/exports/type.yaml'
|
|
/groups/:
|
|
$ref: 'write/groups.yaml'
|
|
/groups/{slug}:
|
|
$ref: 'write/groups/slug.yaml'
|
|
/groups/{slug}/membership/{uid}:
|
|
$ref: 'write/groups/slug/membership/uid.yaml'
|
|
/groups/{slug}/ownership/{uid}:
|
|
$ref: 'write/groups/slug/ownership/uid.yaml'
|
|
/categories/:
|
|
$ref: 'write/categories.yaml'
|
|
/categories/{cid}:
|
|
$ref: 'write/categories/cid.yaml'
|
|
/categories/{cid}/privileges:
|
|
$ref: 'write/categories/cid/privileges.yaml'
|
|
/categories/{cid}/privileges/{privilege}:
|
|
$ref: 'write/categories/cid/privileges/privilege.yaml'
|
|
/categories/{cid}/moderator/{uid}:
|
|
$ref: 'write/categories/cid/moderator/uid.yaml'
|
|
/topics/:
|
|
$ref: 'write/topics.yaml'
|
|
/topics/{tid}:
|
|
$ref: 'write/topics/tid.yaml'
|
|
/topics/{tid}/state:
|
|
$ref: 'write/topics/tid/state.yaml'
|
|
/topics/{tid}/lock:
|
|
$ref: 'write/topics/tid/lock.yaml'
|
|
/topics/{tid}/pin:
|
|
$ref: 'write/topics/tid/pin.yaml'
|
|
/topics/{tid}/follow:
|
|
$ref: 'write/topics/tid/follow.yaml'
|
|
/topics/{tid}/ignore:
|
|
$ref: 'write/topics/tid/ignore.yaml'
|
|
/topics/{tid}/tags:
|
|
$ref: 'write/topics/tid/tags.yaml'
|
|
/topics/{tid}/thumbs:
|
|
$ref: 'write/topics/tid/thumbs.yaml'
|
|
/topics/{tid}/thumbs/order:
|
|
$ref: 'write/topics/tid/thumbs/order.yaml'
|
|
/topics/{tid}/events:
|
|
$ref: 'write/topics/tid/events.yaml'
|
|
/topics/{tid}/events/{eventId}:
|
|
$ref: 'write/topics/tid/events/eventId.yaml'
|
|
/posts/{pid}:
|
|
$ref: 'write/posts/pid.yaml'
|
|
/posts/{pid}/state:
|
|
$ref: 'write/posts/pid/state.yaml'
|
|
/posts/{pid}/move:
|
|
$ref: 'write/posts/pid/move.yaml'
|
|
/posts/{pid}/vote:
|
|
$ref: 'write/posts/pid/vote.yaml'
|
|
/posts/{pid}/bookmark:
|
|
$ref: 'write/posts/pid/bookmark.yaml'
|
|
/posts/{pid}/diffs:
|
|
$ref: 'write/posts/pid/diffs.yaml'
|
|
/posts/{pid}/diffs/{since}:
|
|
$ref: 'write/posts/pid/diffs/since.yaml'
|
|
/posts/{pid}/diffs/{timestamp}:
|
|
$ref: 'write/posts/pid/diffs/timestamp.yaml'
|
|
/chats/:
|
|
$ref: 'write/chats.yaml'
|
|
/chats/{roomId}:
|
|
$ref: 'write/chats/roomId.yaml'
|
|
/chats/{roomId}/state:
|
|
$ref: 'write/chats/roomId/state.yaml'
|
|
/chats/{roomId}/users:
|
|
$ref: 'write/chats/roomId/users.yaml'
|
|
/chats/{roomId}/users/{uid}:
|
|
$ref: 'write/chats/roomId/users/uid.yaml'
|
|
/chats/{roomId}/messages:
|
|
$ref: 'write/chats/roomId/messages.yaml'
|
|
/chats/{roomId}/messages/{mid}:
|
|
$ref: 'write/chats/roomId/messages/mid.yaml'
|
|
/flags/:
|
|
$ref: 'write/flags.yaml'
|
|
/flags/{flagId}:
|
|
$ref: 'write/flags/flagId.yaml'
|
|
/flags/{flagId}/notes:
|
|
$ref: 'write/flags/flagId/notes.yaml'
|
|
/flags/{flagId}/notes/{datetime}:
|
|
$ref: 'write/flags/flagId/notes/datetime.yaml'
|
|
/admin/settings/{setting}:
|
|
$ref: 'write/admin/settings/setting.yaml'
|
|
/admin/analytics:
|
|
$ref: 'write/admin/analytics.yaml'
|
|
/admin/analytics/{set}:
|
|
$ref: 'write/admin/analytics/set.yaml'
|
|
/files/:
|
|
$ref: 'write/files.yaml'
|
|
/files/folder:
|
|
$ref: 'write/files/folder.yaml' |