# API Documentation
Description: 視障預約系統整合華夏多路線監控系統介面之 API 接口文件
Version: 1.0
Last updated time: 2020/05/25
---
### `joinRoom`
加入 OperatorID 房間以接收該公司的視障者預約訊息
**Direction:** Web client to server
**Payload:**
- `OperatoID` (string): 營運業者的 ID. <br>Source: https://ptx.transportdata.tw/MOTC?t=Bus&v=2#!/CityBus/CityBusApi_Operator
**Payload Example:**
```
{
"OperatoID: "100"
}
```
**Response:**
- `OperatoID` (string): 營運業者的 ID. <br>Source: https://ptx.transportdata.tw/MOTC?t=Bus&v=2#!/CityBus/CityBusApi_Operator
- `Status` (int):
- 0: join room successfully
- 1: `OperatoID` not found
**Response Examples:**
```
{
"OperatoID: "100",
"Status": 0
}
```
<br>
---
### `leaveRoom`
離開該房間
**Direction:** Web client to server
**Payload:**
- `OperatoID` (string): 營運業者的 ID. <br>Source: https://ptx.transportdata.tw/MOTC?t=Bus&v=2#!/CityBus/CityBusApi_Operator
**Payload Example:**
```
{
"OperatorID": "100"
}
```
**Response:**
- `OperatoID` (string): 營運業者的 ID. <br>Source: https://ptx.transportdata.tw/MOTC?t=Bus&v=2#!/CityBus/CityBusApi_Operator
- `Status` (int):
- 0: join room successfully
- 1: `OperatorID` not found
**Response Examples:**
```
{
"OperatorID": "100",
"Status": 0
}
```
<br>
---
### `getAllRequests`
取得該公司的所有預約訊息
**Direction:** Web client to server
**Payload:**
- `OperatoID` (string): 營運業者的 ID. <br>Source: https://ptx.transportdata.tw/MOTC?t=Bus&v=2#!/CityBus/CityBusApi_Operator
**Payload Example:**
```
{
"OperatorID": "100"
}
```
**Response:**
- `Status` (int):
- 0: Success
- 1: `OperatorID` not found
- `Requests` (Request): Array of ++Request++
++Request++
- `ID` (int): 預約的 ID
- `ReservedTime` (int): 建立預約的時間,使用 Unix Timestamp
- `StartStopName` (string): 預約上車的站牌名稱
- `DestStopName` (string, *nullable*): 預約下車的站牌名稱,如果還沒預約下車的話則為 null
- `RouteName` (string): 預約公車路線的名稱
- `DirectionName` (string): 方向名稱
- `PlateNumber` (string): 車牌號碼
- `HasDriverClicked` (boolean): 司機是否按下「確認接收預約請求」按鈕
- `Progress` (int): 預約的當前狀態
- 0: 預約中
- 1: 預約成功,候車中
- 2: 乘車中
- 3: 已下車,旅程結束
- 4: 取消預約
- 5: 已上車
**Response Examples:**
```
{
"Status": 0,
"Requests": [ {
"ID": 132,
"ReservedTime": 1587275193,
"StartStopName": "捷運行天宮站",
"DestStopName": null,
"RouteName": "222",
"DirectionName": "往內湖",
"PlateNumber": "716-FZ",
"HasDriverClicked": False,
"Progress": 4 },
...
]
}
```
<br>
---
### `newRequest`
通知 Client 有新的預約
**Direction:** Server to web client
**Payload:**
- `ID` (int): 預約的 ID
- `ReservedTime` (int): 建立預約的時間,使用 Unix Timestamp
- `StartStopName` (string): 預約上車的站牌名稱
- `DestStopName` (string, *nullable*): 預約下車的站牌名稱,如果還沒預約下車的話則為 null
- `RouteName` (string): 預約公車路線的名稱
- `DirectionName` (string): 方向名稱
- `PlateNumber` (string): 車牌號碼
- `HasDriverClicked` (boolean): 司機是否按下「確認接收預約請求」按鈕
- `Progress` (int): 預約的當前狀態
- 0: 預約中
- 1: 預約成功,候車中
- 2: 乘車中
- 3: 已下車,旅程結束
- 4: 取消預約
- 5: 已上車
**Payload Example:**
```
{
"ID": 132,
"ReservedTime": 1587275193,
"StartStopName": "捷運行天宮站",
"DestStopName": null,
"RouteName": "222",
"DirectionName": "往內湖",
"PlateNumber": "716-FZ",
"HasDriverClicked": False,
"Progress": 4
}
```
**Response:**
No need to response
<br>
---
### `requestUpdate`
預約請求更新
**Direction:** Server to web client
**Payload:**
- `ID` (int): 預約的 ID
- `ReservedTime` (int, *optional*): 建立預約的時間,使用 Unix Timestamp
- `StartStopName` (string, *optional*): 預約上車的站牌名稱
- `DestStopName` (string, *optional*): 預約下車的站牌名稱,如果還沒預約下車的話則為 null
- `RouteName` (string, *optional*): 預約公車路線的名稱
- `DirectionName` (string, *optional*): 方向名稱
- `PlateNumber` (string, *optional*): 車牌號碼
- `HasDriverClicked` (boolean, *optional*): 司機是否按下「確認接收預約請求」按鈕
- `Progress` (int, *optional*): 預約的當前狀態
- 0: 預約中
- 1: 預約成功,候車中
- 2: 乘車中
- 3: 已下車,旅程結束
- 4: 取消預約
- 5: 已上車
**Payload Example:**
更改預約進度:
```
{
"ID": 132,
"Progress": 3
}
```
更改預約進度且設定預約下車站牌:
```
{
"ID": 132,
"Progress": 3,
"DestStopName": "捷運公館站"
}
```
更改「司機是否回復預約訊息」:
```
{
"ID": 132,
"HasDriverClicked": True
}
```
**Response:**
No need to response
**Notes:**
目前系統只會有上述 Payload Example 的這三種情況。
<br>
---
# ChangeLog
### `[1.0]` - 2020/05/25
**Added**
- All events: `joinRoom`, `leaveRoom`, `getAllRequests`, `newRequest`, `requestUpdate`