المطورون
البيانات خلف اللوحات، لبرمجياتك الخاصة.
كل سجل وسلسلة ورقم محسوب تقرؤه اللوحات يُقدَّم من هذا النطاق بصيغة JSON، وعبر بروتوكول سياق النموذج لمساعدي الذكاء الاصطناعي. لا حاجة إلى مفتاح. ويضيف المفتاح المجاني حصة يومية خاصة به وعدًّا لما استُخدم منها.
نظرة عامة
ما تقدّمه الواجهة.
الصفوف نفسها التي ترسمها اللوحات، مع الجهة الناشرة والوحدة والفترة في كل سلسلة، والمصدر في كل رقم محسوب.
- السجلات الرسمية
- سجل مشاريع الطاقة المتجددة لدى المشتري الرئيس، ومحفظة مشاريع المياه لدى الشركة السعودية للشراكات، وفهرس البيانات المفتوحة لهيئة المياه السعودية، تُحدَّث أسبوعيًا، ويمكن إعادة بناء كل منها لتاريخ سابق من سجل التغيّرات.
- السلاسل المنسوخة
- 30 سلسلة من بوابة بيانات الطاقة لدى كابسارك ومن الجهات الناشرة المذكورة مع كل منها: الأحمال والقدرات والتعرفات والتحلية وتوازن النفط والأسعار وغيرها، وكل نقطة بفترتها ومنطقتها ووحدتها.
- سجل التغيّرات والجدول
- كل تغيّر على مستوى الصف في سجل أو سلسلة مع القيمة قبله وبعده، وما يُتوقَّع تحديثه تاليًا.
- مخرجات النماذج
- ميزان القدرات مقابل مستهدف 2030، ونموذج توازن النفط وفق سيناريوهات مسمّاة، والأسبوع المقبل للأسطول الشمسي. وتنص الاستجابة على الأرقام المنمذجة.
- المنشورات
- الموجز الأسبوعي بعنوان دائم لكل أسبوع، ومكتبة التقارير مع تعريفات كل تقرير ومصادره.
دون مفتاح
مع مفتاح مجاني
المصادقة
المفتاح اختياري، ويُرسَل في إحدى ترويستين.
أنشئ مفتاحًا من صفحة حسابك. يظهر المفتاح مرة واحدة عند إنشائه، فاحفظه حيث تقرأ برمجياتك الأسرار، وألغه من الصفحة نفسها إذا انكشف.
إحدى الترويستين
Authorization: Bearer rv_live_… X-API-Key: rv_live_…
المفتاح المُرسَل يجب أن يكون صالحًا
يُجاب الطلب الذي يحمل مفتاحًا برمز 401 إذا كان المفتاح مشوّه الصيغة أو غير معروف أو ملغًى، بدل تقديمه دون المفتاح. ويذكر نص الاستجابة السبب. احذف الترويسة للعودة إلى الحد المتاح دون مفتاح.
احفظ المفاتيح على الخادم. فالمفتاح المكتوب في شيفرة المتصفح يطّلع عليه كل من يفتح الصفحة.
حدود الطلبات
الحصص بحسب الطالب.
تحافظ الحدود على إتاحة الخدمة لكل طالب. تُحدّ الطلبات دون مفتاح لكل عنوان على مدى عشر دقائق، وتُحدّ طلبات المفتاح لكل يوم بالتوقيت العالمي.
| الطالب | النقاط | الحصة | أساس العدّ |
|---|---|---|---|
| دون مفتاح | /api/status, /api/data/*, /api/brief*, /api/reports* | 300 طلب كل 10 دقائق | العنوان، لكل نسخة من الخادم |
| دون مفتاح | /api/search | 240 طلب كل 10 دقائق | العنوان، لكل نسخة من الخادم |
| دون مفتاح | /api/mcp | 300 طلب كل 10 دقائق | العنوان، لكل نسخة من الخادم |
| مفتاح مجاني | كل النقاط المحسوبة | 5,000 طلب لكل يوم بالتوقيت العالمي | المفتاح، عبر كل النسخ |
| مفتاح مرخّص | كل النقاط المحسوبة | يحددها الترخيص | المفتاح، عبر كل النسخ |
كل استجابة محسوبة تبيّن موقعك من الحصة
- X-RateLimit-Limit
- الحصة في الفترة الحالية.
- X-RateLimit-Remaining
- الطلبات المتبقية بعد هذا الطلب.
- X-RateLimit-Reset
- موعد بدء الفترة من جديد بثواني حقبة يونكس. وللمفتاح: منتصف الليل التالي بالتوقيت العالمي.
- Retry-After
- مع الرمز 429 فقط: الثواني اللازمة قبل إعادة المحاولة.
عند تجاوز الحد
تكون الإجابة برمز 429 مع نص JSON يسمّي الحد: نطاقه وفئته والحصة والفترة وموعد بدئها من جديد.
HTTP/1.1 429 Too Many Requests
{
"ok": false,
"error": "tooManyRequests",
"message": "This key has made its 5,000 requests for the day. The count starts again at 00:00 UTC (2026-09-25T00:00:00.000Z).",
"limit": {
"scope": "key",
"tier": "free",
"requests": 5000,
"window": "day",
"windowSeconds": 86400,
"resetAt": "2026-09-25T00:00:00.000Z"
},
"retryAfter": 3600,
"docs": "https://renewablevision.com.sa/en/developers#limits"
}قد تُقدَّم الاستجابات دون مفتاح من ذاكرة الحافة المؤقتة، فلا تُعَدّ ولا تُحدَّث ترويساتها. أما استجابات المفتاح فتُعلَّم خاصةً وتصل دائمًا إلى الخادم الأصلي، فيُعَدّ كل منها.
النقاط
كل نقطة عامة، من وثيقة OpenAPI.
يُعرض هذا المرجع من وثيقة OpenAPI 3.1 نفسها التي تقرؤها أدوات توليد الشيفرة. استخدمها لتوليد عميل برمجي، أو استوردها في أداة واجهات برمجية.
وثيقة OpenAPI 3.1 · https://renewablevision.com.sa/api/openapi.json
البيانات
| النقطة | ما تُعيده | المعاملات | حقول الاستجابة |
|---|---|---|---|
GET /api/statusمحسوبة | حداثة كل سلسلة وسجل منسوخ |
| checkedAt, sources, stale, degraded, series, registers, summary, feeds, endpoints, historySince, method حقول الاستشهاد: series[].publisher, registers[].publisher, checkedAt |
GET /api/data/portal/{series}محسوبة | سلسلة منسوخة واحدة: بياناتها الوصفية وكل نقاطها |
| series, points حقول الاستشهاد: series.publisher, series.source_url, series.licence, series.last_success_at |
GET /api/data/registers/{register}محسوبة | سجل رسمي كما نُسخ آخر مرة، أو كما كان في يوم سابق |
| register, rows, vintage حقول الاستشهاد: register.publisher, register.source_url, register.last_success_at, vintage.asOf |
GET /api/data/projects/{id}محسوبة | مشروع واحد من متتبع الطاقة المتجددة السعودية، كما تعرضه صفحته |
| — حقول الاستشهاد: source, asOf, citation, note |
GET /api/data/companies/{company}محسوبة | مطوّر أو مساهم واحد، وكل مشروع مرصود يرد فيه اسمه |
| — حقول الاستشهاد: source, asOf, citation, note |
GET /api/data/changesمحسوبة | سجل التغيّرات: كل تغيّر على مستوى الصف، الأحدث أولًا |
| count, changes حقول الاستشهاد: changes[].sourceId, changes[].occurredOn |
GET /api/data/dueمحسوبة | ما يُتوقَّع تحديثه تاليًا، وما تأخر |
| asOf, windowDays, overdue, items, note حقول الاستشهاد: items[].publisher, asOf |
GET /api/data/power-balanceمحسوبة | القدرة التشغيلية مقابل المشاريع المتعاقد عليها ومستهدف 2030 |
| month, operational, construction, tendered, trackedMw, target, system, reconciliation, stageOverrides, change, comparedWith, vintage, sources, method حقول الاستشهاد: sources[], method, month, vintage.computedAt |
GET /api/data/oil-modelمحسوبة | نموذج توازن النفط على المدخلات الحية |
| asOf, scenario, levers, sources, context, calibration, summary, months, method حقول الاستشهاد: sources[], method, asOf |
GET /api/data/fleet-outlookمحسوبة | الأسبوع المقبل للأسطول الشمسي السعودي المتتبَّع | لا شيء | asOf, stale, days, plants, capacityMw, expectedGwh, normalGwh, deltaPct, daily, heat, sources, method حقول الاستشهاد: sources[], method, asOf |
المنشورات
| النقطة | ما تُعيده | المعاملات | حقول الاستجابة |
|---|---|---|---|
GET /api/briefمحسوبة | كل موجز أسبوعي منشور، الأحدث أولًا |
| count, briefs حقول الاستشهاد: briefs[].url, briefs[].issued |
GET /api/brief/latestمحسوبة | الموجز الأسبوعي الحالي |
| week, issued, locale, subject, preheader, blocks, social, summary, url, api حقول الاستشهاد: url, issued, week |
GET /api/brief/{week}محسوبة | موجز أسبوع واحد بعنوانه الدائم |
| week, issued, locale, subject, preheader, blocks, social, summary, url, api حقول الاستشهاد: url, issued, week |
GET /api/reportsمحسوبة | كل تقرير منشور، الأحدث إصدارًا أولًا |
| count, reports حقول الاستشهاد: reports[].url, reports[].edition, reports[].contentUpdated |
GET /api/reports/{id}محسوبة | تقرير واحد: النص التعريفي والتعريفات المقتبسة والمصادر وصفحات المعاينة |
| report حقول الاستشهاد: report.url, report.sources, report.definitions, report.contentUpdated |
البحث
| النقطة | ما تُعيده | المعاملات | حقول الاستجابة |
|---|---|---|---|
GET /api/searchمحسوبة | نتائج مرتبة عبر مجموعات البيانات والسلاسل والتحليلات والمشاريع |
| groups حقول الاستشهاد: groups[].items[].href |
MCP
| النقطة | ما تُعيده | المعاملات | حقول الاستجابة |
|---|---|---|---|
POST /api/mcpمحسوبة | بروتوكول سياق النموذج على نقل Streamable HTTP |
| — حقول الاستشهاد: result.structuredContent.source, result.structuredContent.asOf, result.structuredContent.citation |
GET /api/mcpغير محسوبة | لا يُفتح بث أحداث من الخادم | لا شيء | — |
DELETE /api/mcpغير محسوبة | إنهاء الجلسة | لا شيء | — |
البطاقات والخصائص
| النقطة | ما تُعيده | المعاملات | حقول الاستجابة |
|---|---|---|---|
GET /api/cards/{card}غير محسوبة | بطاقة مشاركة بمقاس 1200 × 630 بالأرقام الحالية |
| — |
GET /api/propertiesغير محسوبة | خصائص ديناميكا حرارية من معادلات الحالة المرجعية في CoolProp |
| — |
نقاط المطورين
| النقطة | ما تُعيده | المعاملات | حقول الاستجابة |
|---|---|---|---|
GET /api/openapi.jsonغير محسوبة | وثيقة OpenAPI 3.1 لكل النقاط العامة | لا شيء | — |
POST /api/licence-requestsغير محسوبة | طلب ترخيص بيانات |
| message |
نماذج الموقع
تخدم نماذج الموقع صفحات هذا الموقع نفسه، وتُدرج هنا لتكتمل الوثيقة. ولا تقبل مفتاحًا، وليست جزءًا من واجهة البيانات.
| النقطة | ما تُعيده | المعاملات | حقول الاستجابة |
|---|---|---|---|
POST /api/privacy-requestsغير محسوبة | تقديم طلب وفق نظام حماية البيانات الشخصية |
| message |
POST /api/inquiriesغير محسوبة | نموذج التواصل | لا شيء | message |
POST /api/subscribeغير محسوبة | الانضمام إلى قائمة مواد RV Plus وRV X بتأكيد مزدوج | لا شيء | message |
GET /api/subscribe/confirmغير محسوبة | رابط التأكيد: ينقل الزائر إلى صفحة التأكيد | لا شيء | — |
POST /api/subscribe/confirmغير محسوبة | تأكيد الاشتراك من صفحة التأكيد | لا شيء | — |
GET /api/subscribe/unsubscribeغير محسوبة | رابط إلغاء الاشتراك: يفتح الصفحة التي تؤكد الإزالة | لا شيء | — |
POST /api/subscribe/unsubscribeغير محسوبة | مغادرة القائمة من الصفحة، أو بنقرة واحدة من برنامج البريد | لا شيء | message |
POST /api/experts/applyغير محسوبة | التقدم للانضمام إلى لجنة الخبراء | لا شيء | message |
POST /api/experts/briefsغير محسوبة | طلب رأي مكتوب من لجنة الخبراء | لا شيء | message |
POST /api/askغير محسوبة | RV Analyst: إجابة عن سؤال من بيانات هذا الموقع (للأعضاء) | لا شيء | — |
GET /api/materials/{id}غير محسوبة | ملف للأعضاء: تقرير بصيغة PDF أو حزمة بيانات |
| — |
أمثلة برمجية
طلب واحد بثلاث طرق.
يجلب كل مثال أحدث موجز أسبوعي باستخدام مفتاح ويطبع ترويسات حدود الطلبات. احذف سطر المفتاح لإرسال الطلب دون مفتاح.
curl
curl -i https://renewablevision.com.sa/api/brief/latest \ -H "Authorization: Bearer $RV_API_KEY"
Python
import os
import requests
res = requests.get(
"https://renewablevision.com.sa/api/brief/latest",
headers={"Authorization": f"Bearer {os.environ['RV_API_KEY']}"},
timeout=30,
)
res.raise_for_status()
brief = res.json()
print(brief["subject"], brief["url"])
print(res.headers["X-RateLimit-Remaining"], "requests left today")JavaScript
const res = await fetch('https://renewablevision.com.sa/api/brief/latest', {
headers: { Authorization: `Bearer ${process.env.RV_API_KEY}` }
});
if (res.status === 429) {
const { limit, retryAfter } = await res.json();
throw new Error(`Limit of ${limit.requests} per ${limit.window}; retry in ${retryAfter} s`);
}
const brief = await res.json();
console.log(brief.subject, brief.url);
console.log(res.headers.get('X-RateLimit-Remaining'), 'requests left today');MCP
اربط مساعدًا ذكيًا.
البيانات نفسها متاحة عبر خادم بروتوكول سياق النموذج على نقل Streamable HTTP. ويحتاج المساعد الذي يقبل خادم MCP بعيدًا إلى العنوان فقط. وتحمل كل نتيجة الجهة الناشرة وتاريخ سريان أرقامها والصفحة التي يُستشهد بها.
POST https://renewablevision.com.sa/api/mcp
إعداد العميل
{
"mcpServers": {
"renewable-vision": {
"type": "http",
"url": "https://renewablevision.com.sa/api/mcp",
"headers": {
"Authorization": "Bearer rv_live_…"
}
}
}
}لاحتساب طلبات المساعد على مفتاحك، أضف المفتاح في ترويسة Authorization ضمن إعداد العميل. ودونه تجيب النقطة وفق الحد المتاح لكل عنوان.
سجل الاستكشاف: /.well-known/mcp/server.json
ذكر المصدر
اذكر الجهة الناشرة ورينيوبل فيجن.
لكل رقم مصدران يُذكران: الجهة التي نشرته، وهذه المنصة التي جمعته أو نسخته أو حسبته.
- اذكر الجهة الناشرة الأصلية الواردة في الاستجابة، ورينيوبل فيجن، مع الصفحة التي تشير إليها الاستجابة.
- اذكر تاريخ سريان الرقم كما يرد في الاستجابة، لا تاريخ جلبه.
- أبقِ الرقم المنمذج موصوفًا بأنه منمذج، إذ تبيّن الاستجابة الأرقام المنمذجة.
- تحتفظ سلاسل الأطراف الثالثة بتراخيص جهاتها الناشرة. وحيث تقصر شروط المصدر الاستخدام على الأغراض غير التجارية، تسري الشروط نفسها على أي إعادة استخدام.
- تجميعات رينيوبل فيجن مرخّصة بموجب CC BY-NC 4.0 ما لم ينص ترخيص على خلاف ذلك.
سجل الإصدارات
ما تغيّر، ومتى.
تُضاف النقاط دون تغيير ما نُشر منها. ويُدرج هنا كل تغيير قد يلاحظه المستخدم.
القيود نفسها، مع سائر تغييرات المنصة، في سجل التحديثات
| التاريخ | التغيير | النقاط |
|---|---|---|
| 2026-09-24 | تضيف نقطة الحالة وتيرة كل مصدر وحالته وآخر خطأ سُجّل له، وفحصًا ذاتيًا لكل نقطة وصول عامة، وسجل الفحوص المحفوظة حيثما وُجد. وتُقدَّم طلبات الخصوصية من النموذج المتاح في الموقع. | /api/status, /api/privacy-requests |
| 2026-09-24 | مفاتيح API اختيارية بحصة يومية وعدّاد للاستخدام، وترويسات حدود الطلبات في كل استجابة محسوبة، ووثيقة OpenAPI 3.1، وطلبات تراخيص البيانات. | /api/openapi.json, /api/licence-requests |
| 2026-09-24 | مشروع واحد من المتتبّع وشركة واحدة بصيغة JSON، مع حقول الإسناد. | /api/data/projects/{id}, /api/data/companies/{company} |
| 2026-09-22 | نقطة بروتوكول سياق النموذج. | /api/mcp |
| 2026-09-22 | مكتبة التقارير بصيغة JSON. | /api/reports, /api/reports/{id} |
| 2026-09-21 | الموجز الأسبوعي بصيغة JSON، بعنوان دائم لكل أسبوع. | /api/brief, /api/brief/latest, /api/brief/{week} |
| 2026-09-20 | سجل التغيّرات، وجدول ما يُتوقَّع تحديثه، وميزان القدرات، وتوقعات إنتاج الأسطول الشمسي. | /api/data/changes, /api/data/due, /api/data/power-balance, /api/data/fleet-outlook |
| 2026-09-20 | المعامل asOf: السجل كما كان في نهاية يوم سابق، وميزان القدرات كما حُفظ لشهر سابق. | /api/data/registers/{register}, /api/data/power-balance |
| 2026-09-14 | نموذج توازن النفط، مع سيناريوهات مسمّاة وإمكانية ضبط كل رافعة عبر الاستعلام. | /api/data/oil-model |
| 2026-09-13 | حداثة البيانات، والبحث في الموقع، وبطاقات المشاركة. | /api/status, /api/search, /api/cards/{card} |
| 2026-09-12 | السلاسل المنسوخة من بوابة بيانات الطاقة لدى كابسارك، والسجلات الرسمية الثلاثة. | /api/data/portal/{series}, /api/data/registers/{register} |
هل تحتاج إلى استخدام البيانات تجاريًا أو إعادة توزيعها؟
تُرخَّص الأغراض البحثية والاستخدام التجاري الداخلي وإعادة التوزيع كلٌّ على حدة، ولكل منها نطاقه وطريقة ذكر المصدر. ولا يتجاوز الترخيص شروط المصدر الأصلي، وتبيّن صفحة التراخيص مجموعات البيانات التي تقصر مصادرها الاستخدام على الأغراض غير التجارية.