Skip to content
SEO Optimizer is live, Audit on page SEO and AI-search readiness. Try it free

مرجع واجهة API

الخصائص

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

تُنشأ الخصائص في التطبيق من الخصائص. تقرؤها الواجهة فقط: يعمل أي مفتاح، بما في ذلك مفاتيح القراءة فقط. يرى مفتاح الفريق خصائص الفريق.

عرض الخصائص

GET/api/v1/properties

كل خصائص فريق المفتاح (أو مالكه) مع الدرجات لكل أداة.

الرد

json
{
  "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" }
      ]
    }
  ]
}

جلب خاصية

GET/api/v1/properties/{id}

خاصية واحدة مع اتجاه 30 يومًا والمشكلات الموحّدة والخطوات التالية.

معاملات المسار

idstringمطلوبمعرّف الخاصية من القائمة.

الرد

json
{
  "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"