/p2-iproject-server-1

Individual Project - Server

Primary LanguageJavaScript

p2-iproject-server

Individual Project - Server

Endpoints List:

  • Users

    • POST/users/register
    • POST/users/login
    • POST/users/login-google
  • Activities

    • GET/activities/
    • POST/activities/
    • PUT/activities/:id
    • DELETE/activities/:id
  • UserActivities (Records)

    • GET/user-activities/
    • POST/user-activities/
    • PUT/user-activities/:recordId
    • PATCH/user-activities/:recordId
    • DELETE/user-activities/:recordId

 

RESTFUL Endpoints

USERS

POST/users/register

Creates a new User entity Request Header

not needed

Request Body

{
  "name" : string,
  "email" : email,
  "password" : string,
}

Response (201)

{
    "id": 12,
    "email": "saturn@mail.com",
    "name": "saturn",
}

Response (400 - Bad Request)

{
    "message": [
        "Email is required",
        "Password is required"
    ]
}

Response (500 - Internal Server Error)

{
  message: Internal Server Error
}

POST/users/login

Logs in to the App with credentials provided Request Header

not needed

Request Body

{
  "email" : email,
  "password" : string,
}

Response (200)

{
    "access_token": access_token
}

Response (401 - Login Error)

{
    "message": "Invalid email/password"
}

Response (500 - Internal Server Error)

{
  message: Internal Server Error
}

ACTIVIES

GET/activities/

Gets all Activities entity based on User's ID Request Header

{
  "access_token": "<your access token>"
}

Request Body

not needed

Response (200)

[
    {
        "id": 2,
        "title": "Lempar Lembing",
        "description": "Bukan Kambing",
        "UserId": 2,
        "Author": {
            "id": 2,
            "email": "kucingku@mail.com",
            "name": "kucingku"
        }
    }
]

Response (500 - Internal Server Error)

{
  message: Internal Server Error
}

POST/activities/

Creates a new Activities entity tied to a specific User Request Header

{
  "access_token": "<your access token>"
}

Request Body

{
  "title" : string,
  "description" : string
}

Response (201)

{
    "id": 6,
    "title": "Brunch",
    "description": "Sarapan Kesiangan",
    "UserId": 1,
    "updatedAt": "2021-10-19T18:53:26.481Z",
    "createdAt": "2021-10-19T18:53:26.481Z"
}

Response (400 - Bad Request)

{
    "message": [
        "Activity title is required"
    ]
}

Response (500 - Internal Server Error)

{
  message: Internal Server Error
}

PUT/activities/:id

Edits an Activity entity Request Header

{
  "access_token": "<your access token>"
}

Request Body

{
  "title" : string,
  "description" : string
}

Response (200)

[
    {
        "id": 4,
        "title": "Brunch",
        "description": "Sarapan Paling Enak",
        "UserId": 1,
        "createdAt": "2021-10-19T16:30:15.117Z",
        "updatedAt": "2021-10-19T16:33:14.235Z"
    }
]

Response (400 - Bad Request)

{
    "message": [
        "Activity title is required"
    ]
}

Response (404 - Not Found)

{
    "message": "Activity not found"
}

Response (500 - Internal Server Error)

{
  message: Internal Server Error
}

DELETE/activities/:id

Delete an Activity Entity Request Header

{
  "access_token": "<your access token>"
}

Request Body

not needed

Response (200)

{
    "message": "Successfully deleted Activity with ID 5"
}

Response (404 - Not Found)

{
    "message": "Activity not found"
}

Response (500 - Internal Server Error)

{
  message: Internal Server Error
}

USER-ACTIVITIES (RECORDS)

GET/user-activities/

Gets all Record entity based on User's ID Request Header

{
  "access_token": "<your access token>"
}

Request Body

not needed

Response (200)

[
    {
        "id": 1,
        "UserId": 1,
        "ActivityId": 1,
        "status": "pending",
        "createdAt": "2010-10-09T17:00:00.000Z",
        "updatedAt": "2010-10-09T17:00:00.000Z",
        "Activity": {
            "id": 1,
            "title": "Breakfast",
            "description": "Sarapan",
            "UserId": 1
        },
        "User": {
            "id": 1,
            "email": "admin@mail.com",
            "name": "admin"
        }
    },
    ...
]

Response (500 - Internal Server Error)

{
  message: Internal Server Error
}

POST/user-activities/

Creates a new Record entity tied to a specific User Request Header

{
  "access_token": "<your access token>"
}

Request Body

{
  "ActivityId" : integer,
}

Response (201)

{
    "id": 4,
    "UserId": 1,
    "ActivityId": 1,
    "status": "pending",
    "updatedAt": "2021-10-19T17:41:28.816Z",
    "createdAt": "2021-10-19T17:41:28.816Z"
}

Response (400 - Bad Request)

{
    "message": [
        "Activity ID is required"
    ]
}

Response (500 - Internal Server Error)

{
  message: Internal Server Error
}

PUT/user-activities/:recordId

Edits an Record entity Request Header

{
  "access_token": "<your access token>"
}

Request Body

{
  "ActivityId" : integer,
}

Response (200)

[
    {
        "id": 4,
        "UserId": 1,
        "ActivityId": 2,
        "status": "pending",
        "createdAt": "2021-10-19T17:41:28.816Z",
        "updatedAt": "2021-10-19T17:42:49.485Z"
    }
]

Response (400 - Bad Request)

{
    "message": [
        "Activity title is required"
    ]
}

Response (404 - Not Found)

{
    "message": "Record not found"
}

Response (500 - Internal Server Error)

{
  message: Internal Server Error
}

PATCH/user-activities/:recordId

Changes the status of an Activity entity Request Header

{
  "access_token": "<your access token>"
}

Request Body

not needed

Response (200)

{
    "message": "Status of record with ID of 4 has been set to complete."
}

Response (404 - Not Found)

{
    "message": "Record not found"
}

Response (500 - Internal Server Error)

{
  message: Internal Server Error
}

DELETE/user-activities/:recordId

Deletes a Record entity Request Header

{
  "access_token": "<your access token>"
}

Request Body

not  needed

Response (200)

{
    "message": "Record with ID of 4 has been deleted."
}

Response (404 - Not Found)

{
    "message": "Record not found"
}

Response (500 - Internal Server Error)

{
  message: Internal Server Error
}