مستندات / مستندات i-CDN / API و کلیدهای دسترسی

i-CDN DOCS

API و کلیدهای دسترسی

API مشتری i-CDN برای اتوماسیون DNS، مبدأ، پورت، کش، امنیت، SSL و دریافت مصرف طراحی شده است. کلیدها فقط به حساب سازنده و مجوزهای انتخاب‌شده دسترسی دارند.

1

نشانی پایه و احراز هویت

نشانی پایه API مشتری زیر است. تمام درخواست‌ها و پاسخ‌ها JSON هستند و کلید باید در هدر Authorization قرار گیرد.

Base URL
https://panel.iranmonitor.net/api/v1/customer
OpenAPI 3.1
https://iranmonitor.net/docs/api/openapi.yaml
آزمایش کلید با فهرست دامنه‌ها
curl --fail-with-body \
  -H 'Authorization: Bearer icdn_live_REPLACE_ME' \
  -H 'Accept: application/json' \
  https://panel.iranmonitor.net/api/v1/customer/zones

هشدار

کلید را داخل JavaScript مرورگر، مخزن Git، پیام پشتیبانی یا فایل عمومی قرار ندهید. مقدار کامل کلید فقط هنگام ساخت نمایش داده می‌شود.

2

مجوزها

مجوزدسترسی
zones:readفهرست و جزئیات دامنه‌های همان حساب؛ برای همه کلیدها افزوده می‌شود
dns:writeجایگزینی مجموعه رکوردهای DNS
origins:writeمبدأ اصلی، پورت ورودی و مسیر رکورد ابری
cache:writeسیاست کش دامنه
security:writeپروفایل امنیتی و WAF
tls:writeصدور یا تمدید SSL
traffic:readشمارنده‌های مصرف دامنه
nameservers:verifyبررسی دوباره نیم‌سرورهای عمومی

ویدیوی ساخت و مدیریت کلید API

ساخت کلید محدود، کپی مقدار یک‌بارمصرف و مشاهده محل ابطال کلید.

3

فهرست endpointها

روش و مسیرمجوزکاربرد
GET /zoneszones:readفهرست دامنه‌ها و UUID
GET /zones/{zone_id}zones:readجزئیات کامل دامنه
POST /zones/{zone_id}/verify-nameserversnameservers:verifyبررسی delegation
GET /zones/{zone_id}/traffictraffic:readمصرف ورودی و خروجی
PUT /zones/{zone_id}/dns-recordsdns:writeجایگزینی اتمیک همه رکوردها
PUT /zones/{zone_id}/originorigins:writeبه‌روزرسانی مبدأ اصلی
PUT /zones/{zone_id}/cloud-routes/{record_id}origins:writeپورت ورودی و مقصد رکورد ابری
PUT /zones/{zone_id}/cache-policycache:writeبه‌روزرسانی کش
PUT /zones/{zone_id}/security-policysecurity:writeبه‌روزرسانی امنیت
POST /zones/{zone_id}/certificatestls:writeصدور یا تمدید SSL

نکته

endpointهای /api-keys فقط از نشست امن داشبورد و CSRF استفاده می‌کنند. خود یک API key نمی‌تواند کلید جدید بسازد یا کلید دیگری را باطل کند.

4

نمونه درخواست‌ها

جزئیات یک دامنه
curl --fail-with-body \
  -H 'Authorization: Bearer icdn_live_REPLACE_ME' \
  https://panel.iranmonitor.net/api/v1/customer/zones/ZONE_UUID
تنظیم HTTPS ورودی 8443 به HTTP مبدأ 8081
curl --fail-with-body -X PUT \
  -H 'Authorization: Bearer icdn_live_REPLACE_ME' \
  -H 'Content-Type: application/json' \
  https://panel.iranmonitor.net/api/v1/customer/zones/ZONE_UUID/cloud-routes/RECORD_UUID \
  --data '{"origin_host":"203.0.113.10","protocol":"http","port":8081,"edge_protocol":"https","edge_port":8443}'
سیاست کش
curl --fail-with-body -X PUT \
  -H 'Authorization: Bearer icdn_live_REPLACE_ME' \
  -H 'Content-Type: application/json' \
  https://panel.iranmonitor.net/api/v1/customer/zones/ZONE_UUID/cache-policy \
  --data '{"enabled":true,"browser_ttl_seconds":300,"edge_ttl_seconds":600,"stale_while_revalidate_seconds":60,"stale_if_error_seconds":3600}'
5

نکته مهم درباره API رکوردهای DNS

درخواست PUT مجموعه کامل رکوردهای قابل مدیریت دامنه را جایگزین می‌کند. ابتدا GET /zones/{zone_id} را اجرا کنید، آرایه dns.records را تغییر دهید و سپس کل مجموعه را ارسال کنید.

بدنه نمونه
{
  "owner_ref": "customer-reference",
  "records": [
    {
      "id": null,
      "name": "ws",
      "rr_type": "A",
      "value": "203.0.113.10",
      "ttl": 120,
      "priority": null,
      "proxied": true,
      "origin_protocol": "http",
      "origin_port": 8081,
      "edge_protocol": "https",
      "edge_port": 8443
    }
  ]
}

هشدار

ارسال آرایه ناقص، رکوردهای جاافتاده را حذف می‌کند. رکوردهای برگشتی را نگه دارید و فقط موارد موردنظر را تغییر دهید.

6

ساختار پاسخ و خطا

HTTPمعنا
400بدنه یا مقدار نامعتبر
401کلید وجود ندارد، اشتباه است، منقضی یا باطل شده
403کلید مجوز لازم را ندارد
404دامنه یا رکورد متعلق به این حساب پیدا نشد
409تغییر با وضعیت فعلی DNS، TLS یا edge سازگار نیست
پاسخ موفق
{
  "success": true,
  "data": {"items": []},
  "request_id": "REQUEST_UUID"
}
پاسخ خطا
{
  "success": false,
  "error": {
    "code": "forbidden",
    "message": "You do not have permission to perform this action",
    "request_id": "REQUEST_UUID",
    "details": {}
  }
}

نکته

request_id را در لاگ برنامه خود ذخیره کنید؛ این شناسه برای پیگیری دقیق خطا در پشتیبانی لازم است.

مطالعه بعدی

راهنمای قبلی

مصرف ترافیک و PAYG