- Captcha in review form
Pendaftaran dan penghapusan akun admin tidak tersedia melalui antarmuka web. Kedua aksi tersebut dilakukan melalui perintah Artisan custom berikut.
php artisan admin:new <name> <password>php artisan admin:delete <name>Sebelum membaca lebih jauh, ada beberapa konvensi yang REST API ini patuhi. Developer yang menggunakan REST API ini diharapkan mampu memahami konvensi tersebut dan menggunakannya sesuai dengan konvensi yang telah ditetapkan.
REST API ini menggunakan JSON sebagai format pertukaran data, kecuali di beberapa
endpoint yang menerima file seperti di /api/partner/ dan /api/paket/
untuk method POST dan PUT. Request untuk endpoint tersebut harus memiliki body dengan
MIME type multipart/form-data.
Karena API ini menggunakan Laravel, semua request PUT adalah request POST dengan field tambahan _method yang memiliki nilai 'PUT.'
{
...other data
"_method" : "PUT"
}Semua endpoint dengan HTTP method POST, PUT, dan DELETE adalah endpoint yang terlindungi.
Ada dua endpoint index, /api/{resource}/ dan /api/{resource}/index.
/api/{resource}/index adalah endpoint yang dilindungi dan memerlukan autentikasi. Endpoint tersebut ditujukan untuk digunakan di dashboard.
Sementara itu, /api/{resource}/ ditujukan untuk digunakan secara publik, dengan beberapa fitur data disembunyikan untuk menghemat waktu query.
Request yang mengakses endpoint yang terlindungi perlu menambahkan header Authentication dengan
nilai {tipe_token} {token}. Keduanya dapat diakses melalui endpoint log in.
POST /api/loginREST API ini menggunakan Bearer token untuk autentikasi. Token dapat diakses dengan melakukan request dengan username dan password admin yang telah didaftarkan sebelumnya melalui command prompt.
Contoh request:
{
"name" : "string",
"password" : "string"
}Contoh response:
{
"message": "Login success",
"access_token": "TOKEN",
"token_type": "Bearer"
}POST /api/logoutEndpoint ini terlindungi. Request ke endpoint ini tidak memerlukan body. Endpoint ini membuat semua token dari user menjadi tidak valid.
Secara umum, respons untuk method GET kelompok endpoint ini kurang lebih seperti berikut.
{
"nama" : "Partner",
"logo" : "path/to/logo"
}GET /api/partner/{id}GET /api/partnersGET /api/partners/indexEndpoint ini terlindungi.
POST /api/partnerFields:
name: required, string
logo: required, file, imageEndpoint ini terlindungi.
PUT /api/partner/{id}Fields:
name: optional, string
logo: optional, file, imageEndpoint ini terlindungi.
DELETE /api/partner/{id}Endpoint ini terlindungi. Request ke endpoint ini tidak memerlukan body.
Secara umum, respons untuk method GET kelompok endpoint ini kurang lebih seperti berikut.
{
"id" : 0,
"reviewer_name" : "Fulan",
"content" : "Lorem ipsum dolor sit amet..."
}Untuk mengontrol visibilitas review, dapat menggunakan endpoint (/api/review/{id}/show)[#menyembunyikan-review] dan (/api/review/{id}/show)[#menampilkan-review]
GET /api/reviewsGET /api/reviews/indexEndpoint ini terlindungi.
GET /api/review/{id}POST /api/review/{id}/hideEndpoint ini terlindungi. Request ke endpoint ini tidak memerlukan body.
POST /api/review/{id}/showEndpoint ini terlindungi. Request ke endpoint ini tidak memerlukan body.
POST /api/reviewFields:
reviewer_name: required, string
content: required, textEndpoint ini terlindungi.
DELETE /api/review/{id}Endpoint ini terlindungi. Request ke endpoint ini tidak memerlukan body.
GET /api/satuansGET /api/satuans/indexEndpoint ini terlindungi.
GET /api/satuan/{id}POST /api/satuanFields:
nama: required, stringEndpoint ini terlindungi.
PUT /api/satuan/{id}Fields:
nama: optional, stringEndpoint ini terlindungi.
DELETE /api/satuan/{id}Endpoint ini terlindungi. Request ke endpoint ini tidak memerlukan body.
GET /api/paketsGET /api/pakets/indexEndpoint ini terlindungi.
GET /api/paket/{id}GET /api/paket/{id}/itemsPOST /api/paketFields:
name: required, string
harga: required, unsigned integer
kategori: required, 'nasi_kotak' OR 'prasmanan'
foto: required, file, image
items: optional, array<satuan_id>Endpoint ini terlindungi.
/api/paket/{id}
Fields:
name: optional, string
harga: optional, unsigned integer
kategori: optional, 'nasi_kotak' OR 'prasmanan'
foto: optional, file, image
items: optional, array<satuan_id>Endpoint ini terlindungi.
DELETE /api/paket/{id}Endpoint ini terlindungi. Request ke endpoint ini tidak memerlukan body.