تخطى إلى المحتوى

API، CLI وMCP

نقدم ثلاث طرق للوصول إلى حسابك، بنفس حدود خطتك.

API

REST، من خلال خط أنابيب، سكربت أو أدواتك الخاصة. رمز تصدره وتلغيه بنفسك.

واجهة برمجة التطبيقات (API)

CLI

ملف Python بسيط، لا حاجة للتثبيت. يستخدم API. يمكن استخدامه من قبل شخص في الطرفية: عرض ما هو معطل، إضافة أو تحديث المراقبين.

عميل سطر الأوامر

MCP

عبر MCP-server يمكنك السماح لـ Claude أو أي شيء يتحدث البروتوكول بأن يقرأ حسابك ويجري تغييرات، كأنك، في محادثة.

للمساعد

رمز API الخاص بك

أنشئ واحدًا تحت API tokens في حسابك. يتم عرضه مرة واحدة، نحن نحتفظ فقط ببصمة منه، وهو يخصك وليس المنظمة: لا يمكنه فعل أكثر مما يمكنك، ويتوقف عن العمل إذا غادرت أو تغير دورك.

أرسله كـ Authorization: Bearer n404_... في كل مكالمة. الأول الذي يستحق القيام به هو /api/v1/me، والذي يجيب عن المنظمة التي يعمل الرمز المميز لصالحها، الدور الذي يحمله وأي من النطاقين لديه: الشخص الذي لديه حسابان لديه رمزان مميزان ولا توجد طريقة أخرى لمعرفة أيهما موجود في متغير البيئة.

ما هو موجود في الإصدار 1

الاتصال ما تفعله
GET /api/v1/me ما هو هذا الرمز المميز، ولأي منظمة يعمل
GET /api/v1/monitors كل المراقبين، الأقدم أولاً
POST /api/v1/monitors إنشاء واحد، وفقًا لنفس القواعد التي يلتزم بها النموذج
GET /api/v1/monitors/{id} مراقب واحد
PATCH /api/v1/monitors/{id} تغيير اسمه، عنوانه، الفاصل الزمني أو الإعدادات، أو إيقافه مؤقتًا
DELETE /api/v1/monitors/{id} حذفه، وتاريخه معه
GET /api/v1/monitors/{id}/status ما يفعله الآن، ومدة تشغيله خلال نافذة زمنية
GET /api/v1/groups كل مجموعة، مع عدد المراقبين فيها
POST /api/v1/groups أنشئ واحدة؛ الاسم الموجود يعيد المجموعة التي تحمل هذا الاسم
GET /api/v1/groups/{id} مجموعة واحدة
PATCH /api/v1/groups/{id} أعد تسميتها، أو غيّر وصفها
DELETE /api/v1/groups/{id} احذفها. مراقبوها يبقون بدون مجموعة
GET /api/v1/incidents انقطاعات، الأحدث أولاً، مفلترة حسب الحالة، المراقب أو الفترة
GET /api/v1/incidents/{id} حادث واحد، مع المجسات التي رصدته وأكدته
GET /api/v1/maintenance نوافذ الصيانة وما تغطيه
GET /api/v1/maintenance/{id} نافذة واحدة، مع المراقبين والمجموعات التي تغطيها
POST /api/v1/maintenance جدول واحدة، على ساعة مؤسستك، ليتمكن النشر من فتح نافذة قبل أن يبدأ
DELETE /api/v1/maintenance/{id} احذفها. ما كانت تغطيه يبقى مغطى
GET /api/v1/status-pages كل صفحة حالة، وما إذا كانت مفعّلة
GET /api/v1/status-pages/{id} صفحة واحدة، وما يتم نشره عليها
POST /api/v1/status-pages/{id}/monitors ضع مراقباً على الصفحة، تحت الاسم الذي يجب أن يقرأه الجمهور
DELETE /api/v1/status-pages/{id}/monitors/{id} أزله من هذه الصفحة. الصفحات الأخرى تحتفظ به
POST /api/v1/status-pages/{id}/groups ضع مجموعة على الصفحة؛ المراقبون فيها يأتون أيضاً
DELETE /api/v1/status-pages/{id}/groups/{id} أزل العنوان. مراقبوها يبقون منشورين

