###### tags : `iot` `api-server` --- title: "Dokumentasi API IoT-Server" --- # Pendahuluan ## 1. Daftar Isi [TOC] ## 2. Petunjuk Umum 1. Base Url : `http://<your-ip>:<port>` 2. untuk mendapatkan akses api, setiap request perlu disertakan token pada header. 3. token diperoleh dengan mengirimkan email dan password ketika login. 4. Respon Kode: | No | Kode | Keterangan | Deskripsi | | :-: | :--: | :-----------: | :-------------------------------------------------------------------------------: | | 1 | 200 | Sukses | | | 2 | 201 | Sukses | | | 3 | 400 | Bad Request | Kesalahan berada di sisi klien | | 4 | 401 | Not Authorize | client tidak menyertakan token pada saat melakukan request atau token tidak valid | | 5 | 403 | Forbidden | client tidak bisa melakukan request | | 6 | 404 | Not Found | Data tidak ditemukan | | 7 | 500 | Server Error | Terjadi kesalahan di server | 5. Format Reaspons ``` Simple Response : { count: <number>, data: <type-Object of Array || Array of Object> } Error Response : { message: <error> } ``` ## 3. Diagram Alir Request #### Request Token ```sequence Note left of Client: email & password Client->Server: request token Note right of Client: validation payload Server->Database: query database Note right of Server: cek email Database->Server: send data Server->Client: send response Note left of Client: data ``` #### General Request ```sequence Note left of Client: payload + token Client->Server: send request Note right of Client: validate request data Server->Database: query database Database->Server: send data Server->Client: send data Note left of Client: data ``` # REST API ## 1. Auth Token Endpoint : `<base_url>` |No|Metode|Endpoint|Header|Body|Deskripsi| |:----:|:----:|:-----:|:-----:|:-----:|:-----:| |1|Post|`<endpoint>/user/login`|-|data|Mendapatkan token & info user| > Catatan : > Masa berlaku token adalah 1 hari. > User bisa mendapatkan token jika sudah terdaftar di aplikasi dan telah melakukan verifikasi email. ##### Deskripsi Body | No | Item | Tipe Data | Catatan | | :-: | :-----------: | :-------: | :-----------------------------------------------: | | 1 | data | String | string berupa file encrypt yang memadukan base64 dengan libary menggunakan secreat-key | ## 2. User ### List API User |No.|Metode| Endpoint | params | Query | Body | Deskripsi | |---|------| -------- | ------ | ------ | ----- | ------- | |1. | POST |`<endpoint>/user/login`| | | data* | mendapatkan token | |2. | POST | `<endpoint>/user` | | | username*, email*, password* | mendaftarkan user baru | |3. | GET | `<endpoint>/user` | | | | medapatkan semua list users| |4. | GET | `<endpoint>/user` | nama user | | | medapatkan user berdasaran nama| |5. | DELETE | `<endpoint>/user` | id user | | | menghapus user | |6. | PUT | `<endpoint>/user` | | | username, name, last password, new password, email | update data user | |7. | PUT | `<endpoint>/profile/` | username | | file* | update foto profile user | > note: > menambah user dan login tidak diperlukan token ketika request. ### Deskripsi API User |No.| Item | Tipe Data | Catatan | |---| ---- | ---- | ---- | |1. | data | String | merupakan data email dan password yang di encrypt | |2. | username, email, password| String | | |3. | email, new / last password| String | | |4. | file | file data | | ## 3. Aplikasi ### List API Aplikasi |No.|Metode| Endpoint | params | Query | Body | Deskripsi | |---|------| -------- | ------ | ------ | ---- | --------- | |1. | GET | `<endpoint>/app` | | | | get list application user | |2. | GET | `<endpoint>/app/options` | | | | get list options menu select | |3. | POST | `<endpoint>/app`| | | application* | membuat aplikasi baru | |4. | DELETE | `<endpoint>/app` | | application* | | hapus aplikasi | ### Deskripsi API Aplikasi |No.| Item | Tipe Data | Catatan | |---| ---- | --------- | ------- | |1. | application | String | nama aplikasi | ## 4. Device ### List API Device |No.|Metode| Endpoint | params | Query | Body | Deskripsi | |---|------| -------- | ------ | ------ | ---- | --------- | |1. | GET | `<endpoint>/device/list` | | | | mendapatkan list device | |2. | GET | `<endpoint>/device/count` | | | | mendapatkan jumlah device | |3. | GET | `<endpoint>/device` | | device*, limit, skip | | mendapatkan data device | |4. | GET | `<endpoint>/device/options` | | application* | | mendapatkan list options device | |5. | POST | `<endpoint>/app/device` | | | name*, application* | membuat device baru | |6. | DELETE | `<endpoint>/app/device`| | application*, name* | | hapus device | ### Deskripsi API Device |No.| Item | Tipe Data | Catatan | |---| ---- | --------- | ------- | |1. | application | String | nama aplikasi | |2. | device, name | String | nama device | |3. | limit | number | jumlah limit data | |4. | skip | number | data yang akan dilompati | ## 5. Widget ### List API Widget |No.|Metode| Endpoint | params | Query | Body | Deskripsi | |---|------| -------- | ------ | ------ | ---- | --------- | |1. | GET | `<endpoint>/widget/list`| | | | mendapatkan list widget | |2. | GET | `<endpoint>/widget/graph` | | data*, application*, device*, widget_type* | | mendapatkan data grafik | |3. | POST | `<endpoint>/widget/create` | | | data*, application*, device*, widget_type* | membuat widget baru | |4. | DELETE | `<endpoint>/widget/graph` | | data*, application*, device*, widget_type* | | hapus widget | > Note: > untuk pilihan hanya baru terdapat grafik ### Deskripsi API Widget |No.| Item | Tipe Data | Catatan | |---| ---- | --------- | ------- | |1. | data | String | nama data pada sensor | |2. | application | String | nama Aplikasi | |3. | device | String | nama device | |4. | widget_type | String | tipe widget yang dibuat |