###### tags : `itb` `documentation`
---
title: "Dokumentasi Rest API Lacak Bagasi"
---
# Dokumentasi Lacak Bagasi
## 1. Daftar Isi
[TOC]
## 2. Petunjuk Umum
1. Base Url : `http://{ip_address}:8080`
2. Untuk mendapatkan akses api, setiap request perlu disertakan token pada header.
3. Token diperoleh dengan mengakses api token dengan mengirimkan username & password. Server memberi respon berupa token dan refresh_token. Token valid dalam jangka waktu tertentu, jika token sudah tidak valib, gunakan refresh_token untuk mendapatkan token baru.
## 3. Format Respon
```gherkin=
Sample Response:
{
status: "success",
result: [
{data1},
{data2},
]
}
{
status: "success",
result: response.data
}
Error response :
{
error: message
}
```
> Read more about Gherkin here: https://docs.cucumber.io/gherkin/reference/
## 4. Diagram Alir Request
#### Request Token
```sequence
Note left of Client: username & password
Client->Server: request token
Server->Database: query database
Note right of Server: validate payload
Database->Server: send user data
Server->Client: send response
Note left of Client: token & refresh_token
```
#### General Request
```sequence
Note left of Client: payload + token
Client->Server: send request
Note right of Server: validate token
Server->Database: query database
Note right of Database: query data
Database->Server: send data
Server->Client: send response
Note left of Client: data
```
# REST API
## 1. Auth Token
Endpoint : `{base_url}/api/v1/auth`
|No|Metode|Endpoint|Header|Body|Deskripsi|
|:----:|:----:|:-----:|:-----:|:-----:|:-----:|
|1|Post|`{auth_endpoint}/token`|-|username, password|Mendapatkan token & refresh token|
|2|Post|`{auth_endpoint}/refresh`| refresh-token|- |Mendapatkan token & refresh token baru|
> Catatan :
> Masa berlaku token adalah 1 jam sedangkan refresh token 1 hari.
#### Deskripsi Body
| No | Item | Tipe Data | Catatan |
| :-: | :---------: | :-------: | :-------: |
| 1 | username | String | data unik |
| 2 | email | String | - |
| 3 | isSuperuser | Boolean | - |
| 4 | isAdmin | Boolean | - |
#### Sample Request - Using Curl
##### Get Token
```gherkin=
Request :
curl --location --request POST 'http://127.0.0.1:8080/api/v1/auth/token' \
--header 'Content-Type: application/json' \
--data-raw '{"username":"admin", "password":"bandung123abc"}'
Response:
{
"status": "success",
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwiaWF0IjoxNjAzMTcxMDU0LCJleHAiOjE2MDMyNTc0NTR9.14jJ_htr460bVCqMvsl3ImcpZDtiYXbavfSo5_l6MHY",
"max_age": "1d",
"refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwiaWF0IjoxNjAzMTcxMDU0LCJleHAiOjE2MDMzNDM4NTR9.AsYg6wRyke48ibK2SH2RLydrX_k7KRJavWXVaWyhT3Y"
}
```
##### Refresh Token
```gherkin=
Request :
curl --location --request POST 'http://127.0.0.1:8080/api/v1/auth/refresh' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwiaWF0IjoxNjAzMTcxMDU0LCJleHAiOjE2MDMzNDM4NTR9.AsYg6wRyke48ibK2SH2RLydrX_k7KRJavWXVaWyhT3Y'
Response:
{
"status": "success",
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwiaWF0IjoxNjAzMTcxMjkyLCJleHAiOjE2MDMyNTc2OTJ9.DfVLp8JvCt_4uhCTi43Ln9-vkc9qVqpMeRWJduMB270",
"max_age": "1d",
"refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwiaWF0IjoxNjAzMTcxMjkyLCJleHAiOjE2MDMzNDQwOTJ9.rOMJ-ipdPdopy4qrzEhxvfxMy35qxqaYByn_yoJjbPk"
}
```
## 2. User
#### List API User
Endpoint :`{base_url}/api/v1/user`
|No|Metode|Endpoint|Body|Deskripsi|
|:----:|:----:|:-----:|:-----:|:-----:|
|1|Get|`{user_endpoint}`|-|Mendapatkan list user|
|2|Post|`{user_endpoint}`| username, email, isSuperuser, isAdmin |Registrasi User|
|3|Patch|`{user_endpoint}`| command |Memperbarui data password user|
|4|Delete|`{user_endpoint}`| command |menghapus user |
> Catatan :
> Akses api ini hanya bisa dilakukan oleh superuser atau user yang bersangkutan. User yang tidak memiliki izin akan mendapatkan pesan error dengan kode 403.
#### Deskripsi Body
| No | Item | Tipe Data | Catatan |
| :-: | :---------: | :-------: | :-------: |
| 1 | username | String | data unik |
| 2 | email | String | - |
| 3 | isSuperuser | Boolean | - |
| 4 | isAdmin | Boolean | - |
## 3. Device
#### List API Device
Endpoint :`{base_url}/api/v1/device`
|No|Metode|Endpoint|Param|Body|Deskripsi|
|:----:|:----:|:-----:|:-----:|:-----:|:-----:|
|1|Get|`{device_endpoint}`|limit, offset, _id, airport, terminal, gate, location , search|-|Mendapatkan list device|
|2|Post|`{device_endpoint}`|-|_id, airport, terminal, gate, location |Registrasi Device|
|3|Patch|`{device_endpoint}`|-| _id, airport, terminal, gate, location |Memperbarui data device|
|4|Delete|`{device_endpoint}`|_id|command |Menghapus device |
> Catatan :
> Get data bisa dilakukan oleh semua user yang memiliki token, sedangkan request lainnnya hanya bisa dilakukan oleh admin.
#### Deskripsi Body
| No | Item | Tipe Data | Catatan |
| :-: | :------: | :-------: | :----------------------------------: |
| 1 | \_id | String | data unik |
| 2 | airport | String | - |
| 3 | terminal | String | - |
| 4 | gate | String | - |
| 5 | location | String | valid: loading, plane, getout, claim |
#### Sample Request - Using Curl
##### Get Device
```gherkin=
Request :
curl --location --request GET 'http://127.0.01:8080/api/v1/device' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwiaWF0IjoxNjA0MzI5Nzc3LCJleHAiOjE2MDQ0MTYxNzd9.NoNOLN1UfJSqnQCsQf9oKrKorxCL1xSMqJhQJInYVZA'
Response:
{
"result": [
{
"created": "2020-11-01T15:47:39.132Z",
"_id": "device-2",
"airport": "Husein Sastranegara (BDO)",
"terminal": "A",
"gate": "1",
"location": "2"
},
{
"created": "2020-11-01T15:47:39.132Z",
"_id": "device-1",
"airport": "Husein Sastranegara (BDO)",
"terminal": "A",
"gate": "1",
"location": "1"
}
],
"count": 2
}
```
##### Post Device
```gherkin=
curl --location --request POST 'http://127.0.01:8080/api/v1/device' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwiaWF0IjoxNjA0MzI5Nzc3LCJleHAiOjE2MDQ0MTYxNzd9.NoNOLN1UfJSqnQCsQf9oKrKorxCL1xSMqJhQJInYVZA' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'airport=Soekarno Hatta (CGK)' \
--data-urlencode 'terminal=A' \
--data-urlencode 'gate=2' \
--data-urlencode 'location=3' \
--data-urlencode '_id=device-3'
Response:
{
"message": "success",
"result": {
"created": "2020-11-02T15:04:59.165Z",
"airport": "Soekarno Hatta (CGK)",
"terminal": "A",
"gate": "2",
"location": "3",
"_id": "device-3",
"__v": 0
}
}
```
##### Patch Device
```gherkin=
Request :
curl --location --request PATCH 'http://127.0.01:8080/api/v1/device' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwiaWF0IjoxNjA0MzI5Nzc3LCJleHAiOjE2MDQ0MTYxNzd9.NoNOLN1UfJSqnQCsQf9oKrKorxCL1xSMqJhQJInYVZA' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode '_id=device-3' \
--data-urlencode 'terminal=B'
Response:
{
"message": "success",
"result": {
"created": "2020-11-02T15:04:59.165Z",
"_id": "device-3",
"airport": "Soekarno Hatta (CGK)",
"terminal": "B",
"gate": "2",
"location": "3",
"__v": 0
}
}
```
##### Delete Device
```gherkin=
Request :
curl --location --request DELETE 'http://127.0.01:8080/api/v1/device?_id=device-3' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwiaWF0IjoxNjA0MzI5Nzc3LCJleHAiOjE2MDQ0MTYxNzd9.NoNOLN1UfJSqnQCsQf9oKrKorxCL1xSMqJhQJInYVZA'
Response:
{
"message": "deleted",
"deletedCount": 1
}
```
## 4. Flight
#### List API Flight
Endpoint :`{base_url}/api/v1/flight`
|No|Metode|Endpoint|Param|Body|Deskripsi|
|:----:|:----:|:-----:|:-----:|:-----:|:-----:|
|1|Get|`{flight_endpoint}`|limit, offset, _id, airline, departureAirport, arrivalAirport|-|Mendapatkan list flight|
|2|Post|`{flight_endpoint}`| -|_id, airline, departureAirport, arrivalAirport |Registrasi Flight|
|3|Patch|`{flight_endpoint}`| -|_id, airline, departureAirport, arrivalAirport |Memperbarui data penerbangan|
|4|Delete|`{flight_endpoint}`|_id|- |Menghapus penerbangan|
> Catatan :
> Get data bisa dilakukan oleh semua user yang memiliki token, sedangkan request lainnnya hanya bisa dilakukan oleh admin.
#### Deskripsi Body
| No | Item | Tipe Data | Catatan |
| :-: | :--------------: | :-------: | :-----: |
| 1 | \_id | String | Nomor Penerbangan |
| 2 | airline | String | - |
| 3 | departureAirport | String | - |
| 4 | arrivalAirport | String | - |
#### Sample Request - Using Curl
##### Get Flight
```gherkin=
Request :
curl --location --request GET 'http://127.0.01:8080/api/v1/flight?airline=Wings%20Air' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwiaWF0IjoxNjA0MzI5Nzc3LCJleHAiOjE2MDQ0MTYxNzd9.NoNOLN1UfJSqnQCsQf9oKrKorxCL1xSMqJhQJInYVZA'
Response:
{
"result": [
{
"_id": "IW 1951",
"airline": "Wings Air",
"departureAirport": "Husein Sastranegara (BDO)",
"arrivalAirport": "Soekarno Hatta (CGK)"
}
],
"count": 1
}
```
##### Post Flight
```gherkin=
Request :
curl --location --request POST 'http://127.0.01:8080/api/v1/flight' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwiaWF0IjoxNjA0MzI5Nzc3LCJleHAiOjE2MDQ0MTYxNzd9.NoNOLN1UfJSqnQCsQf9oKrKorxCL1xSMqJhQJInYVZA' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode '_id=IW 1951' \
--data-urlencode 'airline=Wings Air' \
--data-urlencode 'departureAirport=Husein Sastranegara (BDO)' \
--data-urlencode 'arrivalAirport=Soekarno Hatta (CGK)'
Response:
{
"error": "flight already registered"
}
```
##### Patch Flight
```gherkin=
Request :
curl --location --request PATCH 'http://127.0.01:8080/api/v1/flight' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwiaWF0IjoxNjA0MzI5Nzc3LCJleHAiOjE2MDQ0MTYxNzd9.NoNOLN1UfJSqnQCsQf9oKrKorxCL1xSMqJhQJInYVZA' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode '_id=IW 1951' \
--data-urlencode 'arrivalAirport=Soekarno Hatta (CGK)'
Response:
{
"message": "success",
"result": {
"_id": "IW 1951",
"airline": "Wings Air",
"departureAirport": "Husein Sastranegara (BDO)",
"arrivalAirport": "Soekarno Hatta (CGK)",
"__v": 0
}
}
```
##### Delete Flight
```gherkin=
Request :
curl --location --request DELETE 'http://127.0.01:8080/api/v1/flight?_id=IW%201951' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwiaWF0IjoxNjA0MzI5Nzc3LCJleHAiOjE2MDQ0MTYxNzd9.NoNOLN1UfJSqnQCsQf9oKrKorxCL1xSMqJhQJInYVZA'
Response:
{
"message": "deleted",
"deletedCount": 1
}
```
## 5. Schedule
#### List API Schedule
Endpoint :`{base_url}/api/v1/schedule`
|No|Metode|Endpoint|Body|Deskripsi|
|:----:|:----:|:-----:|:-----:|:-----:|
|1|Get|`{schedule_endpoint}`|limit, offset, departureTerminal, departureGate, arrivalTerminal, arrivalGate, flight, search |Mendapatkan list schedule|
|2|Post|`{schedule_endpoint}`| departureDatetime, departureDelay, departureTerminal, departureGate, arrivalDatetime, arrivalDelay, arrivalTerminal, arrivalGate, flight |Registrasi Flight|
|3|Patch|`{schedule_endpoint}`| \_id, departureDatetime, departureDelay, departureTerminal, departureGate, arrivalDatetime, arrivalDelay, arrivalTerminal, arrivalGate, flight |Memperbarui data penerbangan|
|4|Delete|`{schedule_endpoint}`| \_id |Menghapus penerbangan|
> Catatan :
> Get data bisa dilakukan oleh semua user yang memiliki token, sedangkan request lainnnya hanya bisa dilakukan oleh admin.
#### Deskripsi Body
| No | Item | Tipe Data | Catatan |
| :-: | :---------------: | :-------: | :-----------: |
| 1 | \_id | String | - |
| 2 | departureDatetime | Datetime | - |
| 3 | departureDelay | Number | - |
| 4 | departureTerminal | String | - |
| 5 | departureGate | String | - |
| 6 | arrivalDatetime | Datetime | - |
| 7 | arrivalDelay | Number | - |
| 8 | arrivalTerminal | String | - |
| 9 | arrivalGate | String | - |
| 10 | flight | String | Flight Number |
#### Sample Request - Using Curl
##### Get Schedule
```gherkin=
Request :
curl --location --request GET 'http://127.0.01:8080/api/v1/schedule?limit=1&offset=2' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwiaWF0IjoxNjA0MzI5Nzc3LCJleHAiOjE2MDQ0MTYxNzd9.NoNOLN1UfJSqnQCsQf9oKrKorxCL1xSMqJhQJInYVZA'
Response:
{
"result": [
{
"departureDelay": 0,
"departureGate": "1",
"arrivalDelay": 0,
"arrivalGate": "2",
"_id": "5f9ee2e233dbda48385ad6ae",
"departureDatetime": "2020-11-01T00:00:00.000Z",
"departureTerminal": "A",
"arrivalDatetime": "2020-11-01T03:10:00.000Z",
"arrivalTerminal": "A",
"flight": {
"_id": "JT-3961",
"airline": "Lion Air",
"departureAirport": "Husein Sastranegara (BDO)",
"arrivalAirport": "Kualanamu (KNO)"
}
}
],
"count": 3
}
```
##### Post Schedule
```gherkin=
Request :
curl --location --request POST 'http://127.0.01:8080/api/v1/schedule' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwiaWF0IjoxNjA0MzI5Nzc3LCJleHAiOjE2MDQ0MTYxNzd9.NoNOLN1UfJSqnQCsQf9oKrKorxCL1xSMqJhQJInYVZA' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'departureDatetime=2020-10-15 15:40:00' \
--data-urlencode 'departureTerminal=A' \
--data-urlencode 'departureGate=1' \
--data-urlencode 'arrivalDatetime=2020-10-15 18:00:00' \
--data-urlencode 'arrivalTerminal=A' \
--data-urlencode 'arrivalGate=1' \
--data-urlencode 'flight=JT-3961'
Response:
{
"message": "success",
"result": {
"departureDelay": 0,
"departureGate": "1",
"arrivalDelay": 0,
"arrivalGate": "1",
"_id": "5fa0277209ea62e13496f703",
"departureDatetime": "2020-10-15T08:40:00.000Z",
"departureTerminal": "A",
"arrivalDatetime": "2020-10-15T11:00:00.000Z",
"arrivalTerminal": "A",
"flight": {
"_id": "JT-3961",
"airline": "Lion Air",
"departureAirport": "Husein Sastranegara (BDO)",
"arrivalAirport": "Kualanamu (KNO)",
"__v": 0
},
"__v": 0
}
}
```
##### Patch Schedule
```gherkin=
Request :
curl --location --request PATCH 'http://127.0.01:8080/api/v1/schedule' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwiaWF0IjoxNjA0MzI5Nzc3LCJleHAiOjE2MDQ0MTYxNzd9.NoNOLN1UfJSqnQCsQf9oKrKorxCL1xSMqJhQJInYVZA' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode '_id=5fa0277209ea62e13496f703' \
--data-urlencode 'arrivalDatetime=2020-10-15T11:20:00.000Z'
Response:
{
"message": "success",
"result": {
"departureDelay": 0,
"departureGate": "1",
"arrivalDelay": 0,
"arrivalGate": "1",
"_id": "5fa0277209ea62e13496f703",
"departureDatetime": "2020-10-15T08:40:00.000Z",
"departureTerminal": "A",
"arrivalDatetime": "2020-10-15T11:20:00.000Z",
"arrivalTerminal": "A",
"flight": "JT-3961",
"__v": 0
}
}
```
##### Delete Schedule
```gherkin=
Request :
curl --location --request DELETE 'http://127.0.01:8080/api/v1/schedule?_id=5fa0277209ea62e13496f703' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwiaWF0IjoxNjA0MzI5Nzc3LCJleHAiOjE2MDQ0MTYxNzd9.NoNOLN1UfJSqnQCsQf9oKrKorxCL1xSMqJhQJInYVZA'
Response:
{
"message": "deleted",
"deletedCount": 1
}
```
## 6. Passenger
#### List API Passenger
Endpoint :`{base_url}/api/v1/passenger`
|No|Metode|Endpoint|Param|Body|Deskripsi|
|:----:|:----:|:-----:|:-----:|:-----:|:-----:|
|1|Get|`{passenger_endpoint}`|limit, offset, idType, passengerId, firstName, lastName, nationality, email, search |-|Mendapatkan list passenger|
|2|Post|`{passenger_endpoint}`|-|passengerId, idType, firstName, lastName, nationality, email, phone|Registrasi passenger|
|3|Patch|`{passenger_endpoint}`|-| passengerId, email, phone |Memperbarui data passenger|
|4|Delete|`{passenger_endpoint}`|passengerId| - |Menghapus passenger|
> Catatan :
> Get data bisa dilakukan oleh semua user yang memiliki token, sedangkan request lainnnya hanya bisa dilakukan oleh admin.
#### Deskripsi Body
| No | Item | Tipe Data | Catatan |
| :-: | :---------: | :-------: | :-----: |
| 1 | passengerId | String | - |
| 2 | idType | String | - |
| 3 | firstName | String | - |
| 4 | lastName | String | - |
| 5 | nationality | String | - |
| 6 | email | String | - |
| 7 | phone | String | - |
#### Sample Request - Using Curl
##### Get Passenger
```gherkin=
Request :
curl --location --request GET 'http://127.0.01:8080/api/v1/passenger?limit=1' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwiaWF0IjoxNjA0MzI5Nzc3LCJleHAiOjE2MDQ0MTYxNzd9.NoNOLN1UfJSqnQCsQf9oKrKorxCL1xSMqJhQJInYVZA'
Response:
{
"result": [
{
"_id": "234",
"idType": "ktp",
"firstName": "Fitria",
"lastName": "Miftasani",
"nationality": "indonesia",
"email": "",
"phone": "",
"created": "2020-11-01T15:50:36.664Z"
}
],
"count": 2
}
```
##### Post Passenger
```gherkin=
Request :
curl --location --request POST 'http://127.0.01:8080/api/v1/passenger' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwiaWF0IjoxNjA0MzI5Nzc3LCJleHAiOjE2MDQ0MTYxNzd9.NoNOLN1UfJSqnQCsQf9oKrKorxCL1xSMqJhQJInYVZA' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode '_id=123456' \
--data-urlencode 'idType=passport' \
--data-urlencode 'firstName=ghazi' \
--data-urlencode 'lastName=el ghiifari' \
--data-urlencode 'nationality=indonesia'
Response:
{
"message": "success",
"result": {
"_id": "123456",
"idType": "passport",
"firstName": "ghazi",
"lastName": "el ghiifari",
"nationality": "indonesia",
"created": "2020-11-02T15:41:15.553Z",
"__v": 0
}
}
```
##### Patch Passenger
```gherkin=
Request :
curl --location --request PATCH 'http://127.0.01:8080/api/v1/passenger' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwiaWF0IjoxNjA0MzI5Nzc3LCJleHAiOjE2MDQ0MTYxNzd9.NoNOLN1UfJSqnQCsQf9oKrKorxCL1xSMqJhQJInYVZA' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode '_id=123456' \
--data-urlencode 'email=ghazi@mail.com'
Response:
{
"message": "success",
"result": {
"_id": "123456",
"idType": "passport",
"firstName": "ghazi",
"lastName": "el ghiifari",
"nationality": "indonesia",
"created": "2020-11-02T15:41:15.553Z",
"__v": 0,
"email": "ghazi@mail.com"
}
}
```
##### Delete Passenger
```gherkin=
Request :
curl --location --request DELETE 'http://127.0.01:8080/api/v1/passenger?_id=12345' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwiaWF0IjoxNjA0MzI5Nzc3LCJleHAiOjE2MDQ0MTYxNzd9.NoNOLN1UfJSqnQCsQf9oKrKorxCL1xSMqJhQJInYVZA'
Response:
{
"error": "data not found",
"deletedCount": 0
}
```
## 7. Luggage
#### List API Luggage
Endpoint :`{base_url}/api/v1/luggage`
|No|Metode|Endpoint|Param|Body|Deskripsi|
|:----:|:----:|:-----:|:-----:|:-----:|:-----:|
|1|Get|`{luggage_endpoint}`|limit, offset, \_id, passenger , search|-| Mendapatkan list luggage |
|2|Get|`{luggage_endpoint}/detail`|\_id|-| Mendapatkan detail luggage |
|2|Post|`{luggage_endpoint}`|-|\_id, weight, dimension, lastStatus, lastUpdate, passenger, flight|Registrasi luggage|
|3|Delete|`{luggage_endpoint}`|\_id|-|Menghapus luggage|
> Catatan :
> Get data bisa dilakukan oleh semua user yang memiliki token, sedangkan request lainnnya hanya bisa dilakukan oleh admin.
#### Deskripsi Body
| No | Item | Tipe Data | Catatan |
| :-: | :----------: | :-------: | :-------------------------------: |
| 1 | \_id | String | - |
| 2 | weight | String | - |
| 3 | dimension | String | format: p x l x t dalam satuan cm |
| 4 | lastStatus | String | - |
| 5 | lastUpdate | String | - |
| 6 | passenger | String | Id Penumpang |
| 7 | flight | String | Kode Penerbangan |
#### Sample Request - Using Curl
##### Get Luggage
```gherkin=
Request :
curl --location --request GET 'http://127.0.01:8080/api/v1/luggage?search=bagasi-1' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwiaWF0IjoxNjA0MzI5Nzc3LCJleHAiOjE2MDQ0MTYxNzd9.NoNOLN1UfJSqnQCsQf9oKrKorxCL1xSMqJhQJInYVZA'
Response:
{
"result": [
{
"created": "2020-11-01T17:07:34.699Z",
"lastStatus": "0",
"lastUpdate": "2020-11-01T17:07:34.699Z",
"_id": "bagasi-1",
"weight": 20,
"dimension": "20x20x20",
"passenger": {
"_id": "123",
"firstName": "Yudi",
"lastName": "Aditya"
},
"schedule": {
"_id": "5f9ee2e233dbda48385ad6ae",
"flight": {
"_id": "JT-3961",
"airline": "Lion Air",
"departureAirport": "Husein Sastranegara (BDO)",
"arrivalAirport": "Kualanamu (KNO)",
"__v": 0
}
}
}
],
"count": 1
}
```
##### Get Luggage Detail
```gherkin=
Request :
curl --location --request GET 'http://127.0.01:8080/api/v1/luggage/detail/?_id=bagasi-1' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwiaWF0IjoxNjA0MzI5Nzc3LCJleHAiOjE2MDQ0MTYxNzd9.NoNOLN1UfJSqnQCsQf9oKrKorxCL1xSMqJhQJInYVZA'
Response:
{
"result": {
"created": "2020-11-01T17:07:34.699Z",
"_id": "bagasi-1",
"weight": 20,
"dimension": "20x20x20",
"passenger": "123",
"schedule": {
"_id": "5f9ee2e233dbda48385ad6ae",
"departureDatetime": "2020-11-01T00:00:00.000Z",
"arrivalDatetime": "2020-11-01T03:10:00.000Z",
"flight": {
"_id": "JT-3961",
"airline": "Lion Air",
"departureAirport": "Husein Sastranegara (BDO)",
"arrivalAirport": "Kualanamu (KNO)"
}
}
}
}
```
##### Post Luggage
```gherkin=
Request :
curl --location --request POST 'http://127.0.01:8080/api/v1/luggage' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwiaWF0IjoxNjA0MzI5Nzc3LCJleHAiOjE2MDQ0MTYxNzd9.NoNOLN1UfJSqnQCsQf9oKrKorxCL1xSMqJhQJInYVZA' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode '_id=12345678' \
--data-urlencode 'passenger=12345' \
--data-urlencode 'flight=JT 3961'
Response:
{
"error": "passenger was not found"
}
```
##### Delete Luggage
```gherkin=
Request :
curl --location --request DELETE 'http://127.0.01:8080/api/v1/luggage/?_id=bagasi-1' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwiaWF0IjoxNjA0MzI5Nzc3LCJleHAiOjE2MDQ0MTYxNzd9.NoNOLN1UfJSqnQCsQf9oKrKorxCL1xSMqJhQJInYVZA'
Response:
{
"message": "deleted",
"deletedCount": 1
}
```
## 8. LuggageLog
#### List API LuggageLog
Endpoint :`{base_url}/api/v1/luggage-log`
|No|Metode|Endpoint|Param|Body|Deskripsi|
|:----:|:----:|:-----:|:-----:|:-----:|:-----:|
|1|Get|`{luggageLog_endpoint}`|limit, offset, status, luggage, device, search |Mendapatkan list luggage Log|
|2|Get|`{luggageLog_endpoint}/detail`|luggage |Mendapatkan riwayat Log detail|
|3|Post|`{luggageLog_endpoint}`|-| timestamp, \_id, device | Registrasi luggage Log |
|4|Delete|`{luggageLog_endpoint}`|\_id|-|Menghapus luggage Log|
> Catatan :
> Get data bisa dilakukan oleh semua user yang memiliki token, sedangkan request lainnnya hanya bisa dilakukan oleh admin.
#### Deskripsi Body
| No | Item | Tipe Data | Catatan |
| :-: | :-------: | :-------: | :-----: |
| 1 | timestamp | Datetime | - |
| 2 | luggage | String | - |
| 3 | device | String | - |
#### Sample Request - Using Curl
##### Get LuggageLog
```gherkin=
Request :
curl --location --request GET 'http://127.0.01:8080/api/v1/luggage-log?luggage=bagasi-001' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwiaWF0IjoxNjA0NDk5NjM5LCJleHAiOjE2MDQ1ODYwMzl9.o5hFJEH3kEUQjFopYxNx0hdeFjmx05F4WxMjpy_rTj0'
Response:
{
"result": [
{
"timestamp": "2020-11-04T14:57:38.413Z",
"_id": "5fa2c17c9664fe2dc03f8507",
"luggage": {
"_id": "bagasi-001",
"passenger": {
"_id": "ktp-001",
"firstName": "Yudi",
"lastName": "Aditya"
}
},
"status": 0,
"message": "ok"
}
],
"count": 1
}
```
##### Get LuggageLog Detail
```gherkin=
Request :
curl --location --request GET 'http://127.0.01:8080/api/v1/luggage-log/detail?luggage=bagasi-001' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwiaWF0IjoxNjA0NDk5NjM5LCJleHAiOjE2MDQ1ODYwMzl9.o5hFJEH3kEUQjFopYxNx0hdeFjmx05F4WxMjpy_rTj0'
Response:
{
"result": {
"history": [
{
"status": 0,
"timestamp": "2020-11-04T14:57:38.413Z",
"isDone": true
},
{
"status": 1,
"timestamp": "2020-11-04T15:43:42.409Z",
"isDone": true
},
{
"status": 2,
"timestamp": "2020-11-04T15:43:42.409Z",
"isDone": true
}
],
"luggage": {
"created": "2020-11-04T14:57:38.405Z",
"_id": "bagasi-001",
"weight": 20,
"dimension": "20x20x20",
"passenger": "ktp-001",
"schedule": {
"_id": "5fa2bd587e6a062ce8a1726f",
"departureDatetime": "2020-11-04T15:10:00.000Z",
"arrivalDatetime": "2020-11-04T16:50:00.000Z",
"flight": {
"_id": "JT-3961",
"airline": "Lion Air",
"departureAirport": "Husein Sastranegara (BDO)",
"arrivalAirport": "Kuala Namu (KNM)"
}
}
}
}
}
```
##### Post LuggageLog
```gherkin=
Request :
curl --location --request POST 'http://127.0.01:8080/api/v1/luggage-log' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwiaWF0IjoxNjA0NDk5NjM5LCJleHAiOjE2MDQ1ODYwMzl9.o5hFJEH3kEUQjFopYxNx0hdeFjmx05F4WxMjpy_rTj0' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'luggage=bagasi-001' \
--data-urlencode 'device=device-001'
Response:
{
"message": "success"
}
```
##### Delete LuggageLog
```gherkin=
Request :
curl --location --request DELETE 'http://127.0.01:8080/api/v1/luggage-log?_id=5fa2c79a6f265127c463bcb3' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwiaWF0IjoxNjA0NDk5NjM5LCJleHAiOjE2MDQ1ODYwMzl9.o5hFJEH3kEUQjFopYxNx0hdeFjmx05F4WxMjpy_rTj0'
Response:
{
"message": "deleted",
"deletedCount": 1
}
```