مرجع واجهة API
الخصائص
تجمع الخاصية مواقع منتج واحد ومستودعاته. تعيد هذه المسارات درجتها المجمعة، ودرجة كل أداة، ونتائج كل الأدوات في قائمة واحدة، وما يجب فعله بعد ذلك.
عرض الخصائص
/api/v1/propertiesكل خصائص فريق المفتاح (أو مالكه) مع الدرجات لكل أداة.
الرد
{
"properties": [
{
"id": "cm9prop...",
"name": "Acme Store",
"category": "ecommerce",
"client": null,
"score": 76,
"lastScannedAt": "2026-11-12T09:30:00.000Z",
"openTasks": 4,
"targets": [
{ "target": "shop.acme.com", "kind": "site" },
{ "target": "acme/storefront", "kind": "repo" }
],
"tools": [
{ "tool": "audit", "score": 86, "change": 3, "scanned": 1, "of": 1, "at": "2026-11-12T09:30:00.000Z" },
{ "tool": "security", "score": 54, "change": -12, "scanned": 1, "of": 1, "at": "2026-11-10T08:00:00.000Z" }
]
}
]
}جلب خاصية
/api/v1/properties/{id}خاصية واحدة مع اتجاه 30 يومًا والمشكلات الموحّدة والخطوات التالية.
معاملات المسار
| الحقل | الوصف |
|---|---|
idstringمطلوب | معرّف الخاصية من القائمة. |
الرد
{
"id": "cm9prop...",
"name": "Acme Store",
"score": 76,
"trend": [{ "day": "2026-11-12", "score": 76 }],
"issues": [
{
"title": "Missing Content-Security-Policy",
"severity": "high",
"tools": ["security", "audit"],
"targets": ["shop.acme.com"],
"places": 1,
"task": { "id": "cm9task...", "status": "open", "assignee": "Sam Lee" },
"url": "https://www.scanverra.com/security-scan/cm9scan...?finding=..."
}
],
"nextSteps": [
{ "kind": "secretsLive", "tool": "security", "target": "shop.acme.com", "url": "https://www.scanverra.com/security-scan?url=..." }
],
"packs": [
{
"ref": "checkout-security",
"name": "Checkout security",
"official": true,
"pass": false,
"passed": 5,
"total": 7,
"rules": [
{ "kind": "minScore", "tool": "security", "expected": 85, "actual": 50, "pass": false }
]
}
]
}الحقول
| الحقل | الوصف |
|---|---|
scorenumber | nullاختياري | الصحة المجمعة: متوسط كل أداة عبر أهداف الخاصية، ثم متوسط الأدوات بوزن متساوٍ. القيمة null قبل أي فحص. |
tools[]object[]اختياري | عنصر لكل أداة فحصت الخاصية: الدرجة، والتغيّر منذ الفحص السابق، وعدد الأهداف التي فحصتها (scanned من of)، ووقت الفحص. |
issues[]object[]اختياري | نتائج أحدث فحوصات كل الأدوات بعد دمجها: المشكلة نفسها من أداتين عنصر واحد، مع الأداتين في tools وعدد مرات ظهورها في places. |
issues[].taskobject | nullاختياري | مهمة المعالجة المفتوحة لهذه المشكلة إن أُسندت إلى أحد. |
nextSteps[]object[]اختياري | ما يجب فحصه أو إصلاحه بعد ذلك، الأكثر إلحاحًا أولًا (الأنواع بالأسفل). يفتح url الصفحة المناسبة والهدف معبأ. |
packs[]object[]اختياري | حزم السياسات المثبتة على الخاصية (من السوق)، وكل منها مُتحقق منه وفق أحدث الفحوصات: pass، وعدد القواعد الناجحة (passed من total)، وكل قاعدة بحدها (expected) وقيمتها الحالية (actual). أسماء الحزم الرسمية بالإنجليزية. |
trend[]object[]اختياري | الدرجة المجمعة لكل يوم خلال آخر 30 يومًا. |
أنواع الخطوات التالية
تقرأ nextSteps عبر كل الأدوات، فتشير نتيجة في أداة إلى الفحص أو الإصلاح الذي تتيحه أداة أخرى.
secretsLiveيسرّب المستودع سرًا: تحقق مما يكشفه الموقع المنشور.
regressionانخفضت درجة أداة 10 نقاط أو أكثر منذ فحصها السابق.
run360لم تفحص معظم الأدوات موقعًا بعد.
headersInCodeتنقص الموقع المنشور ترويسات أمان ومستودعه ضمن الخاصية.
neverScannedأداة لم تعمل أبدًا على هدف.
staleمضى على أحدث فحص لهدف أكثر من 30 يومًا.
linkRepoللخاصية مواقع دون أي مستودع.
addSiteللخاصية مستودعات دون أي موقع.
أمثلة
curl https://www.scanverra.com/api/v1/properties \ -H "X-API-Key: $SCANVERRA_API_KEY"