Документация/API и Webhook'и/Соответствие

Соответствие

Два параллельных представления покрытия над теми же учебными данными. Представление OWASP оценивает Вашу рабочую силу по четырём семействам OWASP Top 10 (Web, API, Mobile, Client). Регуляторное представление оценивает то же обучение по внешним стандартам (PCI DSS, ISO/IEC 27001, SOC 2), сопоставляя каждый контроль с его основными CWE. Требуемая область: compliance:read.

Конечные точки

МетодПутьОбласть действияНазначение
GET/api/public/v1/compliance/summarycompliance:readСводка покрытия OWASP по всем четырём фреймворкам.
GET/api/public/v1/compliance/frameworks/{'{'}frameworkId{'}'}compliance:readРазбивка по модулям для одного фреймворка OWASP.
GET/api/public/v1/compliance/regulatory/summarycompliance:readСводка покрытия для регуляторных фреймворков.
GET/api/public/v1/compliance/regulatory/{'{'}frameworkId{'}'}compliance:readРазбивка по контролям для одного регуляторного фреймворка.

Как рассчитывается покрытие

Подходящий пользователь — это любой активный участник организации, чья роль не org_admin. Пользователь считается обучен по теме, если у него есть хотя бы одна практическая попытка с оценкой ≥ passingScore (70) внутри последних windowDays (365). Элемент риска (модуль OWASP или регуляторный контроль) переключается в статус covered, как только процент подходящих пользователей, обученных по нему, пересекает coverageThresholdPercent Вашей организации — по умолчанию 80, настраивается через UI администратора между 50 и 100.

Идентификаторы фреймворков

ТипИдентификаторЗаголовок
OWASPwebOWASP Top 10 (Web)
OWASPapiOWASP API Security Top 10
OWASPmobileOWASP Mobile Top 10
OWASPclientOWASP Client-Side Top 10
Регуляторныйpci-dssPCI DSS v4.0 — Требование 6.2.4
Регуляторныйiso-27001ISO/IEC 27001:2022 — Annex A безопасная разработка
Регуляторныйsoc-2SOC 2 — Trust Services Criteria (TSC 2017)

Сводка OWASP

Одна запись на фреймворк OWASP. Используйте это для плиток панели.

GET /api/public/v1/compliance/summary
Authorization: Bearer scs_live_…

Ответ

{
  "frameworks": [
    {
      "frameworkId": "web",
      "title": "OWASP Top 10 (Web)",
      "totalRiskItems": 10,
      "coveredRiskItems": 7,
      "partialRiskItems": 2,
      "noActivityRiskItems": 1,
      "noContentRiskItems": 0,
      "eligibleUsers": 142,
      "trainedUsers": 118,
      "coveragePercent": 83.1,
      "avgScore": 86.4
    },
    {
      "frameworkId": "api",
      "title": "OWASP API Security Top 10",
      "totalRiskItems": 10,
      "coveredRiskItems": 5,
      "partialRiskItems": 3,
      "noActivityRiskItems": 2,
      "noContentRiskItems": 0,
      "eligibleUsers": 142,
      "trainedUsers": 91,
      "coveragePercent": 64.1,
      "avgScore": 79.2
    }
  ],
  "passingScore": 70,
  "coverageThresholdPercent": 80,
  "windowDays": 365,
  "generatedAt": "2026-05-29T13:42:11.318Z"
}
  • covered + partial + noActivity + noContent = totalRiskItems.
  • noContent означает, что мы ещё не выпустили обучение для этого элемента риска — относитесь к нему как к известному пробелу, а не сбою рабочей силы.
  • avgScore — это среднее проходных попыток в пределах окна, выраженное по шкале 0–100.

Пример

curl -sS \
  -H "Authorization: Bearer $SCH_API_KEY" \
  https://api.limeplate.com/api/public/v1/compliance/summary

Детали фреймворка OWASP

Углубляется в один фреймворк — возвращает элементы риска по модулям, каждый с составляющими темами и CWE. Возвращает 404 framework_not_found для любого идентификатора вне web | api | mobile | client.

GET /api/public/v1/compliance/frameworks/web
Authorization: Bearer scs_live_…

Ответ

