###### tags : `xirka` `documentation`
# Dokumentasi Rest API Xvent
Base Url `http://{ip_address}:8080`
Respon Base Url `{ message: "Welcome To Xirka Ventilator REST API " }`
>Catatan :
>Untuk mendapatkan akses api, setiap request perlu disertakan token pada header.
#### Daftar Isi
###### 0. Token
###### 1. Konfigurasi UI
###### 2. Konfigurasi Alarm
###### 3. Pesan Alarm
###### 4. Data Sensor
###### 5. Parameter Ventilator
###### 6. All Data
###### 7. Utility
###### 8. Websocket
### 0. Token
|No|Metode|Endpoint|Header|Body|Deskripsi|
|:----:|:----:|:-----:|:-----:|:-----:|:-----:|
|1|Post|`{base_url}/api/v1/auth/token`|-|username, password|Mendapatkan token & refresh token|
|2|Post|`{base_url}/api/v1/auth/refresh`| refresh-token|- |Mendapatkan token & refresh token baru|
>Catatan :
-Masa berlaku token adalah 8 jam sedangkan refresh token 1 hari.
### 1. Konfigurasi UI
|No|Metode|Endpoint|Body|Deskripsi|
|:----:|:----:|:-----:|:-----:|:-----:|
|1|Get|`{base_url}/api/v1/ui_config`|-|Mendapatkan konfigurasi UI|
|2|Post|`{base_url}/api/v1/ui_config`| theme, language, pressure_unit, numpad, auto_clear |Membuat/mengubah konfigurasi UI|
|3|Post|`{base_url}/api/v1/ui_config/lock`| command |Mengunci/membuka akses run/stop lokal PC |
|4|Post|`{base_url}/api/v1/ui_config/remote`| command |Mengunci/membuka akses run/stop remote |
#### Deskripsi Body
|No|Item|Tipe Data|Nilai Valid|
|:----:|:----:|:-----:|:-----:|
|1|theme|String|dark, light|
|2|language|String|en, id|
|3|pressure_unit|String|cmh2o, mbar, hpa|
|4|numpad|Boolean|true, false|
|5|auto_clear|Boolean|true, false|
|6|numpad|Boolean|true, false|
|7|command|String|lock, unlock|
### 2. Konfigurasi Alarm
|No|Metode|Endpoint|Body|Deskripsi|
|:----:|:----:|:-----:|:-----:|:-----:|
|1|Get|`{base_url}/api/v1/alarm_config`|-|Mendapatkan konfigurasi alarm|
|2|Post|`{base_url}/api/v1/alarm_config`| apnea_alarm, respiratory_rate_alarm, respiratory_rate_limit, pressure_alarm, fio2_alarm, minimum_fio2_limit, ac_power_alarm, low_o2_pressure_alarm, air_supply_alarm |Membuat/mengubah konfigurasi alarm|
#### Deskripsi Body
|No|Item|Tipe Data|Nilai Valid|
|:----:|:----:|:-----:|:-----:|
|1|apnea_alarm|Boolean|true, false|
|2|respiratory_rate_alarm|Boolean|true, false|
|3|respiratory_rate_limit|Integer|[0,99]|
|4|pressure_alarm|Boolean|true, false|
|5|fio2_alarm|Boolean|true, false|
|6|minimum_fio2_limit|Integer|[0,17]|
|7|ac_power_alarm|Boolean|true, false|
|8|air_supply_alarm|Boolean|true, false|
### 3. Pesan Alarm
|No|Metode|Endpoint|Param|Body|Deskripsi|
|:----:|:----:|:-----:|:-----:|:-----:|:-----:|
|1|Get|`{base_url}/api/v1/alarm_message`|limit, offset, start, end|-|Mendapatkan pesan alarm|
|2|Post|`{base_url}/api/v1/alarm_message`| -|title, message, priority, category|Membuat pesan alarm|
|3|Delete|`{base_url}/api/v1/alarm_message`| alarm_id | |Menghapus pesan alarm|
#### Deskripsi Body
|No|Item|Tipe Data|Nilai Valid|
|:----:|:----:|:-----:|:-----:|
|1|limit|Integer|true, false|
|2|offset|Integer|true, false|
|3|start|Integer|timestamp|
|4|end|Integer|Timestamp|
|5|title|String|max 30 char|
|6|message|String|max 100 char|
|7|priority|String|low, mid, high|
|8|category|string|Semua konfigurasi alarm yang bernilai boolean|
|9|alarm_id|string|eg.1: alarm_id=2, eg.2 : alarm_id=1,2,3 |
### 4. Data Sensor
|No|Metode|Endpoint|Body|Deskripsi|
|:----:|:----:|:-----:|:-----:|:-----:|
|1|Get|`{base_url}/api/v1/sensor`|-|Mendapatkan data sensor|
|2|Delete|`{base_url}/api/v1/sensor`|-|Menghapus data sensor 2 menit sebelum|
|3|Post|`{base_url}/api/v1/sensor/ups`|-|Trigger untuk update data ups di backend|
|4|Get|`{base_url}/api/v1/sensor/battery-alarm`|-|Update terakhir status alarm dan baterai|
>Catatan :
Data sensor disimpan di database setiap 10 menit jika ventilator berjalan.
### 5. Parameter Ventilator
|No|Metode|Endpoint|Param|Body|Deskripsi|
|:----:|:----:|:-----:|:-----:|:-----:|:-----:|
|1|Get|`{base_url}/api/v1/param`|latest|-|Mendapatkan nilai parameter ventilator|
|2|Post|`{base_url}/api/v1/param`| -| command, mode, peep_cpap, fio2, backup_rate, ins_sens_level, min_insp_time, max_insp_time, apnea_time, ipap, epap, |Menjalankan, menghentikan, atau kalibrasi ventilator|
#### Deskripsi Body
|No|Item|Tipe Data|Nilai Valid|Deskripsi|
|:----:|:----:|:-----:|:-----:|:-----:|
|1|latest|String|"true"|latest="true" mendapatkan parameter eksekusi terakhir|
|2|command|Integer|[0, 3]|0: stop, 1: run, 2: pressure_calibration, 3: fio2_calibration|
|3|mode|String|cpap, bpap-s, bpap-m||
|4|peep_cpap|Integer|[4, 25]||
|5|fio2|Integer|[17, 100]||
|6|backup_rate|Integer|[0, 30]||
|7|ins_sens_level|Integer|[1, 9]||
|8|min_insp_time|Integer|[0.5, 5.5]||
|9|max_insp_time|Integer|[0.5, 5.5]||
|10|apnea_time|Integer|[0, 240]||
|11|ipap|Integer|[4, 25]||
|12|epap|Integer|[4, 25]||
>Catatan :
ipap >= epap
perhitungan i/e ratio harus terdefinisi dan bernilai positif
### 6. All Data
|No|Metode|Endpoint|Parameter|Deskripsi|
|:----:|:----:|:-----:|:-----:|:-----:|
|1|Get|`{base_url}/api/v1/all_data`|-|Mendapatkan konfigurasi UI, konfigurasi alarm, parameter ventilator pada saat menjalankan ventilator, dan eksekusi terakhir ventilator|
|2|Delete|`{base_url}/api/v1/all_data`|days|Menghapus riwayat alarm dan parameter ventilator|
#### Deskripsi Parameter
|No|Item|Tipe Data|Nilai Valid|Deskripsi|
|:----:|:----:|:-----:|:-----:|:-----:|
|1|days|number|-|menghapus data `days` hari kebelakang|
### 7. Utility
|No|Metode|Endpoint|Body|Deskripsi|
|:----:|:----:|:-----:|:-----:|:-----:|
|1|Post|`{base_url}/api/v1/utility`|command|Shutdown atau Restart PC server|
|2|Get|`{base_url}/api/v1/utility/wifi/ip-address`|-|Mendapatkan list ip address|
|3|Get|`{base_url}/api/v1/utility/wifi/ssid`|-|Mendapatkan list ssid (wifi) yang tersedia|
|4|Get|`{base_url}/api/v1/utility/wifi/control`|command|Menyalakan/mematikan wifi|
|5|Post|`{base_url}/api/v1/utility/wifi`|ssid, password|Menghubungkan wifi|
|6|Post|`{base_url}/api/v1/utility/reverse-proxy`|command|Mengaktifkan / menonaktifkan reverse proxy|
#### Deskripsi Body
|No|Item|Tipe Data|Nilai Valid|
|:----:|:----:|:-----:|:-----:|
|1|command|String|restart, shutdown|
|2|command|String|on, off|
|3|ssid|String|-|
|4|password|String|-|
|5|command|String|enable, disable|
### 8. Laporan
>tahap development
|No|Metode|Endpoint|Body|Deskripsi|
|:----:|:----:|:-----:|:-----:|:-----:|
|1|Post|`{base_url}/api/v1/report/generate`|command|Membuat report|
|2|Get|`{base_url}/api/v1/report/fetch-pdf`|-|Mendownload report|
### 9. Websocket
Untuk mendapatkan data sensor atau data terkini berkaitan dengan alarm, status baterai, dsb, client perlu join pada grup xvent sehingga bisa mengakses data tersebut.
|No|Group|Event|Deskripsi|
|:----:|:----:|:-----:|:-----:|
|1|xvent|sensor|Mendapatkan data sensor|
|1|xvent|notification|Mendapatkan update: parameter terakhir, alarm, atau baterai |