# 車辨系統 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`