{
  "frameworkId": "web",
  "title": "OWASP Top 10 (Web)",
  "summary": {
    "frameworkId": "web",
    "title": "OWASP Top 10 (Web)",
    "totalRiskItems": 10,
    "coveredRiskItems": 7,
    "partialRiskItems": 2,
    "noActivityRiskItems": 1,
    "noContentRiskItems": 0,
    "eligibleUsers": 142,
    "trainedUsers": 118,
    "coveragePercent": 83.1,
    "avgScore": 86.4
  },
  "riskItems": [
    {
      "moduleId": "a01-broken-access-control",
      "title": "A01: Broken Access Control",
      "status": "covered",
      "topicsCount": 4,
      "eligibleUsers": 142,
      "trainedUsers": 124,
      "coveragePercent": 87.3,
      "avgScore": 88.1,
      "topics": [
        {
          "topicId": "idor",
          "title": "Insecure Direct Object References",
          "trainedUsers": 121,
          "totalAttempts": 318,
          "avgScore": 87.6,
          "cwes": ["CWE-639", "CWE-285"]
        }
      ]
    }
  ],
  "passingScore": 70,
  "coverageThresholdPercent": 80,
  "windowDays": 365,
  "generatedAt": "2026-05-29T13:42:11.318Z"
}
  • status — один из covered, partial, no-activity, no-content.
  • totalAttempts включает неудачные попытки в пределах окна; trainedUsers считает только пользователей хотя бы с одной проходной попыткой.

Пример

curl -sS \
  -H "Authorization: Bearer $SCH_API_KEY" \
  https://api.limeplate.com/api/public/v1/compliance/frameworks/api

Регуляторная сводка

Та же форма, что и сводка OWASP, но для регуляторных фреймворков. Каждая запись несёт version и subtitle, чтобы Вы могли отрендерить идентифицирующий пункт стандарта напрямую.

GET /api/public/v1/compliance/regulatory/summary
Authorization: Bearer scs_live_…

Ответ

{
  "frameworks": [
    {
      "frameworkId": "pci-dss",
      "title": "PCI DSS",
      "version": "v4.0",
      "subtitle": "Payment Card Industry Data Security Standard — Requirement 6 (Secure Systems and Software)",
      "totalControls": 6,
      "coveredControls": 4,
      "partialControls": 1,
      "noActivityControls": 1,
      "noContentControls": 0,
      "eligibleUsers": 142,
      "trainedUsers": 105,
      "coveragePercent": 73.9,
      "avgScore": 84.7
    },
    {
      "frameworkId": "iso-27001",
      "title": "ISO/IEC 27001",
      "version": "2022",
      "subtitle": "Annex A controls — secure development and application security",
      "totalControls": 6,
      "coveredControls": 5,
      "partialControls": 1,
      "noActivityControls": 0,
      "noContentControls": 0,
      "eligibleUsers": 142,
      "trainedUsers": 117,
      "coveragePercent": 82.4,
      "avgScore": 86.0
    }
  ],
  "passingScore": 70,
  "coverageThresholdPercent": 80,
  "windowDays": 365,
  "generatedAt": "2026-05-29T13:42:11.318Z"
}

Пример

curl -sS \
  -H "Authorization: Bearer $SCH_API_KEY" \
  https://api.limeplate.com/api/public/v1/compliance/regulatory/summary

Детали регуляторного фреймворка

Разбивка по контролям. Каждый контроль включает восходящее описание, как его публикует стандарт, и набор CWE, который мы использовали для сопоставления обучения с контролем. Возвращает 404 regulatory_framework_not_found для неизвестных идентификаторов.

GET /api/public/v1/compliance/regulatory/pci-dss
Authorization: Bearer scs_live_…

Ответ

{
  "frameworkId": "pci-dss",
  "title": "PCI DSS",
  "version": "v4.0",
  "subtitle": "Payment Card Industry Data Security Standard — Requirement 6 (Secure Systems and Software)",
  "summary": {
    "frameworkId": "pci-dss",
    "title": "PCI DSS",
    "version": "v4.0",
    "subtitle": "Payment Card Industry Data Security Standard — Requirement 6 (Secure Systems and Software)",
    "totalControls": 6,
    "coveredControls": 4,
    "partialControls": 1,
    "noActivityControls": 1,
    "noContentControls": 0,
    "eligibleUsers": 142,
    "trainedUsers": 105,
    "coveragePercent": 73.9,
    "avgScore": 84.7
  },
  "controls": [
    {
      "controlId": "6.2.4.a",
      "title": "Injection Attacks",
      "description": "Address attacks that inject untrusted data into commands or queries (Req 6.2.4.a).",
      "cwes": ["CWE-89", "CWE-78", "CWE-79", "CWE-94", "CWE-611", "CWE-917", "CWE-918"],
      "status": "covered",
      "topicsCount": 7,
      "eligibleUsers": 142,
      "trainedUsers": 128,
      "coveragePercent": 90.1,
      "avgScore": 88.6,
      "topics": [
        {
          "topicId": "sql-injection",
          "title": "SQL Injection",
          "trainedUsers": 131,
          "totalAttempts": 402,
          "avgScore": 89.4,
          "cwes": ["CWE-89"]
        }
      ]
    }
  ],
  "passingScore": 70,
  "coverageThresholdPercent": 80,
  "windowDays": 365,
  "generatedAt": "2026-05-29T13:42:11.318Z"
}

Пример

curl -sS \
  -H "Authorization: Bearer $SCH_API_KEY" \
  https://api.limeplate.com/api/public/v1/compliance/regulatory/iso-27001