Skip to content

iryadifarhan/Proyek-Donasi-Sampah

Repository files navigation

API SPEC

All Request except "/register" and "/login" must use a bearer token or (alternatively) a header that contains "authorization", with the key value "Bearer {token}"

All Request from admins "/admins" except "/autologin", "/register" and "/login" must use an additional info at its header which is "api-key" with the key value "RAHASIA"

Users

Register User

Request :

  • Method : POST
  • Endpoint : /api/users/register
  • Header :
    • Content-Type: applications/json
    • Accept: applications/json
  • Body :
{
    "nama" : "string",
    "email" : "string",
    "password" : "string",
    "no_telpon" : "string",
    "alamat" : "string"
}

Response :

{
    "code" : "number",
    "status" : "string",
    "data" : {
        "user_id" : "integer, unique",
        "nama" : "string",
        "email" : "string",
        "password" : "string",
        "no_telpon" : "string",
        "alamat" : "string",
        "point" : "integer",
        "createdAt" : "date",
        "updatedAt" : "date",
        "bearerToken" : "string" 
    }
}

Login User

Request :

  • Method : POST
  • Endpoint : /api/users/login
  • Header :
    • Content-Type: applications/json
    • Accept: applications/json
  • Body :
{
    "email" : "string",
    "password" : "string"
}

Response :

{
    "code" : "number",
    "status" : "string",
    "data" : {
        "user_id" : "integer, unique",
        "nama" : "string",
        "email" : "string",
        "password" : "string",
        "no_telpon" : "string",
        "alamat" : "string",
        "point" : "integer",
        "createdAt" : "date",
        "updatedAt" : "date",
        "bearerToken" : "string"
    }
}

Autologin User

Request :

  • Method : GET
  • Endpoint : /api/users/autologin
  • Header :
    • Accept: applications/json

Response :

{
    "code" : "number",
    "status" : "string",
    "data" : {
        "user_id" : "integer, unique",
        "nama" : "string",
        "email" : "string",
        "password" : "string",
        "no_telpon" : "string",
        "alamat" : "string",
        "point" : "integer",
        "createdAt" : "date",
        "updatedAt" : "date"
    }
}

Logout User

Request :

  • Method : DELETE
  • Endpoint : /api/users/logout
  • Header :
    • Accept: applications/json

Response :

{
    "code" : "number",
    "status" : "string"
}

Get User

Request :

  • Method : GET
  • Endpoint : /api/users/{user_id}
  • Header :
    • Accept: applications/json

Response :

{
    "code" : "number",
    "status" : "string",
    "data" : {
        "user_id" : "integer, unique",
        "nama" : "string",
        "email" : "string",
        "password" : "string",
        "no_telpon" : "string",
        "alamat" : "string",
        "point" : "integer",
        "createdAt" : "date",
        "updatedAt" : "date"
    }
}

List User

Request :

  • Method : GET
  • Endpoint : /api/users/{user_id}
  • Header :
    • Accept: applications/json
  • Query Param :
    • size: number,
    • page: number

Response :

{
    "code" : "number",
    "status" : "string",
    "data" : [
        {
          "user_id" : "integer, unique",
          "nama" : "string",
          "email" : "string",
          "password" : "string",
          "no_telpon" : "string",
          "alamat" : "string",
          "point" : "integer",
          "createdAt" : "date",
          "updatedAt" : "date"
        },
        {
          "user_id" : "integer, unique",
          "nama" : "string",
          "email" : "string",
          "password" : "string",
          "no_telpon" : "string",
          "alamat" : "string",
          "point" : "integer",
          "createdAt" : "date",
          "updatedAt" : "date"
        }
    ]
}

Update User

Request :

  • Method : PUT
  • Endpoint : /api/users/{user_id}
  • Header :
    • Content-Type: applications/json
    • Accept: applications/json
  • Body :
{
    "nama" : "string",
    "email" : "string",
    "password" : "string",
    "no_telpon" : "string",
    "alamat" : "string"
}

Response :

{
    "code" : "number",
    "status" : "string",
    "data" : {
        "user_id" : "integer, unique",
        "nama" : "string",
        "email" : "string",
        "password" : "string",
        "no_telpon" : "string",
        "alamat" : "string",
        "point" : "integer",
        "createdAt" : "date",
        "updatedAt" : "date"
    }
}

