HansCDN API Document
公司:HansTech | 產品:HansCDN Management | 日期:2025-03-31
Base URL: https://api.hanscdn.com/api/v1
1. Sign
生成 api 令牌
POST /user/login
Request Body
| 欄位 | 類型 | 描述 |
| username | String | 使用者名稱。 |
| password | String | 使用者密碼。 |
Response (Success 200)
| 欄位 | 類型 | 描述 |
| success | String | 回傳狀態。 |
| token | String | 令牌。 |
Example
curl --request POST --url https://api.hanscdn.com/api/v1/user/login \
--header 'content-type: application/json' \
--data '{"username":"username","password":"password"}'
2. Domain
resources.domains.list
GET /resources/domains
Query Parameters
| 欄位 | 類型 | 描述 |
| groupName | String | 獲取指定群組域名。 |
| size | String | 回傳資料筆數。預設: 10 |
| from | String | 從第 n 筆開始。預設: 0 |
| filters | String | 指定返回欄位。預設: 全部 (如要指定 至少要有 servername 欄位) |
| serviceGroupName | String | 獲取指定服務群組域名。預設: 無 |
Example
curl --request GET --url 'https://api.hanscdn.com/api/v1/resources/domains?groupName=em&from=0&size=10' ...
resources.domains.get
GET /resources/domains/{servernameId}
Path Parameters
| 欄位 | 類型 | 描述 |
| servernameId * | String | 域名。要先從 list 找 ID |
Query Parameters
| 欄位 | 類型 | 描述 |
| groupName * | String | 獲取指定群組域名。 |
resources.domains.create
POST /resources/domains
Query Parameters
| 欄位 | 類型 | 描述 |
| groupName * | String | 群組。 |
Request Body
| 欄位 | 類型 | 描述 |
| label | String | 標籤。 |
| description | String (選填) | 敘述。預設: 無 |
| tags | String[] (選填) | 標籤。預設: [] |
| servername * | String | 域名。 |
| appProfileName | String | 專案名稱。預設: none |
| useSystemCert | Boolean (選填) | 是否使用系統憑證。預設: false |
| keypairname | String (選填) | 憑證組名稱。預設: self-sign |
| isEnforceProtect | Boolean | Default: false |
| serviceGroupName | String | 服務群組。 |
| useOriginPolicy | Boolean | Default: false |
| usedOriginPolicies | Objects[] | regionName(strings[]), originPolicyName(string) |
| origins | String[] | 回源地址。多選,可填寫 IP 或是 域名 |
| originscheme | String (選填) | 回源協議。可填寫 http, https。預設 http |
| portMappingType | String (選填) | 回源端口映射方式。default 或 static。預設 default |
| originPort | Number (選填) | 回源端口。http預設80, https預設443 |
| scheme | String[] (選填) | 協議。["http", "https"]。預設: ["http"] |
| httpPort | String[] (選填) | http 監聽端口。預設: [80] |
| httpsPort | String[] (選填) | https 監聽端口。預設: [443] |
| redirecthttps | Boolean (選填) | 是否開啟 302 跳轉 https。預設: false |
| redirectHttpCode | String | Default: "302" |
| useHsts | Boolean (選填) | 是否開啟 HSTS。預設: false |
| usedWafRules | String[] (選填) | 套用的 waf 規則。Ex: [{"value": "myrule", "isEnabled": false }] |
| errorHtmlPageName | String | Default: "default" |
| upstreamTimeout | Integer | Default: 60. Enum: 60 120 180 (EDGE 到源站的 timeout) |
| isEnabledCompressionToOrigin | Boolean | Default: true (關閉 EDGE 到源站走 HTTP/1.0) |
| isEnabledUpstreamHttp11 | Boolean | Default: true |
| isInsertRidHeaderToOrigin | Boolean | Default: false (若啟用, Edge 將插入 RID 標頭) |
| setCustomHostHeader | String (選填) | 是否替換回源 Host Header (on / off)。預設 off |
| isAcceptHttpV1 | Boolean | Default: false |
| websocketPath | String | Default: "" (多個路徑用換行分開) |
| proxyBufferSize | Integer | Default: 4. Enum: 2 4 8 16 32 64 |
| isUpgradeInsecureRequest | Boolean | Default: false |
| maxUploadSize | Integer | Default: 1 (單位 MB). Range: [1..100] |
| proxyCacheIgnoreArgs | Boolean | Default: false (快取是否忽略參數) |
| cusCachepath | String | Default: "" (多個路徑用換行分開) |
| cusCachefile | String | Default: "" (多個路徑用換行分開) |
| forceCusCachePath | String | Default: "" |
| forceCusCacheFile | String | Default: "" |
| cusFollowCachePath | String | Default: "" |
| cusFollowCacheFile | String | Default: "" |
| cusCachepathExp | String | Default: "5" (緩存路徑的瀏覽器過期時間) |
| cusCachepathSrvexp | String | Default: "5" (緩存路徑的伺服器過期時間) |
| cusCachefileExp | String | Default: "5" |
| cusCachefileSrvexp | String | Default: "5" |
| defCachefileExp | String | Default: "5" |
| defCachefileSrvexp | String | Default: "5" |
| cusNoncachepath | String | Default: "" |
| cusNonachefile | String | Default: "" |
resources.domains.update
PATCH /resources/domains/{servernameId}
Path Parameters
| 欄位 | 類型 | 描述 |
| servernameId * | String | Example: mydomain-id (先從 list 取得 ID) |
Query Parameters
| 欄位 | 類型 | 描述 |
| groupName * | String | 群組。 |
Request Body
參數同 Create。
resources.domains.delete
DELETE /resources/domains/{servernameId}
Path Parameters
| 欄位 | 類型 | 描述 |
| servernameId | String | 域名。Example: mydomain-id |
Query Parameters
| 欄位 | 類型 | 描述 |
| groupName | String | 群組。Example: groupName=my-group |
Purge cache of the domain
POST /resources/domains/_actions/purgeCache
Query Parameters
| 欄位 | 類型 | 描述 |
| groupName | String | 群組。 |
Request Body
| 欄位 | 類型 | 描述 |
| keys | Array[] | Example: {"keys":[{"domain":"mydomain.com", "key": ""}]} |
3. AppProfiles
resources.appProfiles.list
GET /resources/app-profiles
Query Parameters
| 欄位 | 類型 | 描述 |
| groupName | String | 獲取指定群組憑證組。 |
| size | Integer | 回傳資料筆數。預設: 10 |
| from | Integer | 從第 n 筆開始。預設: 0 |
| filters | String | Example: filters=itemName:my_name |
resources.appProfiles.create
POST /resources/app-profiles
Query Parameters
| 欄位 | 類型 | 描述 |
| groupName | String | 群組。 |
Request Body
| 欄位 | 類型 | 描述 |
| label | String | 標籤。Default: "" |
| description | String | Default: "" |
| tags | String[] | 標籤。Default: [] |
| appProfileName | String | 專案名稱。<= 35 chars |
| serviceGroupName | String | 服務群組 |
| useOriginPolicy | Boolean | Default: false |
| usedOriginPolicies | Objects[] | |
| origins | String[] | The origins for the domain (only when useOriginPolicy: false) |
| originscheme | String | Default: "http". Enum: "http", "https" |
| portMappingType | String | Default: "default". Enum: "default", "static" |
| originPort | Integer | Default: 80 |
| scheme | String[] | Default: ["http"] |
| httpPort | Integer[] | Default: [80] |
| httpsPort | Integer[] | Default: [443] |
| redirecthttps | Boolean | Default: false |
| useHsts | Boolean | Default: false |
| usedWafRules | Objects[] | Waf Rules config. |
| errorHtmlPageName | String | Default: "default" |
| upstreamTimeout | Integer | Default: 60. Enum: 60 120 180 |
| isEnabledCompressionToOrigin | Boolean | Default: true |
| isInsertRidHeaderToOrigin | Boolean | Default: true |
| setCustomHostHeader | String | Default: "off". Enum: "on", "off" |
| websocketPath | String | Default: "" |
| proxyBufferSize | Integer | Default: 4. Enum: 2 4 8 16 32 64 |
| isUpgradeInsecureRequest | Boolean | Default: false |
| maxUploadSize | Integer | Default: 1. Max 100 (Units: MB) |
| cusFollowCachePath | String | Default: "" |
| cusFollowCacheFile | String | Default: "" |
| cusCachepathExp | String | Default: "5" |
| cusCachepathSrvexp | String | Default: "5" |
| cusCachefileExp | String | Default: "5" |
| cusCachefileSrvexp | String | Default: "5" |
| defCachefileExp | String | Default: "5" |
| defCachefileSrvexp | String | Default: "5" |
| proxyCacheIgnoreArgs | Boolean | Default: false |
| cusCachepath | String | Default: "" |
| cusCachefile | String | Default: "" |
| forceCusCachePath | String | Default: "" |
| forceCusCacheFile | String | Default: "" |
| cusNoncachepath | String | Default: "" |
| cusNonachefile | String | Default: "" |
| defNoncachepath | String | Default: "" |
| defCachefile | String | 預設快取副檔名列表... |
| isAcceptHttpV1 | Boolean | Default: false |
| isEnabledUpstreamHttp11 | Boolean | Default: true |
| useTlsv13 | Boolean | Default: false |
| redirectHttpCode | String | Default: "302" |
resources.appProfiles.get
POST /resources/app-profiles/{appProfileId}
注意:PDF 標示為 POST,但根據 REST 慣例通常為 GET,此處遵循 PDF。
Path Parameters
| 欄位 | 類型 | 描述 |
| appProfileId * | String | Example: my-profile-id |
Query Parameters
| 欄位 | 類型 | 描述 |
| groupName * | String | 專案名稱。 |
resources.appProfiles.update
PATCH /resources/app-profiles/{appProfileId}
Path Parameters
| 欄位 | 類型 | 描述 |
| appProfileId * | String | Example: my-profile-id |
Request Body
參數同 Create。
resources.appProfiles.delete
DELETE /resources/app-profiles/{appProfileId}
Path Parameters
| 欄位 | 類型 | 描述 |
| appProfileId * | String | Example: my-profile-id |
Query Parameters
| 欄位 | 類型 | 描述 |
| groupName * | String | Example: groupName=my-group |
Purge cache of the appProfiles
POST /resources/app-profiles/_actions/purgeCache
Query Parameters
| 欄位 | 類型 | 描述 |
| groupName | String | 群組。 |
Request Body
| 欄位 | 類型 | 描述 |
| keys | Array[] | Example: keys: [{"appProfileName":"...", "key": ""}] |
4. Resources.Cert
resources.certs.list
GET /resources/certs
Query Parameters
| 欄位 | 類型 | 描述 |
| groupName | String | Example: groupName=my-group |
| size | Integer | Default: 10 |
| from | Integer | Default: 0 |
| filters | String | Default: " " |
resources.certs.get
GET /resources/certs/{keypairId}
Path Parameters
| 欄位 | 類型 | 描述 |
| keypairId | String | Example: mycert-id |
Query Parameters
| 欄位 | 類型 | 描述 |
| groupName | String | Example: groupName=my-group |
resources.certs.create
POST /resources/certs
Query Parameters
| 欄位 | 類型 | 描述 |
| groupName | String | Example: groupName=my-group |
Request Body
| 欄位 | 類型 | 描述 |
| label | String | 標籤。 |
| description | String | The description of the item |
| tags | String[] | 標籤。 |
| keypairname | String | <= 35 characters |
| certpemRaw | String | The pem in x509 format |
| certkeyRaw | String | The key of this cert |
resources.cert.update
PATCH /resources/certs/{keypairId}
Path Parameters
| 欄位 | 類型 | 描述 |
| keypairId | String | Example: mycert-id |
Query Parameters
| 欄位 | 類型 | 描述 |
| groupName | String | Example: groupName=my-group |
Request Body
參數同 Create。
resources.cert.delete
DELETE /resources/certs/{keypairId}
Path Parameters
| 欄位 | 類型 | 描述 |
| keypairId | String | Example: mycert-id |
Query Parameters
| 欄位 | 類型 | 描述 |
| groupName | String | Example: groupName=my-group |
5. Resources.WafRules
resources.wafrules.list
GET /resources/wafrules
Query Parameters
| 欄位 | 類型 | 描述 |
| groupName | String | Example: groupName=my-group |
| size | Integer | Default: 10 |
| from | Integer | Default: 0 |
| filters | String | Default: " " |
resources.wafrules.create
POST /resources/wafrules
注意:PDF 標題為 Create 但方法寫 GET,此處修正為 POST 或依照 PDF。
Query Parameters
| 欄位 | 類型 | 描述 |
| groupName | String | Example: groupName=my-group |
Request Body
| 欄位 | 類型 | 描述 / 預設值 |
| label | String | 標籤。 |
| description | String | 敘述。 |
| tags | String[] | 標籤。 |
| ruleName | String | <= 35 chars |
| wafAction | String | Default: "00". 00: Allow, 01: Deny, 03: Gesture, 05: Speed Limit, 06: Redirect, 07: Cookie/JS, 08: Block Period, 09: Set Req Hdr, 10: Set Res Hdr, 12: Custom Page, 13: Origin Policy, 14: Smart Captcha |
| wafCustomHtmlPageName | String | Default: "" |
| wafDenyHtmlPageName | String | Default: "default" |
| wafOriginPolicyName | Integer | Default: 300 (PDF says Name is integer?) |
| wafSpeedLimit | Integer | Default: 10240 |
| wafRedirectUrl | String | Default: "" |
| wafRedirectHttpCode | String | Default: "302". Enum: 301, 302, 307 |
| wafSetReqHeaders | String | Default: "" |
| wafSetResHeaders | String | Default: "" |
| wafIp | String | Default: "0.0.0.0/0" (Multiple separated with \n) |
| wafUri | String | Default: "" |
| wafHeaders | String | Default: "" |
| wafHeadersNotExist | String | Default: "" |
| wafCountry | String[] | Default: [] |
| wafHttpMethod | String[] | Default: []. Enum: get, post, purge, put, head, options, delete, patch |
| wafRate | String | Default: "" |
| wafOwasp | String[] | Default: []. Enum: 20000_http_violation, etc. |
| wafIpExclude | String | Default: "0.0.0.0/0" |
| wafUriExclude | String | Default: "" |
| wafHeadersExclude | String | Default: "" |
| wafProxyType | String[] | Default: []. Enum: vpn, tor, dch, pub, web, ses |
| wafIsDenyThenBucket | Boolean | Default: false |
| wafDenyThenBucketRate | String | Default: "1/1" |
| wafIsGlobalBucketRecord | Boolean | Default: false |
| wafIsp | String | Default: "" |
| wafWithL3BucketList | Boolean | Default: false |
| wafCustomScrollName | String | Default: "" |
resources.wafrules.get
GET /resources/wafrules/{wafruleId}
Path Parameters
| 欄位 | 類型 | 描述 |
| wafruleId | String | Example: my_wafrule_id |
Query Parameters
| 欄位 | 類型 | 描述 |
| groupName | String | Example: groupName=my-group |
resources.wafrules.update
PATCH /resources/wafrules/{wafruleId}
Path Parameters
| 欄位 | 類型 | 描述 |
| wafruleId | String | Example: my_wafrule_id |
Query Parameters
| 欄位 | 類型 | 描述 |
| groupName | String | Example: groupName=my-group |
Request Body
參數同 Create。
resources.wafrules.delete
DELETE /resources/wafrules/{wafruleId}
Path Parameters
| 欄位 | 類型 | 描述 |
| wafruleId | String | Example: my_wafrule_id |
Query Parameters
| 欄位 | 類型 | 描述 |
| groupName | String | Example: groupName=my-group |