Base URL: /api/v1
POST /auth/register(rate limited)POST /auth/login(rate limited)
POST /auth/register accepts:
usernameemailpasswordgender- optional
roleId
GET /users/:userId/posts(public)POST /users(authenticated, privileged)GET /users(authenticated, privileged)GET /users/:id(authenticated, privileged)PATCH /users/:id(authenticated, privileged)DELETE /users/:id(authenticated, privileged)PATCH /users/:id/profile(authenticated, privileged)
POST /posts(authenticated)GET /posts(authenticated)GET /posts/:idOrSlug(authenticated)PATCH /posts/:idOrSlug(post author only)PATCH /posts/:idOrSlug/publish(post author only)PATCH /posts/:idOrSlug/draft(post author only)DELETE /posts/:idOrSlug(post author or privileged user)
POST /categories(authenticated, privileged)GET /categories(public)GET /categories/:idOrSlug(public)PATCH /categories/:idOrSlug(authenticated, privileged)DELETE /categories/:idOrSlug(authenticated, privileged)
POST /tags(authenticated, privileged)GET /tags(public)GET /tags/:idOrSlug(public)PATCH /tags/:idOrSlug(authenticated, privileged)DELETE /tags/:idOrSlug(authenticated, privileged)
POST /comments(authenticated)GET /comments/:postId(authenticated)PATCH /comments/:id(comment author only)DELETE /comments/:id(privileged user, comment author, or post author)
GET /permissions(authenticated, requires permission access)
Optional query:
module
POST /roles(authenticated, requirescreate_role)GET /roles(authenticated, requiresview_roles)GET /roles/:id(authenticated, requiresview_role)PATCH /roles/:id(authenticated, requiresedit_role)DELETE /roles/:id(authenticated, requiresdelete_role)
GET /health