At project root directory,
vagrant up
vagrant ssh -- -L 5000:localhost:5000
cd /vagrant/flask-aws
mv .env.bk .env
vim .env # update environment variables
flask run
To use token, include "Authorization: Bearer <access_token or refresh_token>" in hearder to access endpoints.
-
Registration
-
Explaination
To register a user, and then get
access_token
as well asrefresh_token
back.
access_token
is used to access api with person information. Default expiration time is 30 mins.
refresh_token
is used to get anotheraccess_token
. Default expiration time is 30 days. -
Endpoint
post
localhost:5000/registration
-
Parameters
{ "username": "xxx", "password": "xxx" }
-
Response
- Success (200)
{ "message": "User <username> was created", "access_token": access_token, "refresh_token": refresh_token }
- Error (401)
{ "message": "User <username> already exists" }
- Failure (500)
{ "message": "Registration went wrong" }
-
-
Login
-
Explaination
Use
username
andpassword
to login, and then getaccess_token
as well asrefresh_token
back. -
Endpoint
post
localhost:5000/login
-
Parameters
{ "username": "xxx", "password": "xxx" }
-
Response
- Success (200)
{ "message": "Logged in as <username>", "access_token": access_token, "refresh_token": refresh_token }
- Error (401)
{ "message": "Wrong credentials" }
-
-
Logout (access token)
-
Explaination
To revoke
access_token
. -
Endpoint
post
localhost:5000/logout/access
-
Response
- Success (200)
{ "message": "Access token has been revoked" }
- Failure (500)
{ "message": "Logout access went wrong" }
-
-
Logout (refresh token)
-
Explaination
To revoke
refresh_token
. -
Endpoint
post
localhost:5000/logout/refresh
-
Response
- Success (200)
{ "message": "Refresh token has been revoked" }
- Failure (500)
{ "message": "Logout refresh went wrong" }
-
-
Get another access token (refresh token)
-
Explaination
Use
refresh_token
to get another validaccess_token
. -
Endpoint
post
localhost:5000/token/refresh
-
Response
- Success (200)
{ "access_token": access_token }
-
- Get users (access token)
-
Explaination:
To get all users.
-
Endpoint
get
localhost:5000/users
-
Response
- Success (200)
[ { "id": 1, "username": xxx }, ]
-
-
Get groups (access token)
-
Explaination:
To get all groups.
-
Endpoint
get
localhost:5000/groups
-
Response
- Success (200)
[ { "id": 1 "name": "NYU friends", "users": [ { "id": 1, "username": xxx } ] }, ]
- Error (403)
{ "message": "User <username> does not exist" }
-
-
Get a group (access token)
-
Explaination:
To get information of a group.
-
Endpoint
get
localhost:5000/group/{id}
-
Response
- Success (200)
{ "id": 1 "name": "NYU friends", "users": [ { "id": 1, "username": "xxx" } ], "events": [ { "id": 1 "name": "xxx", "added_date": "05/10/2020", "pictures": [ { "id": 1, "class": "xxx" or null, "is_bestshot": false, "url": "xxx" }, ] }, ] }
- Error (403)
{ "message": "User <username> does not exist" }
- Error (404)
{ "message": "Group id {group_id} does not exist" }
-
-
Add group (access token)
-
Explaination:
To create a group.
-
Endpoint
post
localhost:5000/groups
-
Parameters
{ "name": "xxx", "user_ids": [1, 2, 3, 4] }
-
Response
- Success (200)
{ "message": "Group has been created" }
- Error (404)
{ "message": "user_ids must be not empty list and its element must be integer" } + Failure (500) ```bash { "message": "Something went wrong" }
-
-
Get events (access token)
-
Explaination:
To get all events.
-
Endpoint
get
localhost:5000/events
-
Response
- Success (200)
[ { "id": 1 "name": "xxx", "group": { "id": 1, "name": "xxx" }, "added_date": "05/10/2020", "pictures": [ { "id": 1, "class": "xxx" or null, "is_bestshot": false, "url": "xxx" } ] }, ]
- Error (403)
{ "message": "User <username> does not exist" }
-
-
Get event (access token)
-
Explaination:
To get information of a event.
-
Endpoint
get
localhost:5000/event/{id}
-
Response
- Success (200)
{ "id": 1 "name": "xxx", "group": { "id": 1, "name": "xxx" }, "added_date": "05/10/2020", "pictures": [ { "id": 1, "class": "xxx" or null, "is_bestshot": false, "url": "xxx" }, ], "subscription": { "class": "people" or "landscape" or "people/landscape" } }
- Error (403)
{ "message": "User <username> does not exist" }
- Error (404)
{ "message": "Event id <event_id> does not exist" }
-
-
Create event (access token)
-
Explaination:
To create a event.
-
Endpoint
post
localhost:5000/events
-
Parameter
{ "name": "xxx", "added_date": "mm/dd/yyyy", "group: { "id": 1 }, "pictures": [ "url1", "url2", "url3"] }
-
Response
- Success (200)
{ "message": "event has been created" }
- Error (404)
{ "message": "group should not be empty hash. pictures should contain urls" }
- Error (404)
{ "message": "Group id <group_id> does not exist" }
- Failure (500)
{ "message": "Something went wrong" }
-
-
Add Subscription (access token)
-
Explaination:
To add a new subscription for a event.
-
Endpoint
post
localhost:5000/event/{id}/subscriptions
-
Parameter
{ "class": "people" or "landscape" or "people/landscape" }
-
Response
- Success (200)
{ "message": "Subscription has been created" }
- Error (400)
{ "message": "class field should not be empty" }
- Error (404)
{ "message": "Group id <group_id> does not exist" }
- Error (404)
{ "message": "Event id <event_id> does not exist" }
- Failure (500)
{ "message": "Something went wrong" }
-
-
Register picture (access token)
-
Explaination:
To register the pictures that have been uploaded by the frontend in the database.
-
Endpoint
post
localhost:5000/event/{id}/pictures
-
Parameters
{ "pictures": [ "url1", "url2", "url3" ] }
-
Response
- Success (200)
{ "message": "Pictures has been registered" }
- Error (400)
{ "message": "Pictures has been registered" }
- Error (404)
{ "message": "Event id <event_id> does not exist" }
- Error (404)
{ "message": "Group id <group_id> does not exist" }
- Failure (500)
{ "message": "Something went wrong" }
-
-
Update is_bestshot (refresh token) (for yangyao)
-
Explaination:
To update
is_bestshot
inpictures
table. -
Endpoint
post
localhost:5000/pictures/is_bestshot
-
Parameters
{ "pictures": [ "url1", "url2", "url3" ] }
-
Response
- Success (200)
{ "message": "Bestshots have been updated" }
- Error (400)
{ "message": "bestshots field should not be empty" }
- Error (404)
{ "message": "Event id <event_id> does not exist" }
- Failure (500)
{ "message": "Something went wrong" }
-
-
Update class (refresh token) (for yangyao)
-
Explaination:
To update field
class
inpictures
table. -
Endpoint
post
localhost:5000/pictures/class
-
Parameters
{ "pictures": [ "url1", "url2", "url3" ] }
-
Response
- Success (200)
{ "message": "Picture class has been registered" }
- Error (400)
{ "message": "classes field should not be empty" }
- Error (404)
{ "message": "Event id <event_id> does not exist" }
- Failure (500)
{ "message": "Something went wrong" }
-