4.8 KiB
API Guide
All endpoints except the /setup
and /authenticate
need an access token.
The access token can be passed in the following ways
x-access-token
in the request headers (recommended)
token
as a URL param
token
in the request body
All responses follow a uniform structure across all endpoints.
{
"error": {
"error": "boolean",
"message": "string"
},
"code": "string",
"data": {
// Contains the response data. Example: array or all topics for a GET /api/topics request
}
}
Matterwiki database has 4 models/tables.
- Articles
- Topics
- Users
- Archives
Here is a list of all the endpoints with the action they perform.
POST /api/setup
Create the admin user with id=1. There is only one admin (as of now) who is identified with his ID.
Required Params:
name
about
email
password
(the above keys should be present in the request body)
Access Token
POST /api/authenticate
Takes the user's email and password and returns the auth token.
Required Params:
email
password
(the above keys should be present in the request body)
GET /api/users
(ADMIN ONLY)
Returns a list of all users.
Required Params:
Access Token
POST /api/users
(ADMIN ONLY)
Takes the user's name, about, email and password and creates an account for that user.
Required Params:
name
about
email
password
(the above keys should be present in the request body)
Access Token
PUT /api/users
(ADMIN ONLY)
Takes the user's id, name, about, email and password and creates an account for that user. It first finds the user with the given ID and then updates its profile fields with the given values.
Required Params:
id
name
about
email
password
(the above keys should be present in the request body)
Access Token
DELETE /api/users
(ADMIN ONLY)
Takes a user id and deletes the user from the database.
Required Params:
id
(the above key should be present in the request body)
Access Token
GET /api/topics
Returns a list of all topics in the database.
Required Params:
Access Token
POST /api/topics
(ADMIN ONLY)
Takes the topic name and description and creates the topic in the database.
Required Params:
name
description
(the above keys should be present in the request body)
Access Token
PUT /api/topics
(ADMIN ONLY)
Takes the topic id, name, about, email and password. It first finds the topic with the given ID and then updates its profile fields with the given values.
Required Params:
id
name
description
(the above keys should be present in the request body)
Access Token
DELETE /api/topics
(ADMIN ONLY)
Takes the id of the topic which has to deleted.
Required Params:
id
(the above key should be present in the request body)
Access Token
GET /api/topics/:id/articles
Returns the list of all the articles filed under the topic with id.
Replace :id
in the URL with the id of the topic you want to get the articles of.
Required Params:
id (topic ID in URL)
Access Token
GET /api/archives/:id
Returns the archive with the given id.
Replace :id
in the URL with the id of the archive you want to get.
Required Params:
id (archive ID in URL)
Access Token
GET /api/articles
Returns all the articles in the database
Required Params:
Access Token
POST /api/articles
Takes the article title, body, topic_id and user_id and creates the record in the database.
Required Params:
title
body
topic_id
user_id
(the above keys should be present in the request body)
Access Token
PUT /api/articles
Takes the article id, title, body, topic_id, user_id. It first finds the topic with the given ID and then updates its fields with the given values.
Required Params:
id
title
body
topic_id
user_id
(the above keys should be present in the request body)
Access Token
DELETE /api/articles
(ADMIN ONLY)
Takes the id of the topic which has to be deleted and removes that entry from the database.
Required Params:
id
(the above key should be present in the request body)
Access Token
GET /api/articles/:id
Returns the article with the given id. Replace :id in the URL with the id of the article you want to get.
Required Params:
id (archive ID in URL)
Access Token
GET /api/articles/:id/history
Returns all the previous versions of the article with the given id. Replace :id in the URL with the id of the article you want to get.
Required Params:
id (article ID in URL)
Access Token
POST /api/logo
(ADMIN ONLY)
Takes an image as a file and the access token of the user. If the user is an admin, updates the logo image in the assets folder with the new image. Else, returns an error.
Required Params:
Logo File
Access Token