|
تُرجمت هذه الوثيقة آليًا من الإنجليزية باستخدام Claude AI. ينبغي مراجعة المصطلحات المتعلقة بمجال WMO/الأرصاد الجوية من قِبل متحدث أصلي قبل الاستخدام الإنتاجي. راجع النسخة الإنجليزية الأصلية للاطلاع على النسخة المرجعية. |
1. نظرة عامة
يوفر WIS2 Downloader واجهة برمجية REST لإدارة الاشتراكات ومراقبة النظام.
-
عنوان URL الأساسي:
http://localhost:5002 -
مواصفات OpenAPI:
http://localhost:5002/openapi -
واجهة Swagger:
http://localhost:5002/swagger
2. المصادقة
لا تتطلب واجهة API حاليًا أي مصادقة. في بيئة الإنتاج، يُنصح بوضعها خلف بروكسي عكسي يوفر المصادقة.
3. API الاشتراكات
3.1. عرض الاشتراكات
يعيد جميع الاشتراكات النشطة.
GET /subscriptions
3.1.1. الاستجابة
| الحالة | الوصف |
|---|---|
200 |
نجاح — يعيد خريطة من الموضوع إلى تفاصيل الاشتراك |
503 |
Redis غير متاح |
3.1.2. مثال
curl http://localhost:5002/subscriptions
{
"cache/a/wis2/+/data/core/weather/surface-based-observations/#": {
"topic": "cache/a/wis2/+/data/core/weather/surface-based-observations/#",
"save_path": "surface-obs",
"filters": {
"accepted_media_types": ["application/bufr", "application/grib"]
}
}
}
3.2. إنشاء اشتراك
ينشئ اشتراكًا جديدًا في موضوع WIS2.
POST /subscriptions
Content-Type: application/json
3.2.1. جسم الطلب
| الحقل | النوع | مطلوب | الوصف |
|---|---|---|---|
|
string |
نعم |
نمط موضوع MQTT في WIS2. يدعم |
|
string |
لا |
مجلد فرعي تحت |
|
object |
لا |
إعداد الفلتر. |
|
array |
لا |
قائمة أنواع MIME المسموح بها. تدعم أحرف البدل (مثل |
3.2.2. الاستجابة
| الحالة | الوصف |
|---|---|
202 |
مقبول — تم إدراج الاشتراك في قائمة الانتظار للمعالجة |
400 |
طلب غير صحيح — الموضوع مفقود أو غير صالح |
503 |
الخدمة غير متاحة — فشل الاتصال بـ Redis |
3.2.3. ترويسات الاستجابة
| الترويسة | الوصف |
|---|---|
|
عنوان URL لاسترداد تفاصيل الاشتراك |
3.2.4. مثال
curl -X POST http://localhost:5002/subscriptions \
-H "Content-Type: application/json" \
-d '{
"topic": "cache/a/wis2/+/data/core/weather/surface-based-observations/#",
"target": "surface-obs",
"filters": {
"accepted_media_types": ["application/bufr", "application/grib"]
}
}'
{
"status": "accepted",
"topic": "cache/a/wis2/+/data/core/weather/surface-based-observations/#",
"target": "surface-obs"
}
3.3. الحصول على اشتراك
يعيد تفاصيل اشتراك محدد.
GET /subscriptions/{topic}
3.3.1. معاملات المسار
| المعامل | النوع | الوصف |
|---|---|---|
|
string |
موضوع WIS2 (يتطلب |
3.3.2. ترميز URL
يتطلب ترميز URL للحرف # فقط:
| الحرف | المُرمَّز | السبب |
|---|---|---|
|
|
وإلا يُفسَّر كجزء من URL |
لا تتطلب الشُّرَط المائلة (/) والـ`+` أي ترميز في المسار.
|
3.3.3. الاستجابة
| الحالة | الوصف |
|---|---|
200 |
نجاح |
400 |
موضوع غير صالح |
404 |
الاشتراك غير موجود |
503 |
Redis غير متاح |
3.3.4. مثال
curl "http://localhost:5002/subscriptions/cache/a/wis2/+/data/core/weather/surface-based-observations/%23"
{
"topic": "cache/a/wis2/+/data/core/weather/surface-based-observations/#",
"save_path": "surface-obs",
"filters": {
"accepted_media_types": ["application/bufr", "application/grib"]
}
}
3.4. حذف اشتراك
يزيل اشتراكًا.
DELETE /subscriptions/{topic}
3.4.1. معاملات المسار
| المعامل | النوع | الوصف |
|---|---|---|
|
string |
موضوع WIS2 مُرمَّز بـ URL |
3.4.2. الاستجابة
| الحالة | الوصف |
|---|---|
200 |
تم الحذف بنجاح |
400 |
موضوع غير صالح |
503 |
Redis غير متاح |
3.4.3. مثال
curl -X DELETE "http://localhost:5002/subscriptions/cache/a/wis2/+/data/core/weather/surface-based-observations/%23"
{
"status": "deleted",
"topic": "cache/a/wis2/+/data/core/weather/surface-based-observations/#"
}
4. API المراقبة
4.1. فحص الصحة
يعيد حالة صحة الخدمة.
GET /health
4.1.1. الاستجابة
يعيد دائمًا 200. تحقق من حقل status للحالة الفعلية.
| الحقل | القيم |
|---|---|
|
|
4.1.2. مثال
curl http://localhost:5002/health
{"status": "healthy"}
4.2. مقاييس Prometheus
يعيد المقاييس بصيغة نص Prometheus.
GET /metrics
4.2.1. الاستجابة
| الحالة | الوصف |
|---|---|
200 |
مقاييس بصيغة نص Prometheus |
500 |
خطأ في توليد المقاييس |
4.2.2. المقاييس المتاحة
| المقياس | النوع | التسميات | الوصف |
|---|---|---|---|
|
Counter |
status |
إجمالي الإشعارات المعالَجة |
|
Counter |
cache, media_type |
الملفات المُنزَّلة بنجاح |
|
Counter |
cache, media_type |
إجمالي البايتات المُنزَّلة |
|
Counter |
reason |
الإشعارات المتخطاة حسب السبب |
|
Counter |
cache, reason |
التنزيلات الفاشلة |
|
Gauge |
queue_name |
المهام الحالية في قائمة انتظار Celery |
4.2.3. مثال
curl http://localhost:5002/metrics
# HELP wis2downloader_downloads_total Total number of files downloaded.
# TYPE wis2downloader_downloads_total counter
wis2downloader_downloads_total{cache="example.cache.com",media_type="application/bufr"} 42.0
# HELP wis2downloader_notifications_total Total notifications processed.
# TYPE wis2downloader_notifications_total counter
wis2downloader_notifications_total{status="success"} 42.0
wis2downloader_notifications_total{status="skipped"} 5.0
4.3. مواصفة OpenAPI
تعيد مواصفة OpenAPI 3.0 بصيغة JSON.
GET /openapi
4.4. واجهة Swagger
توثيق API تفاعلي.
GET /
GET /swagger
5. استجابات الأخطاء
تتبع جميع استجابات الأخطاء هذا التنسيق:
{
"error": "Error message describing the problem"
}
5.1. رسائل الخطأ الشائعة
| الحالة | الخطأ | السبب |
|---|---|---|
400 |
"No topic provided" |
POST /subscriptions بدون حقل الموضوع |
400 |
"No topic passed" |
GET/DELETE بموضوع فارغ |
404 |
"Subscription for topic X not found" |
الموضوع غير مشترك |
503 |
"Failed to connect to Redis: …" |
Redis غير متاح |
503 |
"Failed to queue subscription command…" |
فشل Redis pub/sub |
503 |
"Failed to persist subscription…" |
فشل الكتابة في Redis |
6. مخططات البيانات
6.1. الاشتراك
{
"topic": "string (required) - WIS2 MQTT topic pattern",
"save_path": "string | null - Subdirectory for downloads",
"filters": {
"accepted_media_types": ["array of MIME type strings"]
}
}
6.2. الفلاتر
{
"accepted_media_types": [
"application/bufr",
"application/grib",
"application/x-netcdf*"
]
}
6.2.1. أنواع الوسائط المقبولة افتراضيًا
عند عدم تحديد أي فلتر، تُقبل هذه الأنواع:
[
"image/gif", "image/jpeg", "image/png", "image/tiff",
"application/pdf", "application/postscript",
"application/bufr", "application/grib",
"application/x-hdf", "application/x-hdf5",
"application/x-netcdf", "application/x-netcdf4",
"text/plain", "text/html", "text/xml", "text/csv",
"text/tab-separated-values"
]
7. مرجع أنماط الموضوعات
7.1. هيكل موضوع WIS2
{origin|cache}/a/wis2/{centre-id}/data/{data-policy}/{earth-system-domain}/{category}/...
-
origin- البيانات الأصلية من مزود البيانات -
cache- نسخة مخزنة مؤقتًا من ذاكرة تخزين عالمية (مُنصح به للموثوقية) -
{centre-id}- رمز الدولة/المنظمة، مسبوقًا برمز الدولة ISO2C (مثلde-dwd) -
{data-policy}- سياسة البيانات الموحدة لـ WMO:coreأوrecommended -
{earth-system-domain}- نطاق النظام الأرضي من سياسة البيانات الموحدة لـ WMO
7.2. أحرف البدل
| النمط | الرمز | الوصف |
|---|---|---|
مستوى واحد |
|
يطابق مستوى واحدًا تمامًا |
متعدد المستويات |
|
يطابق صفرًا أو أكثر من المستويات (يجب أن يكون في النهاية) |
7.3. أمثلة
| النمط | ما يطابقه |
|---|---|
|
جميع البيانات من Deutscher Wetterdienst |
|
ملاحظات سطحية من جميع المراكز |
|
جميع البيانات الأساسية من أي مركز |
|
جميع بيانات الطقس (أي سياسة) من أي مركز |