문서/API 및 웹훅/콘텐츠 카탈로그

콘텐츠 카탈로그

카탈로그는 Public API의 다른 모든 곳에서 사용되는 카테고리, 모듈 및 주제 식별자의 진실의 출처입니다. POST /assignments을 호출하거나, 맞춤형 과정 항목을 빌드하거나, 컴플라이언스 응답을 해석하기 전에 여기에서 식별자를 조회하세요. 필수 범위: content:read.

엔드포인트

MethodPathScope용도
GET/api/public/v1/content/categoriescontent:read모든 최상위 카테고리.
GET/api/public/v1/content/categories/{'{'}categoryId{'}'}/topicscontent:read카테고리 내의 모든 주제와 모듈 및 CWE 정보.
GET/api/public/v1/content/cwes/{'{'}cweId{'}'}/topicscontent:readCWE id를 그것을 다루는 주제 목록으로 해결.

카테고리 목록 조회

조직에 대한 모든 표시 카테고리를 반환합니다. 카테고리는 컴플라이언스 엔드포인트에서 사용되는 네 OWASP 패밀리를 반영합니다 — web, api, mobile, client.

GET /api/public/v1/content/categories
Authorization: Bearer scs_live_…

응답

{
  "count": 4,
  "categories": [
    { "categoryId": "web",    "title": "OWASP Top 10 (Web)" },
    { "categoryId": "api",    "title": "OWASP API Security Top 10" },
    { "categoryId": "mobile", "title": "OWASP Mobile Top 10" },
    { "categoryId": "client", "title": "OWASP Client-Side Top 10" }
  ]
}

예시

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

카테고리 내 주제 목록 조회

주어진 카테고리로 롤업되는 모든 주제를 반환하며, 각각은 상위 모듈과 SARIF 매핑에 사용되는 CWE 집합으로 주석이 달려 있습니다. categoryId가 위의 네 가지 중 하나가 아니면 404 category_not_found를 반환합니다.

GET /api/public/v1/content/categories/web/topics
Authorization: Bearer scs_live_…

응답

{
  "categoryId": "web",
  "categoryTitle": "OWASP Top 10 (Web)",
  "count": 2,
  "topics": [
    {
      "topicId": "sql-injection",
      "title": "SQL Injection",
      "moduleId": "a03-injection",
      "moduleTitle": "A03: Injection",
      "cwes": ["CWE-89"]
    },
    {
      "topicId": "xss-reflected",
      "title": "Reflected Cross-Site Scripting",
      "moduleId": "a03-injection",
      "moduleTitle": "A03: Injection",
      "cwes": ["CWE-79", "CWE-80"]
    }
  ]
}
  • topicIdPOST /assignments과 맞춤형 과정 항목에 전달하는 값입니다.
  • moduleId은 컴플라이언스 프레임워크 상세 응답에서 사용되는 moduleId와 일치하므로, 클라이언트 측에서 두 엔드포인트를 조인할 수 있습니다.
  • moduleTitle은 OWASP 모듈 아래에 그룹화되지 않은 주제에 대해 null일 수 있습니다(드물게, 임시 콘텐츠용으로 예약됨).

예시

curl -sS \
  -H "Authorization: Bearer $SCH_API_KEY" \
  https://api.limeplate.com/api/public/v1/content/categories/api/topics

CWE를 주제로 해결

CWE 식별자가 주어지면, 그것을 다루는 모든 주제를 반환합니다. 이는 SARIF 수집이 내부적으로 사용하는 동일한 조회입니다 — 전체 보고서를 수집하지 않고 결과를 교육에 매핑하려는 경우 직접 호출하세요.

GET /api/public/v1/content/cwes/CWE-89/topics
Authorization: Bearer scs_live_…

허용되는 CWE 형식

{'{'}cweId{'}'} 경로 세그먼트는 서버 측에서 정규화됩니다. 다음 모두 동일하게 해결됩니다:

  • 89
  • cwe-89
  • CWE-89
  • external/cwe/cwe-89

응답의 cwe 필드는 항상 정규화된 표준 형식(CWE-89)을 그대로 반영합니다. 알 수 없는 CWE는 count: 0와 빈 topics 배열로 200를 반환합니다 — 404가 아닙니다 — 따라서 클라이언트가 매핑되지 않은 ID를 특별히 처리할 필요가 없습니다.

응답

{
  "cwe": "CWE-89",
  "count": 1,
  "topics": [
    {
      "topicId": "sql-injection",
      "title": "SQL Injection",
      "moduleId": "a03-injection",
      "moduleTitle": "A03: Injection",
      "categoryId": "web",
      "categoryTitle": "OWASP Top 10 (Web)"
    }
  ]
}

예시

curl -sS \
  -H "Authorization: Bearer $SCH_API_KEY" \
  https://api.limeplate.com/api/public/v1/content/cwes/external/cwe/cwe-79/topics

식별자 안정성

카테고리, 모듈 및 주제 식별자는 안정적인 문자열입니다 — 일단 게시되면 변경되지 않습니다. 기존 모듈 아래에 새 주제가 추가될 수 있고, 기존 카테고리 아래에 새 모듈이 추가될 수 있지만, 통합의 회복력을 유지하기 위해 이름 변경은 피합니다. 주제가 폐기되는 경우, 식별자는 보존되고 주제는 재활용되는 대신 카탈로그에서 숨겨집니다.