كل معرّف في المسار أو الهيكل هو UUID. الكتابة تحتاج إلى رمز قراءة وكتابة ودور يسمح بالكتابة.

openapi.json

المستند بصيغة OpenAPI 3.1. يصف كل استدعاء. يمكنك استخدامه لإنشاء عميل باستخدام openapi-generator، oapi-codegen.

الإصدار 1 ينمو فقط: قد يتم إضافة حقل، ولا يتم إزالة أي حقل أو إعادة كتابته، والإصدار الثاني سيكون مساراً ثانياً. لذا العميل المُنشأ يستمر في العمل، وإعادة إنشائه هي الطريقة للحصول على الجديد.

عميل، إذا كنت تريد واحداً

ملف واحد، Python 3.9 أو أحدث، بدون تبعيات. قم بتنزيله وضع رمزك في البيئة. يقوم بكل ما يقوم به API، لأن كل أمر هو استدعاء واحد للمسارات أعلاه.

nomore404.py

curl -O https://nomore404.com/api/nomore404.py
curl -s https://nomore404.com/api/nomore404.py.sha256 | sha256sum -c
chmod +x nomore404.py
export N404_TOKEN=n404_...

./nomore404.py monitors list
./nomore404.py monitors add --type https --target shop.example.com
./nomore404.py incidents --state open

الرمز يأتي من N404_TOKEN أو من ملف nomore404.env بجانب البرنامج.

للمساعد

يمكن للمساعد قراءة هذا الحساب وتعديله عبر Model Context Protocol.

عنوان واحد، لا شيء للتثبيت

الصق هذا حيث يطلب مساعدك موصلًا مخصصًا. سيرسلك هنا لتسجيل الدخول ولتحديد المنظمة التي يكون الاتصال لها، وهذا هو الإعداد بالكامل.

يتصرف كأنك: يتم قراءة دورك في كل استدعاء، لذا المساعد المتصل بواسطة شخص يمكنه القراءة فقط يمكنه القراءة فقط. يقرأ المراقبين، الانقطاعات، وقت التشغيل، نوافذ الصيانة والمجموعات، ويمكنه إضافتها وتغييرها، بما في ذلك حذف مراقب والتاريخ معه. افصله متى شئت من رموز API، حيث يتم إدراجه بجانبها.

الإخفاقات، والقوائم الطويلة

شكل خطأ واحد

الحالة تقول الفئة. الجسم يقول أي إخفاق كان، مع رمز للتفرع عليه وجملة للقراءة. الجملة قد يتم إعادة صياغتها في أي إصدار، لذا لا ينبغي تحليلها.

{
  "error": {
    "code": "monitor_not_found",
    "message": "Nothing here with that id."
  }
}

مؤشرات، وليس إزاحات

القائمة تجيب بـ items وnext_cursor. أعد المؤشر للحصول على الصفحة التالية، وتوقف عندما يكون null. الحوادث تصل أثناء قراءتك لها، والإزاحة ستعرض لك صفاً مرتين بهدوء ولن تعرض الصف التالي.

GET /api/v1/incidents?limit=50
GET /api/v1/incidents?limit=50&cursor=...

الحدود

يمكن للرمز الواحد إجراء 120 طلبًا في الدقيقة. كل إجابة تحتوي على RateLimit-Remaining وRateLimit-Reset، لذا يمكن للعميل المنضبط تنظيم نفسه بدلاً من تجاوز الحد عن طريق المحاولة. عندما يتجاوز الحساب الحد سترى استجابة 429 مع Retry-After.

أنشئ حسابًا مجانيًا