Skip to content

IJaykkk/flask-aws

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

48 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Installation

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

API

Caveat

To use token, include "Authorization: Bearer <access_token or refresh_token>" in hearder to access endpoints.

Token

  • Registration

    • Explaination

      To register a user, and then get access_token as well as refresh_token back.
      access_token is used to access api with person information. Default expiration time is 30 mins.
      refresh_token is used to get another access_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 and password to login, and then get access_token as well as refresh_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 valid access_token.

    • Endpoint

      post localhost:5000/token/refresh

    • Response

      • Success (200)
      {
          "access_token": access_token
      }

User

  • Get users (access token)
    • Explaination:

      To get all users.

    • Endpoint

      get localhost:5000/users

    • Response

      • Success (200)
      [
          {
              "id": 1,
              "username": xxx
          },
      ]

Group

  • 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"
      }

Event

  • 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"
      }

Subscription

  • 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"
      }

Picture

  • 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 in pictures 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 in pictures 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"
      }

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages