مكتبة مرجع OpenAPI
الهدف
هذا الدليل هو عقد الاكتشاف لحزم مرجعية مدعومة بـ OpenAPI لبوابة القرار. إنه يجيب، عن كل حزمة:
- أين هو ملف OpenAPI القياسي؟
- هل هو مؤلف يدويًا أم مستمد من مصدر أعلى؟
- أي نظام اختبار يفرض السلوك؟
- أين توجد وثائق واجهة برمجة التطبيقات للمستخدمين البشر؟
العقد القياسي
المصدر القابل للقراءة آليًا هو:
references/openapi/reference_library.json
تم التحقق منه بواسطة المخطط:
references/openapi/reference_library.schema.json
يجب أن تمر كل حزمة مدرجة هناك بفحوصات البوابة الصعبة في:
system-tests/src/suites/openapi_reference_library.rs
كتالوج الحزم الحالي
| Pack ID | Domain | Canonical OpenAPI | Mirrors | System Test | Upstream Docs |
|---|---|---|---|---|---|
courtlistener-legal-citation-v1 | التحقق من الاقتباسات القانونية | references/openapi/courtlistener-legal-citation-v1/openapi.json | system-tests/tests/fixtures/legal_citation/courtlistener_reference_openapi.json و examples/agentic/legal-citation-verification/courtlistener_reference_openapi.json | legal_citation_reference_projection_first_end_to_end في system-tests/src/suites/legal_citation.rs | نظرة عامة على REST، بحث الاقتباس، جذر API (v4) |
بيانات التغطية والتنفيذ
كل إدخال حزمة الآن يعلن:
execution_modes: مجموعة مطلوبة منoffline_fixtureو/أوlive_opt_in.coverage: required deterministic counts:العملياتحالات_مزيفةحالات_معروفة_جيدةحالات_غامضةحالات_غير_صحيحة
live_mode: required env + CI policy contract:مفعل_بواسطة_البيئةrequired_envoptional_envci_policy(manual_onlyأوdisabled)
بالنسبة لـ CourtListener، required_env فارغ عمدًا لأن مصادقة وقت التشغيل تستخدم secret://courtlistener/api_token المسبق التوفير من مخزن الأسرار المشفر. يتم استخدام COURTLISTENER_API_TOKEN فقط بواسطة أدوات التقاط التهيئة اليدوية، وليس أثناء تنفيذ الدخان المباشر في وقت التشغيل. قم بتخزين قيمة الرمز الخام؛ حيث تطبق بيانات التعريف الخاصة بتشغيل الوقت المطلوبة بادئة Token على المصادقة الصادرة. عندما يكون مفتاح الخزنة غير متاح/رأسياً، قم بتعيين DECISION_GATE_SECRETS_PASSPHRASE قبل أوامر secrets init/put/list حتى يمكن فتح المخزن المشفر.
قاعدة تأليف الإسقاط (معيارية)
يتم تقييم بيانات التعريف الخاصة بالإسقاط على مخطط الاستجابة الموحد/المحلول. بيانات التعريف الخاصة بالإسقاط على مستوى المكونات المشار إليها عبر $ref هي من الدرجة الأولى وموضوعة في الاعتبار.
لا تقم بإدراج مخططات استجابة مكررة فقط لتلبية فحوصات المستورد. احتفظ بموقع عرض قياسي واحد (عادةً هو مخطط المكون المرجعي) وكرر ذلك بايتًا مقابل بايت عبر نسخ الحزمة القياسية/النظامية/المثال.
سياسة أصل المصدر
لكل حزمة، يجب أن يعلن كتالوج provenance بوضوح عن الأصل:
hand_authored_fixtureupstream_openapi_snapshotgenerated_from_upstream_docs
تستخدم CourtListener حاليًا hand_authored_fixture.
تغطية البوابة الصعبة
تفرض CI القياسية بوابات حتمية غير متصلة بالإنترنت:
- كتالوج JSON صالح وفقًا للمخطط.
- جميع المسارات المفهرسة موجودة.
- Canonical and mirrored OpenAPI artifacts are byte-equal (including
operation_fixture_corpus.jsonوملفات بيان الالتقاط المباشر). - كتالوج
system_test_nameموجود فيDocs/generated/testing/proof_catalog.json. - كتالوج
docs_pathsموجود فيDocs/verification/registry.toml. - عناوين URL العلوية هي
https://مطلقة وكاملة البيانات الوصفية. - بيانات التغطية والتنفيذ/وضع البث المباشر صالحة هيكليًا.
لا يتم تشغيل أي فحوصات للوصول إلى الشبكة الحية في CI القياسي.
قائمة التحقق للحزمة الجديدة (جاهز لـ PubMed/arXiv)
استخدم هذه القائمة عند إضافة DG + PubMed، DG + arXiv، أو ما شابه:
- Create canonical directory:
المراجع/openapi/<pack-id>/ - Add canonical files:
openapi.jsontyped_import_payload_example.jsoncitation_cases.json(أو مجموعة بيانات حتمية مكافئة للنطاق)README.md
- Add mirror copies under:
system-tests/tests/fixtures/<domain_pack>/examples/agentic/<domain-pack>/
- أضف/مدد مجموعة اختبارات النظام تحت
system-tests/src/suites/. - تسجيل مجموعة الاختبارات في
system-tests/tests/providers.rs. - تحديث
crates/decision-gate-test-contracts/src/source_catalog.jsonوsystem-tests/TEST_MATRIX.md. - أضف إدخال الحزمة إلى
references/openapi/reference_library.json. - تأكد من تسجيل
docs_pathsفيDocs/verification/registry.toml. - تضمين روابط ماركداون المسماة إلى وثائق API في README الحزمة.
- أعلن عن بيانات التعريف
execution_modesوcoverageوlive_mode.
قالب البيانات الوصفية
{
"pack_id": "<kebab-case-pack-id>",
"version": "v1",
"domain": "<domain>",
"status": "active",
"provenance": "hand_authored_fixture",
"canonical_openapi_path": "references/openapi/<pack-id>/openapi.json",
"system_fixture_openapi_path": "system-tests/tests/fixtures/<pack>/openapi.json",
"example_openapi_path": "examples/agentic/<pack>/openapi.json",
"system_suite_path": "system-tests/src/suites/<suite>.rs",
"system_test_name": "<exact_test_name>",
"docs_paths": [
"/docs/decision-gate/guides/openapi-reference-library"
],
"upstream_docs": [
{
"label": "<human label>",
"url": "https://...",
"kind": "rest_overview",
"verified_on_utc": "2026-02-21"
}
],
"execution_modes": [
"offline_fixture",
"live_opt_in"
],
"coverage": {
"operations": 4,
"fabricated_cases": 6,
"known_good_cases": 3,
"ambiguous_cases": 1,
"invalid_cases": 1
},
"live_mode": {
"enabled_by_env": "COURTLISTENER_LIVE",
"required_env": [],
"optional_env": [
"COURTLISTENER_BASE_URL",
"COURTLISTENER_LIVE_CASE_LIMIT"
],
"ci_policy": "manual_only"
},
"notes": "<deterministic note>"
}