HansCDN API 完整說明文件

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

欄位類型描述
usernameString使用者名稱。
passwordString使用者密碼。

Response (Success 200)

欄位類型描述
successString回傳狀態。
tokenString令牌。

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

欄位類型描述
groupNameString獲取指定群組域名。
sizeString回傳資料筆數。預設: 10
fromString從第 n 筆開始。預設: 0
filtersString指定返回欄位。預設: 全部 (如要指定 至少要有 servername 欄位)
serviceGroupNameString獲取指定服務群組域名。預設: 無

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

欄位類型描述
labelString標籤。
descriptionString (選填)敘述。預設: 無
tagsString[] (選填)標籤。預設: []
servername *String域名。
appProfileNameString專案名稱。預設: none
useSystemCertBoolean (選填)是否使用系統憑證。預設: false
keypairnameString (選填)憑證組名稱。預設: self-sign
isEnforceProtectBooleanDefault: false
serviceGroupNameString服務群組。
useOriginPolicyBooleanDefault: false
usedOriginPoliciesObjects[]regionName(strings[]), originPolicyName(string)
originsString[]回源地址。多選,可填寫 IP 或是 域名
originschemeString (選填)回源協議。可填寫 http, https。預設 http
portMappingTypeString (選填)回源端口映射方式。default 或 static。預設 default
originPortNumber (選填)回源端口。http預設80, https預設443
schemeString[] (選填)協議。["http", "https"]。預設: ["http"]
httpPortString[] (選填)http 監聽端口。預設: [80]
httpsPortString[] (選填)https 監聽端口。預設: [443]
redirecthttpsBoolean (選填)是否開啟 302 跳轉 https。預設: false
redirectHttpCodeStringDefault: "302"
useHstsBoolean (選填)是否開啟 HSTS。預設: false
usedWafRulesString[] (選填)套用的 waf 規則。Ex: [{"value": "myrule", "isEnabled": false }]
errorHtmlPageNameStringDefault: "default"
upstreamTimeoutIntegerDefault: 60. Enum: 60 120 180 (EDGE 到源站的 timeout)
isEnabledCompressionToOriginBooleanDefault: true (關閉 EDGE 到源站走 HTTP/1.0)
isEnabledUpstreamHttp11BooleanDefault: true
isInsertRidHeaderToOriginBooleanDefault: false (若啟用, Edge 將插入 RID 標頭)
setCustomHostHeaderString (選填)是否替換回源 Host Header (on / off)。預設 off
isAcceptHttpV1BooleanDefault: false
websocketPathStringDefault: "" (多個路徑用換行分開)
proxyBufferSizeIntegerDefault: 4. Enum: 2 4 8 16 32 64
isUpgradeInsecureRequestBooleanDefault: false
maxUploadSizeIntegerDefault: 1 (單位 MB). Range: [1..100]
proxyCacheIgnoreArgsBooleanDefault: false (快取是否忽略參數)
cusCachepathStringDefault: "" (多個路徑用換行分開)
cusCachefileStringDefault: "" (多個路徑用換行分開)
forceCusCachePathStringDefault: ""
forceCusCacheFileStringDefault: ""
cusFollowCachePathStringDefault: ""
cusFollowCacheFileStringDefault: ""
cusCachepathExpStringDefault: "5" (緩存路徑的瀏覽器過期時間)
cusCachepathSrvexpStringDefault: "5" (緩存路徑的伺服器過期時間)
cusCachefileExpStringDefault: "5"
cusCachefileSrvexpStringDefault: "5"
defCachefileExpStringDefault: "5"
defCachefileSrvexpStringDefault: "5"
cusNoncachepathStringDefault: ""
cusNonachefileStringDefault: ""

resources.domains.update

PATCH /resources/domains/{servernameId}

Path Parameters

欄位類型描述
servernameId *StringExample: mydomain-id (先從 list 取得 ID)

Query Parameters

欄位類型描述
groupName *String群組。

Request Body

參數同 Create。

resources.domains.delete

DELETE /resources/domains/{servernameId}

Path Parameters

欄位類型描述
servernameIdString域名。Example: mydomain-id

Query Parameters

欄位類型描述
groupNameString群組。Example: groupName=my-group

