---
title: Swagger UI (ThingsBoad API) 測試
tags: ThingsBoard
---
# Swagger UI 測試
[後端代理伺服器 (CORS) 解決方法](https://angular.tw/guide/build#proxying-to-a-backend-server)
1. 需先使用login - controller 透過帳號密碼登入並取得JWT Token
Post controller - http://baseURL:port/api/auth/login
RequestBody (JSON)
{
"username": account,
"password": password
}
以TypeScript編寫,透過jQuery使用ajax為例
$.ajax({
url: 'http://baseURL:port/api/auth/login',
type: 'POST',
contentType: "application/json;charset=utf-8",
data: JSON.stringify(
{
"username": account,
"password": password,
}
),
dataType: 'json',
success: (response: any) => {
this.token = response.token;
}
error: () => {}
}
2. 若身分為User,需使用 user - controller 取得登入帳號之customerId
GET controller - http://baseURL:port/api/auth/user
$.ajax({
url: 'http://baseURL:port/api/auth/user',
beforeSend:
(request:{setRequestHeader: (arg0: string, arg1: string) => any;}) =>
request.setRequestHeader('X-Authorization', 'Bearer ' + this.token),
type: 'GET',
success: (response: any) => {
this.customerId = response.customerId.id;
}
error: () => {}
}
3. 後續需要權限的controller,Request要加上Request Header
Key: X-Authorization
Value: JWT Token
以TypeScript為例
beforeSend:(request:{setRequestHeader: (arg0: string, arg1: string) => any;}) =>
request.setRequestHeader('X-Authorization', 'Bearer ' + this.token),
P.S. login controller 取得的JWT Token並無開頭字串'Bearer ',需自行串接
否則會出現以下錯誤訊息
{
"status": 401,
"message": "Authentication failed",
"errorCode": 10,
"timestamp": "2022-01-07T06:21:40.124+00:00"
}
* admin-controller (SYS_ADMIN)
1. 資安規則 C/R/U (含密碼格式、字數限制及連線失敗嘗試次數)
RequestBody -
{
"passwordPolicy": {
"minimumDigits": 0,
"minimumLength": 0,
"minimumLowercaseLetters": 0,
"minimumSpecialCharacters": 0,
"minimumUppercaseLetters": 0,
"passwordExpirationPeriodDays": 0,
"passwordReuseFrequencyDays": 0
},
"maxFailedLoginAttempts": 0,
"userLockoutNotificationEmail": "string"
}
3. POST /api/admin/settings
4. GET /api/admin/settings/{key} ('general' or 'mail')
5. POST /api/admin/settings 取得設定物件
6. GET /api/admin/settings/{key}
7. POST 發送測試email
8. POST 發送測試簡訊
9. GET (檢查平台版本 - 非必要)
* alarm-controller (TENANT_ADMIN or CUSTOMER_USER)
1. POST /api/alarm - C/U alarm
2. (GET/DELETE) /api/alarm/{alarmId} R/D alarm by alarmId
3. POST /api/alarm/{alarmId}/ack [Ack](https://zh.wikipedia.org/wiki/%E7%A2%BA%E8%AA%8D%E8%A8%8A%E6%81%AF)nowledge Alarm
4. POST /api/alarm/{alarmId}/clear
5. GET /api/alarm/{entityType}/{entityId}
GET
/api/alarm/highestSeverity/{entityType}/{entityId}{?searchStatus,status}
Get Highest Alarm Severity (getHighestAlarmSeverity)
GET
/api/alarm/info/{alarmId}
Get Alarm Info (getAlarmInfoById)
GET
/api/alarms{?endTime,fetchOriginator,page,pageSize,searchStatus,sortOrder,sortProperty,startTime,status,textSearch}
Get All Alarms (getAllAlarms)
* asset-controller (TENANT_ADMIN or CUSTOMER_USER) - 類似工作站的概念
* audit-log-controller (TENANT_ADMIN) - 紀錄查詢,ex:登入,修改設定
* auth-controller
1.密碼修改
2.登出
3.取得目前登入user資訊
4.帳號啟動(使用認證碼 | 使用認證信)
5.重設密碼(使用認證碼 | 使用認證信)
6.資安設定 (含密碼格式、字數限制及連線失敗嘗試次數)
* component-descriptor-controller (SYS_ADMIN or TENANT_ADMIN)
* customer-controller
* dashboard-controller (TENANT_ADMIN) - 傳回JSON格式
* device-api-controller
* device-controller (TENANT_ADMIN or CUSTOMER_USER)
* device-profile-controller
* edge-controller
* edge-event-controller
* entity-query-controller
* entity-relation-controller
* entity-view-controller
* event-controller
* login-endpoint
* lwm-2m-controller
* o-auth-2-config-template-controller
* o-auth-2-controller
* ota-package-controller
* queue-controller
* rpc-v-1-controller
* rpc-v-2-controller
* rule-chain-controller
* tb-resource-controller
* telemetry-controller
* tenant-controller
* tenant-profile-controller
* ui-settings-controller
* user-controller
* widget-type-controller
* widgets-bundle-controller
## Public Login
* POST - http://192.168.1.202:8081/api/auth/login/public
Request Body - `{ "publicId": "{public Id}" }`