Skip to content

Nutrify-Dicoding/nutrify-server

Repository files navigation

runme
id version
01HFPHXTXZ0W8AX2YH81CBG5F8
v2.0

npm v9.8.1 node v18.18.2

API SPECIFICATION

BASE URL :

Sign Up

Request :

  • Method : POST

  • Endpoint : (base-url)/auth/signup

  • Header :

    • Content-Type : application/json
    • Accept : application/json
  • Body :

{
  "email": "string",
  "username": "string",
  "gender": "string, enum('perempuan','pria')",
  "tinggi": "number",
  "berat": "number",
  "umur": "number",
  "password": "string",
  "levAktivitas": "number"
}
  • Authentication - Bearer Token : <token key> Response :
{
  "message": "success",
  "token": "string",
  "username": "string",
  "email": "string",
  "gender": "string",
  "status": "string",
  "password": "string encrypt",
  "tinggi": "number",
  "berat": "number",
  "umur": "number",
  "caloriNeeded": "number",
  "carboNeeded": "number",
  "proteinNeeded": "number",
  "fatNeeded": "number",
  "levAktivitas": "number"
}

Sign In

Request :

  • Method : POST

  • Endpoint : (base-url)/auth/signin

  • Header :

    • Content-Type : application/json
    • Accept : application/json
  • Body :

{
  "email": "string",
  "password": "string"
}
  • Authentication - Bearer Token : <token key> Response :
{
  "message": "login success, welcome!",
  "token": "string",
  "username": "string",
  "email": "string",
  "gender": "string",
  "status": "string",
  "password": "string encrypt",
  "tinggi": "number",
  "berat": "number",
  "umur": "number",
  "caloriNeeded": "number",
  "carboNeeded": "number",
  "proteinNeeded": "number",
  "fatNeeded": "number"
}

Food

Add Many Foods (ADMIN)

Request :

  • Method : POST

  • Endpoint : (base-url)/foods

  • Header :

    • Content-Type : application/json
    • Accept : application/json
  • Body :

    [
      {
        "name": "string ",
        "image": "string",
        "category": "string unique",
        "cal": "number",
        "protein": "number",
        "carb": "number",
        "fat": "number",
        "carbon": "number",
        "desc": "string"
      },
      {
        "name": "string",
        "image": "string",
        "category": "string unique",
        "cal": "number",
        "protein": "number",
        "carb": "number",
        "fat": "number",
        "carbon": "number",
        "desc": "string"
      }
    ]

    Response :

{
  "message": "food added successfully",
  "data": [
    {
      "name": "string ",
      "image": "string",
      "category": "string unique",
      "cal": "number",
      "protein": "number",
      "carb": "number",
      "fat": "number",
      "carbon": "number",
      "desc": "string"
    },
    {
      "name": "string",
      "image": "string",
      "category": "string unique",
      "cal": "number",
      "protein": "number",
      "carb": "number",
      "fat": "number",
      "carbon": "number",
      "desc": "string"
    }
  ]
}

Update Food Data (ADMIN)

Request :

  • Method : PATCH
  • Endpoint : (base-url)/foods/{:food_id}
  • Header :
    • Content-Type : application/json
    • Accept : application/json
  • Body : (example) json { "cal": "number", "protein": "number", "carb": "number", "fat": "number", "carbon": "number", } Response :
{
  "message": "update success",
  "foodUpdated": {
    "acknowledged": true,
    "modifiedCount": 1,
    "upsertedId": null,
    "upsertedCount": 0,
    "matchedCount": 1
  }
}

Get All Food Data

Request

  • Method : GET
  • Endpoint : (base-url)/foods
  • Header : - Accept : application/json Response :
[
  {
    "_id": "string unique",
    "name": "string",
    "image": "string",
    "category": {
      "_id": "string unique",
      "name": "string"
    },
    "cal": "number",
    "protein": "number",
    "carb": "number",
    "fat": "number",
    "desc": "string",
    "createdAt": "date",
    "updatedAt": "date"
  }
]

Get Food Data by Food Id

Request :

  • Method : GET
  • Endpoint : (base-url)/foods/{:food_id}
  • Header : - Accept : application/json Response :
[
  {
    "_id": "string unique",
    "name": "string",
    "image": "string",
    "category": {
      "_id": "string unique",
      "name": "string"
    },
    "cal": "number",
    "protein": "number",
    "carb": "number",
    "fat": "number",
    "desc": "string",
    "createdAt": "date",
    "updatedAt": "date"
  }
]

Get Food By Category

