# THSRC API

##### Links

- [TDX 運輸資料通服務](https://tdx.transportdata.tw/)
- [TDX 會員註冊](https://tdx.transportdata.tw/register)
- [TDX運輸資料流通服務API介接範例程式碼說明](https://github.com/tdxmotc/SampleCode)
- [TDX - 高鐵 API 說明](https://tdx.transportdata.tw/api-service/swagger/basic/268fc230-2e04-471b-a728-a726167c1cfc#/THSR/THSRApi_AvailableSeatStatus_OD_2136_1)
- [雙鐵API資料使用注意事項](https://motc-ptx-api-documentation.gitbook.io/motc-ptx-api-documentation/api-zi-liao-shi-yong-zhu-yi-shi-xiang/rail)
- [API 虛擬點數機制](https://motc-ptx-api-documentation.gitbook.io/motc-ptx-api-documentation/xu-ni-dian-shu)
- [MOTC Transport API V2](https://ptx.transportdata.tw/MOTC/?urls.primaryName=%E8%BB%8C%E9%81%93V2#/) (臺鐵、高鐵、捷運)

##### API 連線認證

1. Client Id: 透過官網取得
2. Client Secret: 透過官網取得
3. Access Token: 使用 HTTP POST 帶入Client Id 和 Client Secret 進行驗證以取得 Access Token。

Get Access Token

```bash
curl --request POST \
     --url 'https://tdx.transportdata.tw/auth/realms/TDXConnect/protocol/openid-connect/token' \
     --header 'content-type: application/x-www-form-urlencoded' \
     --data grant_type=client_credentials \
     --data client_id=YOUR_CLIENT_ID \
     --data client_secret=YOUR_CLIENT_SECRET \
```

回傳內容格式：

- access\_token： 用於存取API服務的token，格式為JWT
- expires\_in：token的有效期限，單位為秒，預設為86400秒(1天)
- token\_type：token類型，固定為"Bearer"

##### Case: 指定日期、時間區間與起訖站，列出對號座即時剩餘座位資訊

API：

1. `/v2/Rail/THSR/DailyTimetable/Station/{StationID}/{TrainDate}`  
    
    - 取得指定日期,車站的站別時刻表
    - 依時間區間過濾，篩選出車次號碼
2. `/v2/Rail/THSR/AvailableSeatStatus/Train/OD/{OriginStationID}/to/{DestinationStationID}/TrainDate/{TrainDate}`
    - 取得指定\[日期\], \[起迄站\]對號座即時剩餘位資料
    - 依車次號碼查詢剩餘座位

> NOTE: 剩餘座位資料更新間隔，如果是今天，頻率為每十分鐘；如果不是今天，頻率為每日的 10, 16, 22 時。

##### MCP Server

- [MCP Server THSRC](https://github.com/physictim/thsrc_mcp) - 台灣高鐵資訊查詢服務