Purge cache of the domain

POST /resources/domains/_actions/purgeCache

Query Parameters

欄位類型描述
groupNameString群組。

Request Body

欄位類型描述
keysArray[]Example: {"keys":[{"domain":"mydomain.com", "key": ""}]}

3. AppProfiles

resources.appProfiles.list

GET /resources/app-profiles

Query Parameters

欄位類型描述
groupNameString獲取指定群組憑證組。
sizeInteger回傳資料筆數。預設: 10
fromInteger從第 n 筆開始。預設: 0
filtersStringExample: filters=itemName:my_name

resources.appProfiles.create

POST /resources/app-profiles

Query Parameters

欄位類型描述
groupNameString群組。

Request Body

欄位類型描述
labelString標籤。Default: ""
descriptionStringDefault: ""
tagsString[]標籤。Default: []
appProfileNameString專案名稱。<= 35 chars
serviceGroupNameString服務群組
useOriginPolicyBooleanDefault: false
usedOriginPoliciesObjects[]
originsString[]The origins for the domain (only when useOriginPolicy: false)
originschemeStringDefault: "http". Enum: "http", "https"
portMappingTypeStringDefault: "default". Enum: "default", "static"
originPortIntegerDefault: 80
schemeString[]Default: ["http"]
httpPortInteger[]Default: [80]
httpsPortInteger[]Default: [443]
redirecthttpsBooleanDefault: false
useHstsBooleanDefault: false
usedWafRulesObjects[]Waf Rules config.
errorHtmlPageNameStringDefault: "default"
upstreamTimeoutIntegerDefault: 60. Enum: 60 120 180
isEnabledCompressionToOriginBooleanDefault: true
isInsertRidHeaderToOriginBooleanDefault: true
setCustomHostHeaderStringDefault: "off". Enum: "on", "off"
websocketPathStringDefault: ""
proxyBufferSizeIntegerDefault: 4. Enum: 2 4 8 16 32 64
isUpgradeInsecureRequestBooleanDefault: false
maxUploadSizeIntegerDefault: 1. Max 100 (Units: MB)
cusFollowCachePathStringDefault: ""
cusFollowCacheFileStringDefault: ""
cusCachepathExpStringDefault: "5"
cusCachepathSrvexpStringDefault: "5"
cusCachefileExpStringDefault: "5"
cusCachefileSrvexpStringDefault: "5"
defCachefileExpStringDefault: "5"
defCachefileSrvexpStringDefault: "5"
proxyCacheIgnoreArgsBooleanDefault: false
cusCachepathStringDefault: ""
cusCachefileStringDefault: ""
forceCusCachePathStringDefault: ""
forceCusCacheFileStringDefault: ""
cusNoncachepathStringDefault: ""
cusNonachefileStringDefault: ""
defNoncachepathStringDefault: ""
defCachefileString預設快取副檔名列表...
isAcceptHttpV1BooleanDefault: false
isEnabledUpstreamHttp11BooleanDefault: true
useTlsv13BooleanDefault: false
redirectHttpCodeStringDefault: "302"

resources.appProfiles.get

POST /resources/app-profiles/{appProfileId}

注意:PDF 標示為 POST,但根據 REST 慣例通常為 GET,此處遵循 PDF。

Path Parameters

欄位類型描述
appProfileId *StringExample: my-profile-id

Query Parameters

欄位類型描述
groupName *String專案名稱。

resources.appProfiles.update

PATCH /resources/app-profiles/{appProfileId}

Path Parameters

欄位類型描述
appProfileId *StringExample: my-profile-id

Request Body

參數同 Create。

resources.appProfiles.delete

DELETE /resources/app-profiles/{appProfileId}

Path Parameters

欄位類型描述
appProfileId *StringExample: my-profile-id

Query Parameters

欄位類型描述
groupName *StringExample: groupName=my-group

Purge cache of the appProfiles

POST /resources/app-profiles/_actions/purgeCache

Query Parameters

欄位類型描述
groupNameString群組。

Request Body

欄位類型描述
keysArray[]Example: keys: [{"appProfileName":"...", "key": ""}]

4. Resources.Cert

resources.certs.list

GET /resources/certs