Delete User

Request :

  • Method : DELETE
  • Endpoint : /api/users/{user_id}
  • Header :
    • Accept: applications/json

Response :

{
    "code" : "number",
    "status" : "string"
}

Offers

Create Offer

Request :

  • Method : POST
  • Endpoint : /api/offers
  • Header :
    • Content-Type: application/json
    • Accept: applications/json
  • Body :
{
    "nama" : "string",
    "isActive" : "boolean",
    "jenis" : ["barang", "duit"],
    "hadiah" : "string",
    "persyaratan" : "integer",
    "tanggalExpire" : "date"
}

Response :

{
    "code" : "number",
    "status" : "string",
    "data" : {
        "offer_id" : "integer, unique",
        "nama" : "string",
        "isActive" : "boolean",
        "jenis" : ["barang", "duit"],
        "hadiah" : "string",
        "persyaratan" : "integer",
        "tanggalExpire" : "date",
        "createdAt" : "date",
        "updatedAt" : "date"
    }
}

Get Offer

Request :

  • Method : GET
  • Endpoint : /api/offers/{offer_id}
  • Header :
    • Accept: applications/json

Response :

{
    "code" : "number",
    "status" : "string",
    "data" : {
        "nama" : "string",
        "isActive" : "boolean",
        "jenis" : ["barang", "duit"],
        "hadiah" : "string",
        "persyaratan" : "integer",
        "tanggalExpire" : "date",
        "createdAt" : "date",
        "updatedAt" : "date"
    }
}

List Offer

Request :

  • Method : GET
  • Endpoint : /api/offers
  • Header :
    • Accept: applications/json
  • Query Param :
    • Filter-Jenis: string

Response :

{
    "code" : "number",
    "status" : "string",
    "data" : [
        {
            "offer_id" : "integer, unique",
            "nama" : "string",
            "isActive" : "boolean",
            "jenis" : ["barang", "duit"],
            "hadiah" : "string",
            "persyaratan" : "integer",
            "tanggalExpire" : "date",
            "createdAt" : "date",
            "updatedAt" : "date"
        },
        {
            "offer_id" : "integer, unique",
            "nama" : "string",
            "isActive" : "boolean",
            "jenis" : ["barang", "duit"],
            "hadiah" : "string",
            "persyaratan" : "integer",
            "tanggalExpire" : "date",
            "createdAt" : "date",
            "updatedAt" : "date"
        }
    ]
}

Update Offer

Request :

  • Method : PUT
  • Endpoint : /api/offers/{offer_id}
  • Header :
    • Content-Type: application/json
    • Accept: applications/json
  • Body :
{
    "nama" : "string",
    "isActive" : "boolean",
    "jenis" : ["barang", "duit"],
    "hadiah" : "string",
    "persyaratan" : "integer",
    "tanggalExpire" : "date"
}

Response :

{
    "code" : "number",
    "status" : "string",
    "data" : {
        "offer_id" : "integer, unique",
        "nama" : "string",
        "isActive" : "boolean",
        "jenis" : ["barang", "duit"],
        "hadiah" : "string",
        "persyaratan" : "integer",
        "tanggalExpire" : "date",
        "createdAt" : "date",
        "updatedAt" : "date"
    }
}

Delete Offer

Request :

  • Method : DELETE
  • Endpoint : /api/offers/{offer_id}
  • Header :
    • Accept: applications/json

Response :

{
    "code" : "number",
    "status" : "string"
}

Redeemed_Offer

Create Redeemed Offer

Request :

  • Method : POST
  • Endpoint : /api/redeemed_offer
  • Header :
    • Content-Type: application/json
    • Accept: applications/json
  • Body :
{
    "user_id" : "integer",
    "offer_id" : "integer"
}

Response :

{
    "code" : "number",
    "status" : "string",
    "data" : {
        "id" : "integer, unique",
        "user" : "User",
        "offer" : "Offer",
        "date_redeemed" : "date"
    }
}

Get Users Redeemed Offer

Request :

  • Method : GET
  • Endpoint : /api/redeemed_offer/{user_id}
  • Header :
    • Accept: applications/json

Response :