Request :

  • Method : GET
  • Endpoint : (base-url)/foods/category/{:category_id}
  • Header : - Accept : application/json Response :
[
  {
    "_id": "string unique",
    "name": "string",
    "image": "string",
    "category": {
      "_id": "string unique",
      "name": "string"
    },
    "cal": "number",
    "protein": "number",
    "carb": "number",
    "fat": "number",
    "desc": "string",
    "createdAt": "date",
    "updatedAt": "date"
  }
]

Search Food Data

Request :

  • Method : GET
  • Endpoint : (base-url)/foods/search?name={:query}
  • Header : - Accept : application/json Response :
[
  {
    "_id": "string unique",
    "name": "string",
    "image": "string",
    "category": {
      "_id": "string unique",
      "name": "string"
    },
    "cal": "number",
    "protein": "number",
    "carb": "number",
    "fat": "number",
    "desc": "string",
    "createdAt": "date",
    "updatedAt": "date"
  }
]

Category

Get All Categories

Request :

  • Method : GET
  • Endpoint : (base-url)/categories
  • Header : - Accept : application/json Response :
[
  {
    "_id": "string unique",
    "name": "string"
  }
]

Add Category (ADMIN)

Request :

  • Method : POST

  • Endpoint : (base-url)/categories

  • Header :

    • Content-Type : application/json
    • Accept : application/json
  • Body : json { "_id": "string", "name":"string" } Response :

{
  "message": "category added successfully",
  "data": {
    "_id": "string",
    "name": "string"
  }
}

Favorite

Add Favorite Food

Request :

  • Method : POST

  • Endpoint : (base-url)/favorites

  • Header :

    • Content-Type : application/json
    • Accept : application/json
  • Body : json { "user":"string unique", "food":"string unique" } Response :

{
  "message": "favorite food data added successfully",
  "favorite": "string unique",
  "newFav": {
    "user_id": "string unique",
    "food_id": "string unique"
  }
}

Get Favorite Food

Request :

  • Method : GET
  • Endpoint : (base-url)/favorites
  • Header : - Accept : application/json Response :
[
  {
    "_id": "string unique",
    "user": "string unique",
    "food": {
      "_id": "string unique",
      "name": "string",
      "image": "string",
      "category": "string unique",
      "cal": "number",
      "protein": "number",
      "carb": "number",
      "fat": "number",
      "desc": "string",
      "createdAt": "date",
      "updatedAt": "date"
    }
  }
]

Delete Favorite Food

Request :

  • Method : DELETE
  • Endpoint : (base-url)/favorites/{:favorite_id}
  • Header : - Accept : application/json Response :
{
  "message": "favorite food data deleted successfully"
}

Add Tracking of User

Request :

  • Method : POST

  • Endpoint : (base-url)/tracking

  • Header :

    • Content-Type : application/json
    • Accept : application/json
  • Body :

{
  "food": [
    {
      "foodId": "string unique",
      "portion": "number"
    }
  ]
}

Response :

{
  "_id": "string unique",
  "user": "string unique",
  "tracking": {
    "date": "date",
    "food": [
      {
        "foodId": {
          "_id": "string unique",
          "name": "string",
          "image": "string",
          "category": "string unique",
          "cal": "number",
          "protein": "number",
          "carb": "number",
          "fat": "number",
          "desc": "100gram"
        },
        "portion": "number",
        "time": "time"
      }
    ]
  },
  "totCarb": "number",
  "totProtein": "number",
  "totFat": "number",
  "totCal": "number"
}

Get All Tracking of User

Request :

  • Method : GET
  • Endpoint : (base-url)/tracking
  • Header : - Accept : application/json Response :
{
  "_id": "string unique",
  "user": "string unique",
  "tracking": {
    "date": "date",
    "food": [
      {
        "foodId": {
          "_id": "string unique",
          "name": "string",
          "image": "string",
          "category": "string unique",
          "cal": "number",
          "protein": "number",
          "carb": "number",
          "fat": "number",
          "desc": "100gram"
        },
        "portion": "number",
        "time": "time"
      },
      {
        "foodId": {
          "_id": "string unique",
          "name": "string",
          "image": "string",
          "category": "string unique",
          "cal": "number",
          "protein": "number",
          "carb": "number",
          "fat": "number",
          "desc": "100gram"
        },
        "portion": "number",
        "time": "time"
      }
    ]
  },
  "totCarb": "number",
  "totProtein": "number",
  "totFat": "number",
  "totCal": "number"
}

Get Today Tracking of User