Query Parameters

欄位類型描述
groupNameStringExample: groupName=my-group
sizeIntegerDefault: 10
fromIntegerDefault: 0
filtersStringDefault: " "

resources.certs.get

GET /resources/certs/{keypairId}

Path Parameters

欄位類型描述
keypairIdStringExample: mycert-id

Query Parameters

欄位類型描述
groupNameStringExample: groupName=my-group

resources.certs.create

POST /resources/certs

Query Parameters

欄位類型描述
groupNameStringExample: groupName=my-group

Request Body

欄位類型描述
labelString標籤。
descriptionStringThe description of the item
tagsString[]標籤。
keypairnameString<= 35 characters
certpemRawStringThe pem in x509 format
certkeyRawStringThe key of this cert

resources.cert.update

PATCH /resources/certs/{keypairId}

Path Parameters

欄位類型描述
keypairIdStringExample: mycert-id

Query Parameters

欄位類型描述
groupNameStringExample: groupName=my-group

Request Body

參數同 Create。

resources.cert.delete

DELETE /resources/certs/{keypairId}

Path Parameters

欄位類型描述
keypairIdStringExample: mycert-id

Query Parameters

欄位類型描述
groupNameStringExample: groupName=my-group

5. Resources.WafRules

resources.wafrules.list

GET /resources/wafrules

Query Parameters

欄位類型描述
groupNameStringExample: groupName=my-group
sizeIntegerDefault: 10
fromIntegerDefault: 0
filtersStringDefault: " "

resources.wafrules.create

POST /resources/wafrules

注意:PDF 標題為 Create 但方法寫 GET,此處修正為 POST 或依照 PDF。

Query Parameters

欄位類型描述
groupNameStringExample: groupName=my-group

Request Body

欄位類型描述 / 預設值
labelString標籤。
descriptionString敘述。
tagsString[]標籤。
ruleNameString<= 35 chars
wafActionStringDefault: "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
wafCustomHtmlPageNameStringDefault: ""
wafDenyHtmlPageNameStringDefault: "default"
wafOriginPolicyNameIntegerDefault: 300 (PDF says Name is integer?)
wafSpeedLimitIntegerDefault: 10240
wafRedirectUrlStringDefault: ""
wafRedirectHttpCodeStringDefault: "302". Enum: 301, 302, 307
wafSetReqHeadersStringDefault: ""
wafSetResHeadersStringDefault: ""
wafIpStringDefault: "0.0.0.0/0" (Multiple separated with \n)
wafUriStringDefault: ""
wafHeadersStringDefault: ""
wafHeadersNotExistStringDefault: ""
wafCountryString[]Default: []
wafHttpMethodString[]Default: []. Enum: get, post, purge, put, head, options, delete, patch
wafRateStringDefault: ""
wafOwaspString[]Default: []. Enum: 20000_http_violation, etc.
wafIpExcludeStringDefault: "0.0.0.0/0"
wafUriExcludeStringDefault: ""
wafHeadersExcludeStringDefault: ""
wafProxyTypeString[]Default: []. Enum: vpn, tor, dch, pub, web, ses
wafIsDenyThenBucketBooleanDefault: false
wafDenyThenBucketRateStringDefault: "1/1"
wafIsGlobalBucketRecordBooleanDefault: false
wafIspStringDefault: ""
wafWithL3BucketListBooleanDefault: false
wafCustomScrollNameStringDefault: ""

resources.wafrules.get

GET /resources/wafrules/{wafruleId}

Path Parameters

欄位類型描述
wafruleIdStringExample: my_wafrule_id

Query Parameters

欄位類型描述
groupNameStringExample: groupName=my-group

resources.wafrules.update

PATCH /resources/wafrules/{wafruleId}

Path Parameters

欄位類型描述
wafruleIdStringExample: my_wafrule_id

Query Parameters

欄位類型描述
groupNameStringExample: groupName=my-group

Request Body

參數同 Create。

resources.wafrules.delete

DELETE /resources/wafrules/{wafruleId}

Path Parameters

欄位類型描述
wafruleIdStringExample: my_wafrule_id

Query Parameters

欄位類型描述
groupNameStringExample: groupName=my-group