{
    "code" : "number",
    "status" : "string",
    "data" : [
      {
        "id" : "integer, unique",
        "user" : "User",
        "offer" : "Offer",
        "date_redeemed" : "date"
      },
      {
        "id" : "integer, unique",
        "user" : "User",
        "offer" : "Offer",
        "date_redeemed" : "date"
      }
    ]
}

Jenis Sampah

Create Jenis Sampah

Request :

  • Method : POST
  • Endpoint : /api/jenis_sampah
  • Header :
    • Content-Type: application/json
    • Accept: applications/json
  • Body :
{
    "nama" : "string",
    "harga" : "integer"
}

Response :

{
    "code" : "number",
    "status" : "string",
    "data" : {
        "jenis_sampah_id" : "integer, unique",
        "nama" : "string",
        "harga" : "integer",
        "createdAt" : "date",
        "updatedAt" : "date"
    }
}

Get Jenis Sampah

Request :

  • Method : GET
  • Endpoint : /api/jenis_sampah/{jenis_sampah_id}
  • Header :
    • Accept: applications/json

Response :

{
    "code" : "number",
    "status" : "string",
    "data" : {
        "jenis_sampah_id" : "integer, unique",
        "nama" : "string",
        "harga" : "integer",
        "createdAt" : "date",
        "updatedAt" : "date"
    }
}

List Jenis Sampah

Request :

  • Method : GET
  • Endpoint : /api/jenis_sampah
  • Header :
    • Accept: applications/json
  • Query Param :
    • filter_nama: "string"
    • filter_harga: "integer"

Response :

{
    "code" : "number",
    "status" : "string",
    "data" : [
        {
            "jenis_sampah_id" : "integer, unique",
            "nama" : "string",
            "harga" : "integer",
            "createdAt" : "date",
            "updatedAt" : "date"
        },
        {
            "jenis_sampah_id" : "integer, unique",
            "nama" : "string",
            "harga" : "integer",
            "createdAt" : "date",
            "updatedAt" : "date"
        }
    ]
}

Update Jenis Sampah

Request :

  • Method : PUT
  • Endpoint : /api/jenis_sampah/{jenis_sampah_id}
  • Header :
    • Content-Type: application/json
    • Accept: applications/json
  • Body :
{
    "nama" : "string",
    "harga" : "integer"
}

Response :

{
    "code" : "number",
    "status" : "string",
    "data" : {
        "jenis_sampah_id" : "integer, unique",
        "nama" : "string",
        "harga" : "integer",
        "createdAt" : "date",
        "updatedAt" : "date"
    }
}

Delete Jenis Sampah

Request :

  • Method : DELETE
  • Endpoint : /api/jenis_sampah/{jenis_sampah_id}
  • Header :
    • Accept: applications/json

Response :

{
    "code" : "number",
    "status" : "string"
}

Bank Sampah

Create Bank Sampah

Request :

  • Method : POST
  • Endpoint : /api/bank_sampah
  • Header :
    • Content-Type: applications/json
    • Accept: applications/json
  • Body :
{
    "nama" : "string",
    "lokasi" : "string"
}

Response :

{
    "code" : "number",
    "status" : "string",
    "data" : {
        "bank_sampah_id" : "integer, unique",
        "nama" : "string",
        "lokasi" : "string",
        "createdAt" : "date",
        "updatedAt" : "date"
    }
}

Update Bank Sampah

Request :

  • Method : PUT
  • Endpoint : /api/bank_sampah/{bank_sampah_id}
  • Header :
    • Content-Type: applications/json
    • Accept: applications/json
  • Body :
{
    "nama" : "string",
    "lokasi" : "string"
}

Response :

{
    "code" : "number",
    "status" : "string",
    "data" : {
        "bank_sampah_id" : "integer, unique",
        "nama" : "string",
        "lokasi" : "string",
        "createdAt" : "date",
        "updatedAt" : "date"
    }
}

Get Bank Sampah

Request :

  • Method : GET
  • Endpoint : /api/bank_sampah/{bank_sampah_id}
  • Header :
    • Accept: applications/json

Response :

{
    "code" : "number",
    "status" : "string",
    "data" : {
        "bank_sampah_id" : "integer, unique",
        "nama" : "string",
        "lokasi" : "string",
        "createdAt" : "date",
        "updatedAt" : "date"
    }
}

