문서/API 및 웹훅/컴플라이언스

컴플라이언스

동일한 교육 데이터에 대한 두 가지 병렬 적용 범위 보기. OWASP 보기는 네 OWASP Top 10 패밀리(Web, API, Mobile, Client)에 대해 인력을 점수화합니다. 규제 보기는 각 제어를 기본 CWE에 매핑하여 외부 표준(PCI DSS, ISO/IEC 27001, SOC 2)에 대해 동일한 교육을 점수화합니다. 필수 범위: compliance:read.

엔드포인트

MethodPathScope용도
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이 아닌 모든 활성 조직 구성원입니다. 사용자는 지난 windowDays (365일) 이내에 점수 ≥ passingScore (70)인 연습 시도가 최소 하나 있을 때 주제에 대해 교육받은으로 카운트됩니다. 위험 항목(OWASP 모듈 또는 규제 제어)은 교육받은 적격 사용자의 비율이 조직의 coverageThresholdPercent를 넘으면 상태 covered로 전환됩니다 — 기본값은 80이며 관리자 UI에서 50100 사이로 구성 가능합니다.

프레임워크 식별자

Type식별자제목
OWASPwebOWASP Top 10 (Web)
OWASPapiOWASP API Security Top 10
OWASPmobileOWASP Mobile Top 10
OWASPclientOWASP Client-Side Top 10
규제pci-dssPCI DSS v4.0 — Requirement 6.2.4
규제iso-27001ISO/IEC 27001:2022 — Annex A secure development
규제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가 있는 모듈별 위험 항목을 반환합니다. web | api | mobile | client 외부의 모든 식별자에 대해 404 framework_not_found를 반환합니다.

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"
}
  • statuscovered, 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 요약과 동일한 형태이지만 규제 프레임워크용입니다. 각 항목은 versionsubtitle을 포함하여 표준의 식별 조항을 직접 렌더링할 수 있습니다.

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