# 車辨系統 API
>[toc]
## 辨識紀錄
### 獲取所有辨識紀錄 (不開放)
:memo:**URI** : `/opendb/v1/api/tracks/events`
:memo:**method** : `GET`
:memo:**body** :
```json
{
}
```
:memo:**response** :
```json
{
"status": "",
"message": "",
"content": [
{
"eventID": "",
"plateNum": "",
"carColor": "",
"carType": "",
"startTime": "",
"endTime": "",
"getSnapshotURI": "",
"getFileURI": "",
"cameraID": "",
"cameraName": "",
"intersection": "",
"policeStation": "",
"precinct": "",
"district": "",
"latitude": "",
"longitude": "",
"azimuthAngle": "",
"status": ""
},
...
]
}
```
| 參數名稱 | 說明 | Data Type |
| ------- | --- | --------- |
| status | 狀態碼 | INT |
| message | 訊息說明 | NVARCHAR(200) |
| content
| eventID | 事件編號 | INT |
| plateNum | 車牌 | NVARCHAR(10) |
| carColor | 車色 | INT |
| carType | 車型 | INT |
| startTime | 起始時間 | DATETIME |
| endTime | 結束時間 | DATETIME |
| getSnapshotURI | 快照連結 | NVARCHAR(250) |
| getFileURI | 影像連結 | NVARCHAR(250) |
| cameraID | 攝影機編號 | NVARCHAR(40) |
| cameraName | 攝影機名稱 | NVARCHAR(20) |
| intersection | 路口 | NVARCHAR(200) |
| policeStation | 管理該監視器的派出所 | NVARCHAR(100) |
| precinct | 管理該監視器的分局 | NVARCHAR(100) |
| district | 行政區 | NVARCHAR(50) |
| latitude | 緯度 | REAL |
| longitude | 經度 | REAL |
| azimuthAngle | 方位角 | INT |
| status | 監視器狀態 | INT |
:::spoiler 舊版
```json
{
"status": "",
"message": "",
"content": [
{
"eventID": "",
"plateNum": "",
"cameraID": "",
"cameraName": "",
"address": "",
"startTime": "",
"endTime": "",
"carColor": "",
"carType": "",
"getSnapshotURI": "",
"getFileURI": "",
"intersection": "",
"precinct": "",
"policeStation": ""
},
...
]
}
```
| 參數名稱 | 說明 | Data Type |
| ------- | --- | --------- |
| status | 狀態碼 | int |
| message | 訊息說明 | string |
| content
| eventID | 事件編號 | int |
| plateNum | 車牌 | string |
| cameraID | 攝影機編號 | string |
| cameraName | 攝影機名稱 | string |
| address | 地址 | string |
| startTime | 起始時間 | DATETIME |
| endTime | 結束時間 | DATETIME |
| carColor | 車色 | int |
| carType | 車型 | int |
| getSnapshotURI | 快照連結 | string |
| getFileURI | 影像連結 | string |
| intersection | 路口 | string |
| precinct | 機關 | string |
| policeStation | 單位 | string |
:::
---
### 獲取辨識紀錄 (透過事件ID)
:memo:**URI** : `/opendb/v1/api/tracks/event/:event_id`
:memo:**method** : `GET`
:memo:**body**:
```json
{
}
```
:memo:**response** :
```json
{
"status": "",
"message": "",
"content": [
{
"eventID": "",
"plateNum": "",
"carColor": "",
"carType": "",
"startTime": "",
"endTime": "",
"getSnapshotURI": "",
"getFileURI": "",
"cameraID": "",
"cameraName": "",
"intersection": "",
"policeStation": "",
"precinct": "",
"district": "",
"latitude": "",
"longitude": "",
"azimuthAngle": "",
"status": ""
}
]
}
```
| 參數名稱 | 說明 | Data Type |
| ------- | --- | --------- |
| status | 狀態碼 | INT |
| message | 訊息說明 | NVARCHAR(200) |
| content
| eventID | 事件編號 | INT |
| plateNum | 車牌 | NVARCHAR(10) |
| carColor | 車色 | INT |
| carType | 車型 | INT |
| startTime | 起始時間 | DATETIME |
| endTime | 結束時間 | DATETIME |
| getSnapshotURI | 快照連結 | NVARCHAR(250) |
| getFileURI | 影像連結 | NVARCHAR(250) |
| cameraID | 攝影機編號 | NVARCHAR(40) |
| cameraName | 攝影機名稱 | NVARCHAR(20) |
| intersection | 路口 | NVARCHAR(200) |
| policeStation | 管理該監視器的派出所 | NVARCHAR(100) |
| precinct | 管理該監視器的分局 | NVARCHAR(100) |
| district | 行政區 | NVARCHAR(50) |
| latitude | 緯度 | REAL |
| longitude | 經度 | REAL |
| azimuthAngle | 方位角 | INT |
| status | 監視器狀態 | INT |
:::spoiler 舊版
```json
{
"status": "",
"message": "",
"content":[
{
"eventID": "",
"plateNum": "",
"cameraID": "",
"cameraName": "",
"address": "",
"startTime": "",
"endTime": "",
"carColor": "",
"carType": "",
"getSnapshotURI": "",
"getFileURI": "",
"intersection": "",
"precinct": "",
"policeStation": ""
}
]
}
```
| 參數名稱 | 說明 | Data Type |
| ------- | --- | --------- |
| status | 狀態碼 | int |
| message | 訊息說明 | string |
| content
| eventID | 事件編號 | int |
| plateNum | 車牌 | string |
| cameraID | 攝影機編號 | string |
| cameraName | 攝影機名稱 | string |
| address | 地址 | string |
| startTime | 起始時間 | DATETIME |
| endTime | 結束時間 | DATETIME |
| carColor | 車色 | int |
| carType | 車型 | int |
| getSnapshotURI | 快照連結 | string |
| getFileURI | 影像連結 | string |
| intersection | 路口 | string |
| precinct | 機關 | string |
| policeStation | 單位 | string |
:::
---
### 新增辨識紀錄
:memo:**URI** : `/opendb/v1/api/tracks/event`
:memo:**method** : `POST`
:memo:**body** :
```json
{
"plateNum": "",
"carColor": "",
"carType": "",
"startTime": "",
"endTime": "",
"getSnapshotURI": "",
"getFileURI": "",
"cameraID": "",
}
```
:::spoiler 舊版
```json
{
"plateNum": "",
"cameraID": "",
"address": "",
"startTime": "",
"endTime": "",
"carColor": "",
"carType": "",
"getSnapshotURI": "",
"getFileURI": "",
"intersection": "",
"precinct": "",
"policeStation": ""
}
```
| 參數名稱 | 說明 | Data Type |
| ------- | --- | --------- |
| eventID | 事件編號 | int |
| plateNum | 車牌 | string |
| cameraID | 攝影機編號 | string |
| cameraName | 攝影機名稱 | string |
| address | 地址 | string |
| startTime | 起始時間 | DATETIME |
| endTime | 結束時間 | DATETIME |
| carColor | 車色 | int |
| carType | 車型 | int |
| getSnapshotURI | 快照連結 | string |
| getFileURI | 影像連結 | string |
| intersection | 路口 | string |
| precinct | 分局 | string |
| policeStation | 派出所 | string |
:::
:memo:**response** :
```json
{
"status": "",
"message": ""
}
```
| 參數名稱 | 說明 | Data Type |
| ------- | --- | --------- |
| status | 狀態碼 | int |
| message | 訊息說明 | string |
### 批次新增辨識紀錄
**URI** : `/opendb/v1/api/tracks/events`
**method** : `POST`
**body** :
```json
[
{
"plateNum": "",
"carColor": "",
"carType": "",
"startTime": "",
"endTime": "",
"getSnapshotURI": "",
"getFileURI": "",
"cameraID": "",
},
...
]
```
:memo:**response** :
```json
{
"status": "",
"message": "",
"insertCount": ""
}
```
| 參數名稱 | 說明 | Data Type |
| ------- | --- | --------- |
| status | 狀態碼 | int |
| message | 訊息說明 | string |
| insertCount | 新增筆數 | int |
---
### 查尋軌跡 (車牌查詢)
:memo:**URI** : ```/opendb/v1/api/tracks/search```
:memo:**method** : `GET`
:memo:**param** :
| Key | Value Type | 說明 | 必填 |
| --- | ---------- | --- | --- |
| plateNum | string | 車牌 ( 未確定完整車牌可用 * 或 ? 代替 ) | O |
| carColor | int | 車色 | X |
| carType | int | 車型 | X |
| precinct | string | 分局 | X |
| policeStation | string | 派出所 | X |
| district | string | 行政區 | X |
| cameraID | string | 攝影機編號 | X |
| stime | string | 搜尋起始時間 ( 刻意與startTime做出區別 ) | O |
| etime | string | 搜尋結束時間 ( 刻意與endTime做出區別 ) | O |
:memo:**body** :
```json
{
}
```
:memo:**response** :
```json
{
"status": "",
"message": "",
"content": [
{
"plateNum": "",
"num": "",
"traceStartTime": "",
"traceEndTime": "",
"trackList": [
{
"eventID": "",
"plateNum": "",
"carColor": "",
"carType": "",
"startTime": "",
"endTime": "",
"getSnapshotURI": "",
"getFileURI": "",
"cameraID": "",
"cameraName": "",
"intersection": "",
"policeStation": "",
"precinct": "",
"district": "",
"latitude": "",
"longitude": "",
"azimuthAngle": "",
"status": ""
},
...
]
},
...
]
}
```
| 參數名稱 | 說明 | Data Type |
| ------- | --- | --------- |
| status | 狀態碼 | INT |
| message | 訊息說明 | NVARCHAR(200) |
| content
| plateNum | 車牌 | NVARCHAR(10) |
| num | 軌跡數量 | INT |
| traceStartTime | 追蹤起始時間 | DATETIME |
| traceEndTime | 追蹤結束時間 | DATETIME |
| trackList
| eventID | 事件編號 | INT |
| plateNum | 車牌 | NVARCHAR(10) |
| carColor | 車色 | INT |
| carType | 車型 | INT |
| startTime | 起始時間 | DATETIME |
| endTime | 結束時間 | DATETIME |
| getSnapshotURI | 快照連結 | NVARCHAR(250) |
| getFileURI | 影像連結 | NVARCHAR(250) |
| cameraID | 攝影機編號 | NVARCHAR(40) |
| cameraName | 攝影機名稱 | NVARCHAR(20) |
| intersection | 路口 | NVARCHAR(200) |
| policeStation | 管理該監視器的派出所 | NVARCHAR(100) |
| precinct | 管理該監視器的分局 | NVARCHAR(100) |
| district | 行政區 | NVARCHAR(50) |
| latitude | 緯度 | REAL |
| longitude | 經度 | REAL |
| azimuthAngle | 方位角 | INT |
| status | 監視器狀態 | INT |
---
## 搜尋紀錄
### 獲取所有搜尋紀錄
:memo:**URI** : ```/opendb/v1/api/search_history```
:memo:**method** : `GET`
:memo:**body** :
```json
{
}
```
:memo:**response** :
```json
{
"status": "",
"message": "",
"content": [
{
"searchID": "",
"eventID": "",
"personID": "",
"caseID": "",
"searchTime": ""
},
...
]
}
```
| 參數名稱 | 說明 | Data Type |
| ------- | --- | --------- |
| status | 狀態碼 | int |
| message | 訊息說明 | string |
| content
| searchID | 搜尋編號 | int |
| eventID | 事件編號 | int |
| personID | 查詢人ID | string |
| caseID | 案號 | string |
| searchTime | 搜尋時間 | DATETIME |
---
### 獲取搜尋紀錄 (透過搜尋編號)
:memo:**URI** : ```/opendb/v1/api/search_history/:searchID```
:memo:**method** : `GET`
:memo:**body** :
```json
{
}
```
:memo:**response** :
```json
{
"status": "",
"message": "",
"content": [
{
"searchID": "",
"eventID": "",
"personID": "",
"caseID": "",
"searchTime": ""
}
]
}
```
| 參數名稱 | 說明 | Data Type |
| ------- | --- | --------- |
| status | 狀態碼 | int |
| message | 訊息說明 | string |
| content
| searchID | 搜尋編號 | int |
| eventID | 事件編號 | int |
| personID | 查詢人ID | string |
| caseID | 案號 | string |
| searchTime | 搜尋時間 | DATETIME |
---
### 新增搜尋紀錄
:memo:**URI** : ```/opendb/v1/api/search_history```
:memo:**method** : `POST`
:memo:**body** :
```json
{
"eventID": "",
"personID": "",
"caseID": ""
}
```
| 參數名稱 | 說明 | Data Type |
| ------- | --- | --------- |
| eventID | 事件編號 | int |
| personID | 查詢人ID | string |
| caseID | 案號 | string |
* searchID 應該由 server 端產生
* searchTime 可以由 server 端的時間直接新增至資料庫即可
:memo:**response** :
```json
{
"status": "",
"message": ""
}
```
| 參數名稱 | 說明 | Data Type |
| ------- | --- | --------- |
| status | 狀態碼 | int |
| message | 訊息說明 | string |
---
### 查詢搜尋紀錄
:memo:**URI** : ```/opendb/v1/api/search_history/search```
:memo:**method** : `GET`
:memo:**param** :
| Key | Value Type | 說明 | 必填 |
| --- | ---------- | --- | --- |
| name | string | 查詢人名稱 | O |
| reason | string | 案由 | O |
| stime | string | 搜尋起始時間 | O |
| etime | string | 搜尋結束時間 | O |
:memo:**body** :
```json
{
}
```
:memo:**response** :
```json
{
"status": "",
"message": "",
"content": [
{
"searchID": "",
"eventID": "",
"personID": "",
"caseID": "",
"searchTime": ""
},
...
]
}
```
| 參數名稱 | 說明 | Data Type |
| ------- | --- | --------- |
| status | 狀態碼 | int |
| message | 訊息說明 | string |
| content
| searchID | 搜尋編號 | int |
| eventID | 事件編號 | int |
| personID | 查詢人ID | string |
| caseID | 案號 | string |
| searchTime | 搜尋時間 | DATETIME |
## 文件編輯紀錄
* 12/13 將**查尋軌跡**的部分 parm 移除: 查詢者名稱、案由、案號
* 12/13 將 URI 前綴改成 ```/opendb/v1/api/```
* 5/23 修改**查尋軌跡**必填欄位
* 5/3 修改**查詢搜尋紀錄**必填欄位
* 5/3 移除**新增辨識紀錄**JSON中的eventID
* 5/3 eventID 與 searchID datatype 從 string 改成 int
* 4/20 新增**查詢搜尋紀錄**param中的參數
* 4/4 移除**新增辨識紀錄**參數裡的cameraName、address
* 3/16 新增了搜尋紀錄相關的 API:
**獲取所有搜尋紀錄**、**獲取搜尋紀錄**、**新增搜尋紀錄**
* 3/16 將API中所有時間的參數的 data type 改成 DATETIME
* 3/15 **新增辨識紀錄** URI 修改:
~~/api/tracks/events/:eventID~~ → /api/tracks/events
* 3/8 將**查詢軌跡**與**分析軌跡**兩API合併,名稱為**查詢軌跡**,response則沿用**分析軌跡**的response
* 3/6 在**查詢軌跡**與**分析軌跡**的 Param 中新增參數 district
* 3/5 API名稱修改:
~~獲取所有軌跡~~ → 獲取所有辨識紀錄
~~獲取軌跡(透過事件ID)~~ → 獲取辨識紀錄(透過事件ID)
~~新增軌跡~~ → 新增辨識紀錄
* 3/5 增加**查詢軌跡**與**分析軌跡**中的 query string 參數是否必填欄位
* 3/5 修改**查詢軌跡**與**分析軌跡**中的 query string 參數說明:
~~機關~~ → 分局
~~單位~~ → 派出所
* 2/23 將變數名稱更改與 SQLite 小組一樣
* 2/19 **獲取所有軌跡** URI 修改:
~~`/api/tracks`~~ → `/api/tracks/events`
* 2/19 **獲取軌跡(透過事件ID)** URI 修改:
~~`/api/tracks/<event_id>`~~ → `/api/tracks/events/:event_id`
* 2/19 **新增軌跡** URI 修改:
~~`/api/tracks/<event_id>`~~ → `/api/tracks/events/:event_id`