CNF API · v1
واجهة واحدة لـc.nf: مناطق 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 وسجلاتها وقراءة السجلات الفردية. |
dns:write |
قراءة سجلات DNS ومطالبات المناطق وإنشاؤها وتحديثها وحذفها. |
* |
جميع النطاقات. لا تستخدم هذا إلا عند الحاجة الفعلية إليه. |
يعيد عدم التطابق 403 forbidden_scope ويتضمن كلاً من required_scopes وtoken_scopes للمساعدة في التشخيص.
العزل لكل مستخدم
يرتبط رمز Bearer بقيمة user_id واحدة بالضبط. يتحقق كل معالج لمنطقة DNS من مطالبة ذلك المستخدم المتحقّق منها قبل أي قراءة أو كتابة. لا يوجد تجاوز للمشرف ولا مسار انتحال ولا التفاف بين المستخدمين.
حتى الرمز ذو النطاق * لا يمكنه العمل إلا على المناطق التي تحقّق مستخدمه من ملكيتها. تعيد محاولة استخدام منطقة تابعة لحساب آخر 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 |
لم يُتحقّق من منطقة DNS لهذا الحساب، أو أنها غير موجودة. |
| 404 | not_found |
تعذّر العثور على منطقة DNS أو السجل أو المستخدم المطلوب. |
| 405 | method_not_allowed |
لا تدعم نقطة النهاية هذه طريقة HTTP المستخدمة. |
| 502 | upstream_error |
أعاد مزود DNS خطأً. |
التحقّق من منطقة DNS
عندما يطالب POST /v1/dns/zones بملكية منطقة، يختار الخادم أحد المسارات التالية:
-
تحقّق فوري (
method: "auto") — يُستخدم عندما لا يكون أي حساب آخر قد طالب بالمنطقة. تُعتمد المطالبة فورًا. ولا تصبح السجلات موثوقة إلا بعد أن يوجّه المالك تفويض NS لدى مسجّل النطاق إلى خوادم الأسماء المُعادة. -
تحقّق TXT — يُستخدم عند وجود مطالبة متنازع عليها. أضف قيمة TXT المُعادة عند
_cnfdns-verify.<zone>، ثم استدعِ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 |
بيانات تسجيل نطاق. |
لوكلاء الذكاء الاصطناعي
وجِّه الوكيل إلى /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
حقول الطلب
إنشاء مطالبة بمنطقة DNS
| الحقل | النوع | المتطلب | ملاحظات |
|---|---|---|---|
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"}'بدء سريع
- أنشئ مفتاح API بنطاق
dns:writeمن الحساب ← مفاتيح API، وانسخه عند عرضه. - خزّن الرمز في متغير بيئة محمي على جهازك.
- استدعِ
GET /v1/account/meللتأكد من الرمز ونطاقاته. - طالب بمنطقة DNS. توضح الاستجابة ما إذا كان التحقّق فوريًا أو باستخدام TXT أو باستخدام NS القديم.
- أكمل إثبات DNS المُعاد عند طلبه، ثم استدعِ نقطة نهاية التحقّق.
- لا تنشئ السجلات أو تقرأها أو تحدّثها أو تحذفها إلا بعد التحقّق من المطالبة.
سجل التغييرات
v1.1.0 — إدارة مناطق DNS
- إضافة مطالبات مناطق DNS عبر API، بما فيها مسارا التحقّق الفوري وTXT.
- إضافة نقطتي نهاية لحالة المنطقة الواحدة وللتحقّق المتكرر بأمان.
- إضافة إلغاء المطالبة دون حذف ضمني للسجلات.
- إضافة عوامل تصفية المتحقّق منها وقيد الانتظار والكل إلى قائمة المناطق.
v1.0.0 — الإصدار الأول
- إضافة مصادقة رمز Bearer وعزل مناطق DNS لكل مستخدم.
- إضافة نطاقي القراءة والكتابة.
- إضافة نقاط نهاية الحساب وقائمة المناطق وإدارة السجلات.
- إضافة غلاف استجابة موحّد يتضمن معرّف طلب.