CNF API · v1
為 c.nf 而設嘅一套 API:DNS 區域同紀錄、個人檔案、套件、已儲存嘅憑證、網域查詢,同埋幾個完全唔使帳戶嘅公共工具。凡係需要驗證嘅操作,都只會作用喺發出呼叫嘅嗰條密鑰所屬嘅帳戶。
概覽
第 1 版提供你透過 DNS 管理認領之區域的 DNS 操作。請在 帳戶 → API 密鑰下建立及撤銷權杖。
403 forbidden_zone。GET /v1?format=json,或將 Accept: application/json 傳送至 /v1。基礎 URL 及版本管理
https://api.c.nf/v1
所有端點均位於 /v1 之下。破壞相容性的變更會使用新的主要版本路徑。v1 可新增向後相容的欄位及端點,並會記錄於變更記錄。
身份驗證及範圍
每項讀取或更改帳戶資料的請求都必須包含 Bearer 權杖。權杖以 cnf_ 開頭,後接 32 個十六進制字元。
curl https://api.c.nf/v1/dns/zones \
-H "Authorization: Bearer cnf_a1b2c3d4e5f60718293a4b5c6d7e8f90"
權杖會以單向雜湊形式儲存,完整值只在建立時顯示。如果遺失權杖,請撤銷並另行建立。
每個權杖都帶有範圍。未設定範圍的權杖預設獲得 dns:read。寫入範圍亦允許讀取。
| 範圍 | 允許操作 |
|---|---|
dns:read |
列出區域及記錄,並讀取個別記錄。 |
dns:write |
讀取、建立、更新及刪除 DNS 記錄與區域認領。 |
* |
所有範圍。只在確實需要時使用。 |
範圍不符時會傳回 403 forbidden_scope,並包含 required_scopes 及 token_scopes 以供診斷。
按用戶隔離
每個 Bearer 權杖只會對應一個 user_id。每個區域處理程式均會在讀取或寫入前,檢查該用戶已驗證的認領。系統沒有管理員覆寫、冒充路徑或跨用戶繞過機制。
即使權杖具有 *,亦只能操作其所屬用戶已驗證的區域。嘗試使用另一帳戶的區域會傳回 403 forbidden_zone。
回應封裝
成功回應
{
"success": true,
"data": { "zones": [] },
"request_id": "req_abc123def456abcd"
}
錯誤回應
{
"success": false,
"error": "forbidden_zone",
"message": "zone not verified for this account (or does not exist)",
"request_id": "req_abc123def456abcd",
"zone": "example.com"
}
每個回應都包含 request_id,可安全記錄於用戶端日誌。
錯誤代碼
| HTTP | 錯誤代碼 | 含義 |
|---|---|---|
| 400 | bad_request |
缺少必填欄位、請求內容格式錯誤,或輸入無效。 |
| 401 | unauthorized |
Bearer 權杖缺少、無效或已撤銷。 |
| 403 | forbidden_scope |
權杖沒有必要的範圍。 |
| 403 | forbidden_zone |
此帳戶尚未驗證該區域,或區域不存在。 |
| 404 | not_found |
找不到所請求的區域、記錄或用戶。 |
| 405 | method_not_allowed |
此端點不支援該 HTTP 方法。 |
| 502 | upstream_error |
DNS 供應商傳回錯誤。 |
區域驗證
當 POST /v1/dns/zones 認領區域時,伺服器會選擇以下其中一種流程:
-
即時驗證(
method: "auto") — 在沒有其他帳戶認領該區域時使用。認領會立即通過驗證。只有擁有者在註冊商處將權威 NS 委派指向傳回的域名伺服器後,記錄才會生效。 -
TXT 驗證 — 用於有爭議的認領。請在
_cnfdns-verify.<zone>新增傳回的 TXT 值,然後呼叫POST /v1/dns/zones/{zone}/verify。 -
舊版 NS 驗證 — 較早建立而仍待處理的認領可能使用
verify_method: "ns"。驗證會比較區域目前的 NS 回應與預期的域名伺服器組合。
in-addr.arpa 及 ip6.arpa。認領區域、取得 expected_ns,再將這些委派目標提交至相關註冊局。驗證是冪等操作。對已驗證的認領重複驗證,會傳回 verified: true,而不會更改認領。
記錄類型及限制
支援的記錄類型
A, AAAA, CNAME, MX, TXT, NS, SRV, CAA, PTR, SPF.
priority 是 MX 及 SRV 的必填欄位,其他類型則會忽略。ttl 必須介乎 60 至 2,592,000 秒。
端點
公共工具
毋須帳戶的小型可靠端點:時間、位址、國家/地區、匯率同雜湊。
| 方法 | 路徑 | 範圍 | 用途 |
|---|---|---|---|
| GET | /v1/public/time |
公開 | 目前 UTC 時間,提供 ISO 8601、RFC 2822 同 Unix 格式。 |
| GET | /v1/public/timestamp |
公開 | 目前 Unix 時間戳,以秒同毫秒表示。 |
| GET | /v1/public/ip |
公開 | 今次請求嘅來源位址。 |
| GET | /v1/public/geo |
公開 | 邊緣節點判斷嘅今次請求來源國家/地區。 |
| GET | /v1/public/fx |
公開 | 相對某基準貨幣嘅匯率,每小時更新。 |
| GET | /v1/public/hash |
公開 | 用 SHA-256 或其他支援嘅演算法計算字串雜湊。 |
帳戶
權杖屬於邊個,以及佢可以做啲乜。
| 方法 | 路徑 | 範圍 | 用途 |
|---|---|---|---|
| GET | /v1/account/me |
任何權杖 | 權杖所屬帳戶、佢嘅範圍,以及開放到嘅端點。 |
| GET | /v1/account/sessions |
account:read |
目前登入本帳戶嘅所有瀏覽器工作階段。 |
| POST | /v1/account/sessions/revoke |
account:write |
登出其中一個工作階段。 |
| POST | /v1/account/sessions/revoke-all |
account:write |
登出全部工作階段。 |
| POST | /v1/account/profile |
account:write |
修改你嘅顯示名稱。 |
DNS
認領網域、證明你控制得到,然後管理紀錄。
| 方法 | 路徑 | 範圍 | 用途 |
|---|---|---|---|
| GET | /v1/dns/zones |
dns:read |
本帳戶認領咗嘅所有區域。 |
| POST | /v1/dns/zones |
dns:write |
認領一個區域。冇爭議即時生效,有爭議就會派 TXT 驗證。 |
| GET | /v1/dns/zones/{zone} |
dns:read |
單一區域;如果仲未驗證,會一併提供驗證步驟。 |
| POST | /v1/dns/zones/{zone}/verify |
dns:write |
執行驗證查詢,吻合就將區域標為已驗證。 |
| DELETE | /v1/dns/zones/{zone} |
dns:write |
放棄認領。紀錄本身唔會受影響。 |
| GET | /v1/dns/zones/{zone}/records |
dns:read |
已驗證區域入面嘅所有紀錄。 |
| POST | /v1/dns/zones/{zone}/records |
dns:write |
喺已驗證區域新增一條紀錄。 |
| GET | /v1/dns/zones/{zone}/records/{id} |
dns:read |
單一紀錄。 |
| PATCH | /v1/dns/zones/{zone}/records/{id} |
dns:write |
修改紀錄部分欄位;冇提供嘅欄位維持原值。 |
| DELETE | /v1/dns/zones/{zone}/records/{id} |
dns:write |
刪除一條紀錄。 |
憑證
憑證工具背後嘅私人憑證庫。
| 方法 | 路徑 | 範圍 | 用途 |
|---|---|---|---|
| GET | /v1/cred |
cred:read cred:write |
已儲存嘅憑證,可以按平台篩選。 |
| POST | /v1/cred |
cred:write |
儲存一條憑證。 |
檔案
個人檔案儲存:列出、上載、編輯、分享同刪除。
| 方法 | 路徑 | 範圍 | 用途 |
|---|---|---|---|
| GET | /v1/files |
files:read files:write |
你儲存嘅檔案,最新排先。 |
| GET | /v1/files/{id} |
files:read files:write |
單一檔案;如果有分享連結會一併回傳。 |
| GET | /v1/files/download |
files:read files:write |
下載檔案。 |
| POST | /v1/files/upload |
files:write |
上載檔案。 |
| POST | /v1/files/update |
files:write |
編輯檔案資料,包括係咪分享。 |
| POST | /v1/files/rename |
files:write |
更改檔案下載時用嘅名。 |
| POST | /v1/files/delete |
files:write |
刪除檔案同埋佢嘅內容。 |
| POST | /v1/files/upload-chunk |
files:write |
傳送大檔案上載嘅其中一塊。 |
| POST | /v1/files/upload-finalize |
files:write |
將各塊組合成一個檔案。 |
CDN
你分享嘅檔案嘅邊緣快取同流量。
| 方法 | 路徑 | 範圍 | 用途 |
|---|---|---|---|
| GET | /v1/cdn/stats |
cdn:read |
你分享檔案嘅快取設定同請求次數。 |
| POST | /v1/cdn/config |
cdn:write |
設定邊緣保留檔案幾耐,或者停止分發。 |
| POST | /v1/cdn/purge |
cdn:write |
即刻將檔案由邊緣快取移除。 |
短訊轉發
由手機轉發過嚟嘅訊息,同埋放行佢嘅金鑰。
| 方法 | 路徑 | 範圍 | 用途 |
|---|---|---|---|
| GET | /v1/sms/messages |
sms:read |
轉發到你帳戶嘅訊息。 |
| GET | /v1/sms/keys |
sms:read sms:write |
裝置用緊嘅轉發金鑰。 |
| POST | /v1/sms/keys |
sms:write |
簽發一條轉發金鑰,最多五條。 |
| DELETE | /v1/sms/keys |
sms:write |
撤銷一條轉發金鑰。 |
靜態網站
上載一個 zip,就係一個網站。
| 方法 | 路徑 | 範圍 | 用途 |
|---|---|---|---|
| GET | /v1/sites |
sites:read sites:write |
你嘅靜態網站,最近部署嘅排先。 |
| POST | /v1/sites/deploy |
sites:write |
將 zip 部署成網站。 |
| POST | /v1/sites/delete |
sites:write |
刪除網站同佢嘅檔案。 |
部署
你部署咗嘅表單、Webhook 同短連結端點。
| 方法 | 路徑 | 範圍 | 用途 |
|---|---|---|---|
| GET | /v1/deployments |
deploy:read deploy:write |
你嘅部署,同各自嘅使用次數。 |
| POST | /v1/deployments/toggle |
deploy:write |
啟用或停用一個部署。 |
| POST | /v1/deployments/delete |
deploy:write |
刪除一個部署。 |
網域
你嘅網域組合同註冊資料。
| 方法 | 路徑 | 範圍 | 用途 |
|---|---|---|---|
| GET | /v1/domains |
domain:read domain:write |
你嘅網域,最快到期嘅排先。 |
| POST | /v1/domains/whois-sync |
domain:write |
按註冊局紀錄更新一個網域。 |
套件
發佈版本,並讀取版本同下載次數。
| 方法 | 路徑 | 範圍 | 用途 |
|---|---|---|---|
| GET | /v1/packages |
packages:read packages:write |
你嘅套件,連版本數同下載總數。 |
| GET | /v1/packages/{slug} |
packages:read packages:write |
單一套件,連所有版本同構件。 |
| POST | /v1/packages/publish |
packages:write |
發佈一個版本;如果套件係新嘅就順帶建立。 |
| POST | /v1/packages/update |
packages:write |
編輯套件資料。 |
| POST | /v1/packages/delete |
packages:write |
刪除套件同埋所有版本、所有構件。 |
WHOIS
網域註冊資料,會快取並同網域工具共用。
| 方法 | 路徑 | 範圍 | 用途 |
|---|---|---|---|
| GET | /v1/whois |
whois:read |
網域嘅註冊資料。 |
畀 AI 代理用
將代理指向 /v1/ai,嗰份說明可以直接貼入提示詞;/v1/ai?format=json 就將同樣嘅端點寫成工具定義。/v1/openapi.json 係完整嘅 OpenAPI 3.1 合約,/llms.txt 係畀爬蟲睇嘅索引。四者都由同本頁一樣嘅路由表生成,所以唔會描述唔存在嘅端點。
curl https://api.c.nf/v1/ai
curl https://api.c.nf/v1/ai?format=json
curl https://api.c.nf/v1/openapi.json
請求欄位
建立區域認領
| 欄位 | 類型 | 要求 | 附註 |
|---|---|---|---|
zone |
string |
必填 | 頂層區域;伺服器會轉為小寫。接受反向區域。 |
建立 DNS 記錄
| 欄位 | 類型 | 要求 | 附註 |
|---|---|---|---|
type |
string |
必填 | A、AAAA、CNAME、MX、TXT、NS、SRV、CAA、PTR 或 SPF 其中一項。 |
host |
string |
選填 | 只填寫子域名。頂層請使用空字串或 @。 |
value |
string |
必填 | 記錄內容,例如 IP 地址、目標名稱或文字值。 |
ttl |
integer |
選填 | 介乎 60 至 2,592,000 秒。預設值為 3,600。 |
priority |
integer |
選填 | MX 及 SRV 必填;其他類型會忽略。 |
更新 DNS 記錄
| 欄位 | 類型 | 要求 | 附註 |
|---|---|---|---|
host |
string |
選填 | 替代子域名。 |
value |
string |
選填 | 與目前記錄合併後不得為空。 |
ttl |
integer |
選填 | 介乎 60 至 2,592,000 秒。 |
priority |
integer |
選填 | 只用於 MX 及 SRV。 |
PATCH 更改記錄類型。如要更改類型,請刪除記錄並另行建立。範例
列出區域
curl -H "Authorization: Bearer $CNF_TOKEN" \
https://api.c.nf/v1/dns/zones認領區域
curl -X POST https://api.c.nf/v1/dns/zones \
-H "Authorization: Bearer $CNF_TOKEN" \
-H "Content-Type: application/json" \
-d '{"zone":"example.com"}'驗證區域
curl -X POST https://api.c.nf/v1/dns/zones/example.com/verify \
-H "Authorization: Bearer $CNF_TOKEN"建立記錄
curl -X POST https://api.c.nf/v1/dns/zones/example.com/records \
-H "Authorization: Bearer $CNF_TOKEN" \
-H "Content-Type: application/json" \
-d '{"type":"A","host":"api","value":"192.0.2.10"}'快速開始
- 建立具有
dns:write的 API 密鑰;請前往帳戶 → API 密鑰,並在密鑰顯示時複製。 - 將權杖儲存在你裝置上受保護的環境變數中。
- 呼叫
GET /v1/account/me,確認權杖及其範圍。 - 認領區域。回應會說明驗證是即時完成、使用 TXT,還是使用舊版 NS 方式。
- 如有需要,完成傳回的 DNS 證明,然後呼叫驗證端點。
- 認領通過驗證後,才可建立、讀取、更新或刪除記錄。
變更記錄
v1.1.0 — 區域管理
- 新增以 API 認領區域,包括即時及 TXT 驗證流程。
- 新增單一區域狀態及冪等驗證端點。
- 新增撤銷認領功能,而不會一併刪除記錄。
- 在區域清單新增已驗證、待處理及全部篩選器。
v1.0.0 — 首次發佈
- 新增 Bearer 權杖身份驗證及按用戶隔離區域。
- 新增讀取及寫入範圍。
- 新增帳戶、區域清單及記錄管理端點。
- 新增包含請求識別碼的一致回應封裝。