權限
每個 API Token 都帶著一組權限(scope),決定它能取得哪些資料。權限以「資料類型」命名,同一份資料不論用 HTTP 或 SSE 串流取得,都是同一個權限,也計入同一個資源的配額。
完整清單以線上 JSON 為準:https://manager.exptech.com.tw/api/v1/info/permissions(說明見公開資訊 API)。
| 名稱 | 說明 | 計入配額 | 相關文件 |
|---|---|---|---|
* |
全部權限 | — | — |
account |
帳號 API | 否 | — |
trem.rts |
TREM 即時測站 | 是 | trem.rts.v1 |
trem.rtw |
TREM 即時波形 | 是 | — |
trem.raw |
TREM 原始資料 | 是 | — |
trem.eew |
TREM EEW(僅提供給特定用戶) | 是 | — |
trem.intensity |
TREM 震度 | 是 | trem.intensity.v1 |
trem.oeews |
TREM 現地型(僅提供給特定用戶) | 否 | — |
trem.control |
不對外開放 | — | — |
eq.report |
地震報告 | 是 | eq.report.v1 |
- 「計入配額」為是的權限各自對應一個資源(
resource_id),用量與每日配額以資源為單位計算。對照表見/api/v1/info/resources。 - 「相關文件」為 — 的權限,目前沒有公開文件的 API 使用它。
trem.control只供 ExpTech 內部使用,第三方不需要也不應申請這個權限。trem.eew是 TREM EEW:TREM 系統以 TREM-net 觀測資料自行解算的地震預警,屬非官方資訊,一切以中央氣象署發布為準。依《氣象法》,TREM EEW 只提供給經 ExpTech 個別同意或簽約的特定用戶,不對不特定大眾發布。trem.oeews(TREM 現地型)同樣只提供給特定用戶。
*(全部權限)
Section titled “*(全部權限)”* 會通過所有權限檢查,包含之後新增的權限。它不能代替訂閱,用量也照樣計入各資源的配額。建議只在測試時使用,正式環境請只給需要的權限。
群組是一次選取多個權限的寫法,本身不是權限。
| 群組 | 說明 | 包含 |
|---|---|---|
trem.* |
TREM 全部(不含 trem.control) |
trem.rts、trem.rtw、trem.raw、trem.eew、trem.intensity、trem.oeews |
eq.* |
地震全部 | eq.report |
- 群組在 token 建立時展開成上表的各個權限,token 上存的是展開後的結果。之後群組若加入新權限,已經建立的 token 不會自動取得,要重新建立。
- 涵蓋範圍以「包含」欄為準,不要用名稱前綴推斷。
trem.control名稱以trem.開頭,但不在trem.*裡。 - OAuth2 的
access_token回應與主控台顯示的權限都是展開後的名稱,不會出現群組名。
怎麼指定權限
Section titled “怎麼指定權限”- 主控台建立 token:在 API Token 頁面勾選。
- OAuth2:授權請求的
scope參數,以空白分隔,例如eq.report trem.rts或trem.*。不認識的名稱會讓整個請求失敗(invalid_scope),不會默默略過。詳見 OAuth2。
權限怎麼檢查
Section titled “權限怎麼檢查”| 傳輸方式 | 檢查 | 不通過時 |
|---|---|---|
| HTTP(需要 token 的端點) | token 有該端點要求的權限,或有 * |
403,沒有內容 |
| SSE(需要權限的 topic) | 1. token 有該 topic 的權限,或有 *2. 帳號已訂閱該資源( * 不能代替) |
forbidden: token scope missingforbidden: not subscribed |
| SSE(公開 topic) | 不檢查權限與訂閱 | — |