List Bank Sampah

Request :

  • Method : GET
  • Endpoint : /api/bank_sampah/{bank_sampah_id}
  • Header :
    • Accept: applications/json
  • Query Param:
    • filter_nama: string,
    • filter_lokasi: string,

Response :

{
    "code" : "number",
    "status" : "string",
    "data" : [
        {
            "bank_sampah_id" : "integer, unique",
            "nama" : "string",
            "lokasi" : "string",
            "createdAt" : "date",
            "updatedAt" : "date"
        },
        {
            "bank_sampah_id" : "integer, unique",
            "nama" : "string",
            "lokasi" : "string",
            "createdAt" : "date",
            "updatedAt" : "date"
        }
    ]
}

List Admin By Bank Sampah

Request :

  • Method : GET
  • Endpoint : /api/bank_sampah/{bank_sampah_id}/admins
  • Header :
    • Accept: applications/json

Response :

{
    "code" : "number",
    "status" : "string",
    "data" : [
        {
            "admin_id" : "integer, unique",
            "bank_sampah_id" : "integer",
            "nama" : "string",
            "email" : "string",
            "password" : "string",
            "createdAt" : "date",
            "updatedAt" : "date"
        },
        {
            "admin_id" : "integer, unique",
            "bank_sampah_id" : "integer",
            "nama" : "string",
            "email" : "string",
            "password" : "string",
            "createdAt" : "date",
            "updatedAt" : "date"
        }
    ]
}

Delete Bank Sampah

Request :

  • Method : DELETE
  • Endpoint : /api/bank_sampah/{bank_sampah_id}
  • Header :
    • Accept: applications/json

Response :

{
    "code" : "number",
    "status" : "string"
}

Admins

Register Admin

Request :

  • Method : POST
  • Endpoint : /api/admins/register
  • Header :
    • Content-Type: applications/json
    • Accept: applications/json
  • Body :
{
    "nama" : "string",
    "email" : "string",
    "password" : "string",
    "bank_sampah_id" : "integer"
}

Response :

{
    "code" : "number",
    "status" : "string",
    "data" : {
        "admin_id" : "integer, unique",
        "bank_sampah_id" : "integer",
        "nama" : "string",
        "email" : "string",
        "password" : "string",
        "createdAt" : "date",
        "updatedAt" : "date",
        "bearerToken" : "string",
        "apiKey" : "string"
    }
}

Login Admin

Request :

  • Method : POST
  • Endpoint : /api/admins/login
  • Header :
    • Content-Type: applications/json
    • Accept: applications/json
  • Body :
{
    "email" : "string",
    "password" : "string"
}

Response :

{
    "code" : "number",
    "status" : "string",
    "data" : {
        "admin_id" : "integer, unique",
        "bank_sampah_id" : "integer",
        "nama" : "string",
        "email" : "string",
        "password" : "string",
        "createdAt" : "date",
        "updatedAt" : "date",
        "bearerToken" : "string",
        "apiKey" : "string"
    }
}

Autologin Admin

Request :

  • Method : GET
  • Endpoint : /api/admins/autologin
  • Header :
    • Accept: applications/json

Response :

{
    "code" : "number",
    "status" : "string",
    "data" : {
        "admin_id" : "integer, unique",
        "bank_sampah_id" : "integer",
        "nama" : "string",
        "email" : "string",
        "password" : "string",
        "createdAt" : "date",
        "updatedAt" : "date"
    }
}

Logout Admin

Request :

  • Method : DELETE
  • Endpoint : /api/admins/logout
  • Header :
    • Accept: applications/json

Response :

{
    "code" : "number",
    "status" : "string"
}

List Admin

Request :

  • Method : GET
  • Endpoint : /api/admins
  • Header :
    • Accept: applications/json

Response :

{
    "code" : "number",
    "status" : "string",
    "data" : [
        {
            "admin_id" : "integer, unique",
            "bank_sampah_id" : "integer",
            "nama" : "string",
            "email" : "string",
            "password" : "string",
            "createdAt" : "date",
            "updatedAt" : "date"
        },
        {
            "admin_id" : "integer, unique",
            "bank_sampah_id" : "integer",
            "nama" : "string",
            "email" : "string",
            "password" : "string",
            "createdAt" : "date",
            "updatedAt" : "date"
        }
    ]
}