Request :

  • Method : GET
  • Endpoint : (base-url)/tracking/today
  • Header : - Accept : application/json Response :
{
  "_id": "string unique",
  "user": "string unique",
  "tracking": {
    "date": "date",
    "food": [
      {
        "foodId": {
          "_id": "string unique",
          "name": "string",
          "image": "string",
          "category": "string unique",
          "cal": "number",
          "protein": "number",
          "carb": "number",
          "fat": "number",
          "desc": "100gram"
        },
        "portion": "number",
        "time": "time"
      },
      {
        "foodId": {
          "_id": "string unique",
          "name": "string",
          "image": "string",
          "category": "string unique",
          "cal": "number",
          "protein": "number",
          "carb": "number",
          "fat": "number",
          "desc": "100gram"
        },
        "portion": "number",
        "time": "time"
      }
    ]
  },
  "totCarb": "number",
  "totProtein": "number",
  "totFat": "number",
  "totCal": "number"
}

Get Tracking of User Per Date

Request :

  • Method : GET
  • Endpoint : (base-url)/tracking/{:date}
  • Header : - Accept : application/json Response :
{
  "_id": "string unique",
  "user": "string unique",
  "tracking": {
    "date": "date",
    "food": [
      {
        "foodId": {
          "_id": "string unique",
          "name": "string",
          "image": "string",
          "category": "string unique",
          "cal": "number",
          "protein": "number",
          "carb": "number",
          "fat": "number",
          "desc": "100gram"
        },
        "portion": "number",
        "time": "time"
      },
      {
        "foodId": {
          "_id": "string unique",
          "name": "string",
          "image": "string",
          "category": "string unique",
          "cal": "number",
          "protein": "number",
          "carb": "number",
          "fat": "number",
          "desc": "100gram"
        },
        "portion": "number",
        "time": "time"
      }
    ]
  },
  "totCarb": "number",
  "totProtein": "number",
  "totFat": "number",
  "totCal": "number"
}

Profile and Account

Get Profile

Request :

  • Method : GET
  • Endpoint : (base-url)/profile
  • Header : - Accept : application/json Response :
{
  "_id": "string",
  "username": "string",
  "email": "string",
  "gender": "string",
  "status": "string",
  "password": "string encrypted",
  "tinggi": "number",
  "berat": "number",
  "levelAktivitas": {
    "val": "number",
    "ket": "string"
  },
  "umur": "number",
  "caloriNeeded": "number",
  "proteinNeeded": "number",
  "fatNeeded": "number",
  "carboNeeded": "number",
  "createdAt": "date",
  "updatedAt": "date"
}

Edit Profile

Request :

  • Method : PUT

  • Endpoint : (base-url)/profile

  • Header :

    • Content-Type : application/json
    • Accept : application/json
  • Body : (example) json { "username": "string", "gender": "string", "tinggi": "number", "berat": "number", "levelAktivitas": "number", "umur": "number" } Response :

{
  "message": "profile has been changed successfully",
  "changeSuccess": {
    "username": "string",
    "gender": "string",
    "tinggi": "number",
    "berat": "number",
    "umur": "number",
    "levelAktivitas": "number",
    "caloriNeeded": "number",
    "carboNeeded": "number",
    "proteinNeeded": "number",
    "fatNeeded": "number"
  }
}

Edit Account (Email and Password)

Request :

  • Method : PUT

  • Endpoint : (base-url)/profile/account

  • Header :

    • Content-Type : application/json
    • Accept : application/json
  • Body : json { "email": "string", "currentPassword": "string", "newPassword": "string", "confirmPassword": "string" } Response :

{
  "message": "string",
  "changed": {
    "email": "string",
    "password": "string encrypted"
  }
}

Change Password

Request :

  • Method : PUT

  • Endpoint : (base-url)/profile/change-password

  • Header :

    • Content-Type : application/json
    • Accept : application/json
  • Body : (example) json { "currentPassword":"string", "newPassword":"string", "confirmPassword":"string" } Response :

{
  "message": "Password have been Changed successfully",
  "success": {
    "_id": "string",
    "username": "string",
    "email": "string",
    "gender": "string",
    "status": "string",
    "password": "string encrypted",
    "tinggi": "number",
    "berat": "number",
    "levelAktivitas": "number",
    "umur": "number",
    "caloriNeeded": "number",
    "proteinNeeded": "number",
    "fatNeeded": "number",
    "carboNeeded": "number",
    "createdAt": "date",
    "updatedAt": "date"
  }
}

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors