Lunching for groups.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

209 lines
4.3 KiB

FORMAT: 1A
HOST: http://pospichil.com/luncho/
# Lunch-o
Lunching for Groups.
# Group Tokens
Requesting access tokens.
## Token access [/token/]
Request an access token.
### Request a token [POST]
+ Request (application/json)
{ "username": "username", "password": "hash" }
+ Response 200 (application/json)
{ "status": "OK", "token": "user-token" }
+ Response 403 (application/json)
{ "status": "ERROR", "error": "Invalid password" }
# Group Users
User management.
## Users [/user/]
### Creation [POST]
+ Request (application/json)
{ "username": "username", "full_name": "Full Name", "password": "hash" }
+ Response 200 (application/json)
{ "status": "OK" }
+ Response 409 (application/json)
{ "status": "ERROR", "error": "username already exists" }
## Single User [/user/{token}/{username}/]
Manage a single user.
+ Parameters
+ token ... The user token.
+ username ... Username used in the creation process.
### Update information [POST]
+ Request (application/json)
{ "full_name": "Full name", "password": "hash" }
+ Response 200 (application/json)
{ "status": "OK" }
+ Response 401 (application/json)
{ "status": "ERROR", "error": "Invalid token" }
+ Response 403 (application/json)
{ "status": "ERROR", "error": "User is not admin or not the same user" }
### Remove user [DELETE]
+ Response 200 (application/json)
{ "status": "OK" }
+ Response 401 (application/json)
{ "status": "ERROR", "error": "Invalid token" }
+ Response 403 (application/json)
{ "status": "ERROR", "error": "User is not admin or not the same user" }
# Group Places
Retrieval and management (for admin users) for lunching.
## Places [/places/{token}/]
Retrieve the list of all places the user has access.
+ Parameters
+ token ... The user token.
### Retrieval [GET]
Retrieve the list of places.
+ Response 200 (application/json)
{ "status": "OK", "places": [{"name": "Place 1", "id": 1}
{"name": "Place 2", "id": 2}}
### Add a new place [PUT]
Add a new place. The user must be admin to do so.
+ Request (application/json)
{ "place": "Place Name" }
+ Response 200 (application/json)
{ "status": "OK", "id": 3 }
+ Response 401 (application/json)
{ "status": "ERROR", "error": "Invalid token" }
+ Response 403 (application/json)
{ "status": "ERROR", "error": "User is not admin" }
## Place management [/places/{token}/{id}/]
Manage a single place. The user must be admin.
+ Parameters
+ token ... The user token.
+ id ... The place id.
### Edit a place [POST]
+ Request (application/json)
{ "name": "Place 3" }
+ Response 200 (application/json)
{ "status": "OK" }
+ Response 401 (application/json)
{ "status": "ERROR", "error": "Invalid token" }
+ Response 403 (application/json)
{ "status": "ERROR", "error": "User is not admin" }
### Remove a place [DELETE]
+ Response 200 (application/json)
{ "status": "OK" }
+ Response 401 (application/json)
{ "status": "ERROR", "error": "Invalid token" }
+ Response 403 (application/json)
{ "status": "ERROR", "error": "User is not admin" }
# Group Voting
User voting.
## Voting [/vote/{token}/]
Make a vote for the day. The day is controlled by the server itself. If a vote has been cast
but later removed, the server will also
+ Parameters
+ token ... The user token.
### Cast a vote [POST]
+ Request (application/json)
{ "choices": [1, 2, 3] }
+ Response 200 (application/json)
{ "status": "OK" }
+ Response 401 (application/json)
{ "status": "ERROR", "error": "Invalid token" }
+ Response 403 (application/json)
{ "status": "ERROR", "error": "Casted vote was removed" }
+ Response 409 (application/json)
{ "status": "ERROR", "error": "Vote for place %d appeared more than once" }
### Remove a vote [DELETE]
Remove a vote for the day. Once a vote has been removed, it can't be
recasted.
+ Response 200 (application/json)
{ "status": "OK" }