Add API description to README
This commit is contained in:
parent
dd1b9be50e
commit
81536d6a24
|
@ -1,4 +1,8 @@
|
||||||
Setup:
|
# Protospace lockout authorization server
|
||||||
|
|
||||||
|
Provides an API to the web client and web server to serve tool data and authenticate users on tools.
|
||||||
|
|
||||||
|
## Setup
|
||||||
|
|
||||||
```
|
```
|
||||||
$ virtualenv -p python3 env
|
$ virtualenv -p python3 env
|
||||||
|
@ -8,3 +12,124 @@ $ . env/bin/activate
|
||||||
(env) $ python manage.py createsuperuser --email admin@example.com --username admin
|
(env) $ python manage.py createsuperuser --email admin@example.com --username admin
|
||||||
(env) $ python manage.py runserver
|
(env) $ python manage.py runserver
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## API
|
||||||
|
|
||||||
|
The API is RESTful and returns hyperlinked json data.
|
||||||
|
|
||||||
|
### For anonymous users
|
||||||
|
|
||||||
|
#### GET `/tooldata`
|
||||||
|
|
||||||
|
Returns all the info about the shop and its tools. Tools are split into categories.
|
||||||
|
|
||||||
|
Example response:
|
||||||
|
|
||||||
|
```
|
||||||
|
{
|
||||||
|
"categories": [
|
||||||
|
{
|
||||||
|
"url": "http://127.0.0.1:8000/category/wood-shop/",
|
||||||
|
"tools": [
|
||||||
|
{
|
||||||
|
"url": "http://127.0.0.1:8000/tool/table-saw/",
|
||||||
|
"category": "http://127.0.0.1:8000/category/wood-shop/",
|
||||||
|
"name": "Table Saw",
|
||||||
|
"slug": "table-saw",
|
||||||
|
"info": "scary tool",
|
||||||
|
"wiki_id": 123,
|
||||||
|
"photo": "http://127.0.0.1:8000/media/floodgf.jpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "http://127.0.0.1:8000/tool/jointer/",
|
||||||
|
"category": "http://127.0.0.1:8000/category/wood-shop/",
|
||||||
|
"name": "Jointer",
|
||||||
|
"slug": "jointer",
|
||||||
|
"info": "goes buzz buzz",
|
||||||
|
"wiki_id": 1,
|
||||||
|
"photo": "http://127.0.0.1:8000/media/uq4ldzsp4bu01.jpg"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "Wood Shop",
|
||||||
|
"slug": "wood-shop",
|
||||||
|
"info": "protospace wood shop",
|
||||||
|
"photo": "http://127.0.0.1:8000/media/photo_2018-05-06_13-26-59.jpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "http://127.0.0.1:8000/category/metal-shop/",
|
||||||
|
"tools": [
|
||||||
|
{
|
||||||
|
"url": "http://127.0.0.1:8000/tool/metal-lathe/",
|
||||||
|
"category": "http://127.0.0.1:8000/category/metal-shop/",
|
||||||
|
"name": "Metal Lathe",
|
||||||
|
"slug": "metal-lathe",
|
||||||
|
"info": "spins fast",
|
||||||
|
"wiki_id": 42,
|
||||||
|
"photo": "http://127.0.0.1:8000/media/intro-metal-shop-vali-steele-97.jpeg"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "Metal Shop",
|
||||||
|
"slug": "metal-shop",
|
||||||
|
"info": "protospace metal shop",
|
||||||
|
"photo": "http://127.0.0.1:8000/media/photo_2018-05-08_17-57-02.jpg"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### For authenticated users
|
||||||
|
|
||||||
|
#### GET `/user`
|
||||||
|
|
||||||
|
Returns info about the logged in user, including which tools they are authorized on. Note the top-level array (a quirk of django-rest-framework).
|
||||||
|
|
||||||
|
Example response:
|
||||||
|
|
||||||
|
```
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"username": "admin",
|
||||||
|
"profile": {
|
||||||
|
"url": "http://127.0.0.1:8000/profile/1/",
|
||||||
|
"user": "admin",
|
||||||
|
"authorized_tools": [
|
||||||
|
"table-saw",
|
||||||
|
"jointer"
|
||||||
|
],
|
||||||
|
"lockout_admin": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
||||||
|
### For lockout admins
|
||||||
|
|
||||||
|
Ensure images are 1280x1280 px large. Slugs should be lowercase and one word (repace spaces with hyphens).
|
||||||
|
|
||||||
|
#### GET, POST `/tool`
|
||||||
|
|
||||||
|
Get a list of tools, or post a new tool to the database.
|
||||||
|
|
||||||
|
#### GET, PUT, DELETE `/tool/[slug]`
|
||||||
|
|
||||||
|
Get a specific tool, modify or delete an existing one.
|
||||||
|
|
||||||
|
#### GET, POST `/category`
|
||||||
|
|
||||||
|
Get a list of categories, or post a new category to the database.
|
||||||
|
|
||||||
|
#### GET, PUT, DELETE `/category/[slug]`
|
||||||
|
|
||||||
|
Get a specific category, modify or delete an existing one.
|
||||||
|
|
||||||
|
Note: you can only delete a category that has no tools.
|
||||||
|
|
||||||
|
#### GET `/profile`
|
||||||
|
|
||||||
|
Get a list of all profiles.
|
||||||
|
|
||||||
|
#### GET, PUT `/profile/[id]`
|
||||||
|
|
||||||
|
Get a specific profile, or modify an existing one.
|
||||||
|
|
||||||
|
Here you can authorize users on tools or make them another lockout admin.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user