API Routes - jrchew15/word-play-puzzles GitHub Wiki

API Routes

User/Authentication

Sign Up

Request

{
  "email": "email@address.com",
  "username": "AnyUniqueString",
  "password": "unhashed-password",
  "profilePicture": "image_url.png",
  "theme": "light or dark",
}

Successful Response

  • Status Code: 201
  • Headers: Content-type: application/json
  • Body:
{
  "id": 1,
  "email": "email@address.com",
  "username": "AnyUniqueString",
  "profilePicture": "image_url.png",
  "theme": "light or dark",
  "createdAt": "12-25-2022 00:00:00 GMT"
}

Error Response

  • Status Code: 401
  • Headers: Content-type: application/json
  • Body:
{
  "errors":["Username is required","Invalid email address","Username already exists","Email already exists"]
}

Log In

Request

{
  "credential": "email or username",
  "password": "unhashed-password"
}

Successful Response

  • Status Code: 201
  • Headers: Content-type: application/json
  • Body:
{
  "id": 1,
  "email": "email@address.com",
  "username": "AnyUniqueString",
  "profilePicture": "image_url.png",
  "theme": "light or dark",
  "createdAt": "12-25-2022 00:00:00 GMT",
  "openSessions": [ {"SessionObject1"}, {"SessionObject2"} ]
}

Error Response

  • Status Code: 401
  • Headers: Content-type: application/json
  • Body:
{
  "errors":["Could not find user with provided credentials."]
}

Log Out

Request

Successful Response

  • Status Code: 201
  • Headers: Content-type: application/json
  • Body:
{
  "message": "Successfully Logged Out",
  "status": 201
}

Get Details of a User by User ID

Request

Successful Response

  • Status Code: 200
  • Headers: Content-type: application/json
  • Body:
{
  "id": 1,
  "email": "email@address.com",
  "username": "AnyUniqueString",
  "profilePicture": "image_url.png",
  "createdAt": "12-25-2022 00:00:00 GMT",
  "totalPuzzlesSolved": 4
}

Error Response

  • Status Code: 404
  • Headers: Content-type: application/json
  • Body:
{
  "errors":["Could not find user"]
}

Update User Information

Request

{
  "email": "updated_email@address.com",
  "username": "updated_username",
  "profilePicture": "updated_image_url.png"
}

Successful Response

  • Status Code: 201
  • Headers: Content-type: application/json
  • Body:
{
  "id": 1,
  "email": "updated_email@address.com",
  "username": "updated_username",
  "profilePicture": "updated_image_url.png",
  "theme": "light or dark",
  "createdAt": "12-25-2022 00:00:00 GMT"
}

Error Response

  • Status Code: 401
  • Headers: Content-type: application/json
  • Body:
{
  "errors":["Username is required","Invalid email address","Username already exists","Email already exists"]
}

Word-gon

Get Word-Gon Puzzle Details

Request

Successful Response

  • Status Code: 200
  • Headers: Content-type: application/json
  • Body:
{
  "id": 1,
  "userId": 1,
  "letters": "abcdefghijkl",
  "shape": "square or trapezoid or pentagon",
  "num_attempts": 6,
  "puzzle_day": "null or DD-MM-YYYY",
  "user": {"userObj"}
}

Error Response

  • Status Code: 404
  • Headers: Content-type: application/json
  • Body:
{
  "errors":["Puzzle not found"]
}

Word-Gon Session

Start a Word-Gon Puzzle

Request

{
  "userId": 1,
  "puzzleId": 1
}

Successful Response

  • Status Code: 201
  • Headers: Content-type: application/json
  • Body:
{
  "id": 1,
  "userId": 1,
  "puzzleId": 1,
  "guesses": "",
  "num_guesses": 0,
  "completed": false
}

Error Response

  • Status Code: 404
  • Headers: Content-type: application/json
  • Body:
{
  "errors":["Could not find puzzle"]
}

Get the open sessions of the current user

Request

Successful Response

  • Status Code: 200
  • Headers: Content-type: application/json
  • Body:
{
  {
    "id": 1,
    "userId": 1,
    "puzzleId": 1,
    "guesses": "comma,separated,guesses",
    "num_guesses": 3,
    "completed": false
  }
}

Update guesses on a session

Request

{
  "guesses": "comma,separated,guesses,add,more,guesses",
  "num_guesses": 6,
  "completed": false
}

Successful Response

  • Status Code: 201
  • Headers: Content-type: application/json
  • Body:
{
  "id": 1,
  "userId": 1,
  "puzzleId": 1,
  "guesses": "comma,separated,guesses,add,more,guesses",
  "num_guesses": 6,
  "completed": false
}

Delete a session

Request

Successful Response

  • Status Code: 201
  • Headers: Content-type: application/json
  • Body:
{
  "message": "Successfully Deleted",
  "status": 201
}

Comments

Get comments by puzzle ID

Request

Successful Response

  • Status Code: 201
  • Headers: Content-type: application/json
  • Body:
{
    "comments": [
        {
            "id": 1,
            "puzzleId": 1,
            "userId": 1,
            "body": "long string",
            "replyTo": "commentId",
            "createdAt": "12-25-2022 00:00:00 GMT",
            "user":{
                "id":1,
                "username": "username",
                "profilePicture": "image_url.png"
            }
        },
        {
            "id": 2,
            "puzzleId": 1,
            "userId": 1,
            "body": "another long string",
            "replyTo": "null",
            "createdAt": "12-25-2022 00:00:00 GMT",
            "user":{
                "id":1,
                "username": "username",
                "profilePicture": "image_url.png"
            }
        }
    ]
}

Error Response

  • Status Code: 404
  • Headers: Content-type: application/json
  • Body:
{
  "errors":["Could not find puzzle"]
}

Write a comment/reply

Request

{
    "body": "long string",
    "replyTo": "commentId",
}

Successful Response

  • Status Code: 201
  • Headers: Content-type: application/json
  • Body:
{
    "id": 1,
    "puzzleId": 1,
    "userId": 1,
    "body": "long string",
    "replyTo": "commentId",
    "createdAt": "12-25-2022 00:00:00 GMT",
    "user":{
        "id":1,
        "username": "username",
        "profilePicture": "image_url.png"
    }
}

Error Response

  • Status Code: 404
  • Headers: Content-type: application/json
  • Body:
{
  "errors":["Could not find puzzle"]
}

Edit a comment

Request

{
    "body": "editted string"
}

Error Response

  • Status Code: 404
  • Headers: Content-type: application/json
  • Body:
{
  "errors":["Could not find comment"]
}

Successful Response

  • Status Code: 201
  • Headers: Content-type: application/json
  • Body:
{
    "id": 1,
    "puzzleId": 1,
    "userId": 1,
    "body": "editted string",
    "replyTo": "commentId",
    "createdAt": "12-25-2022 00:00:00 GMT",
    "user":{
        "id":1,
        "username": "username",
        "profilePicture": "image_url.png"
    }
}

Delete a comment

Request

Successful Response

  • Status Code: 201
  • Headers: Content-type: application/json
  • Body:
{
    "message": "Successfully deleted",
    "status": 201
}

Error Response

  • Status Code: 404
  • Headers: Content-type: application/json
  • Body:
{
  "errors":["Could not find comment"]
}

Words

Check Word Validity

Request

Successful Response

  • Status Code: 200
  • Headers: Content-type: application/json
  • Body:
{
  "word":"apple",
}

Error Response

  • Status Code: 404
  • Headers: Content-type: application/json
  • Body:
{
  "errors":["Word not found"]
}