Finish Transaksi

Request :

  • Method : PUT
  • Endpoint : /api/admins/selesaikan_transaksi/{transaksi_id}
  • Header :
    • Accept: applications/json

Response :

{
    "code" : "number",
    "status" : "string"
}

Delete Admin

Request :

  • Method : DELETE
  • Endpoint : /api/admins/{admin_id}
  • Header :
    • Accept: applications/json

Response :

{
    "code" : "number",
    "status" : "string"
}

(pr kebawah buat dicek)

Transaksi

Create Transaksi

Request :

  • Method : POST
  • Endpoint : /api/transaksi
  • Header :
    • Content-Type: applications/json
    • Accept: applications/json
  • Body :
{
    "user_id" : "integer",
    "admin_id" : "integer"
}

Response :

{
    "code" : "number",
    "status" : "string",
    "data" : {
        "transaksi_id" : "integer,unique",
        "user" : "User",
        "admin" : "Admin",
        "total_poin" : "integer",
        "total_kuantitas" : "integer",
        "tanggal_transaksi" : "date"
    }
}

Get Transaksi

Request :

  • Method : GET
  • Endpoint : /api/transaksi/{transaksi_id}
  • Header :
    • Accept: applications/json

Response :

{
    "code" : "number",
    "status" : "string",
    "data" : {
      "transaksi_id" : "integer,unique",
      "user" : "User",
      "admin" : "Admin",
      "total_poin" : "integer",
      "total_kuantitas" : "integer",
      "tanggal_transaksi" : "date"
    }
}

List Transaksi

Request :

  • Method : GET
  • Endpoint : /api/transaksi
  • Header :
    • Accept: applications/json
  • Query Param :
    • filter_user_id: Int
    • filter_admin_id: Int

Response :

{
    "code" : "number",
    "status" : "string",
    "data" : [
      {
        "transaksi_id" : "integer,unique",
        "user" : "User",
        "admin" : "Admin",
        "total_poin" : "integer",
        "total_kuantitas" : "integer",
        "tanggal_transaksi" : "date"
      },
      {
        "transaksi_id" : "integer,unique",
        "user" : "User",
        "admin" : "Admin",
        "total_poin" : "integer",
        "total_kuantitas" : "integer",
        "tanggal_transaksi" : "date"
      }
    ]
}

List Jenis Sampah

Request :

  • Method : GET
  • Endpoint : api/transaksi/list_jenis_sampah/{transaksi_id}
  • Header :
    • Accept: applications/json

Response :

{
    "code" : "number",
    "status" : "string",
    "data" : [
      {
        "id" : "integer,unique",
        "jenis_sampah" : "JenisSampah",
        "kuantitas" : "integer",
        "poin" : "integer"
      },
      {
        "id" : "integer,unique",
        "jenis_sampah" : "JenisSampah",
        "kuantitas" : "integer",
        "poin" : "integer"
      }
    ]
}

Transaksi Jenis Sampah

Create Transaksi Jenis Sampah

Request :

  • Method : POST
  • Endpoint : /api/transaksi_jenis_sampah
  • Header :
    • Content-Type: applications/json
    • Accept: applications/json
  • Body :
{
    "transaksi_id" : "integer",
    "jenis_sampah_id" : "integer",
    "kuantitas" : "integer"
}

Response :

{
    "code" : "number",
    "status" : "string",
    "data" : {
      "id" : "integer,unique",
      "jenis_sampah" : "JenisSampah",
      "kuantitas" : "integer",
      "poin" : "integer"
    }
}

Update Transaksi Jenis Sampah

Request :

  • Method : PUT
  • Endpoint : /api/transaksi_jenis_sampah/{transaksi_jenis_sampah_id}
  • Header :
    • Content-Type: applications/json
    • Accept: applications/json
  • Body :
{
    "kuantitas" : "integer"
}

Response :

{
    "code" : "number",
    "status" : "string",
    "data" : {
      "id" : "integer,unique",
      "jenis_sampah" : "JenisSampah",
      "kuantitas" : "integer",
      "poin" : "integer"
    }
}

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published