Dokümanlar/API ve Webhook'lar/İçerik Kataloğu

İçerik Kataloğu

Katalog, public API'nin her yerinde kullanılan kategori, modül ve konu tanımlayıcıları için doğruluk kaynağıdır. POST /assignments'ı çağırmadan, özel kurs öğeleri oluşturmadan veya uyumluluk yanıtlarını yorumlamadan önce tanımlayıcıları buradan arayın. Gerekli kapsam: content:read.

Uç noktalar

MethodPathKapsamAmaç
GET/api/public/v1/content/categoriescontent:readTüm üst seviye kategoriler.
GET/api/public/v1/content/categories/{'{'}categoryId{'}'}/topicscontent:readBir kategori içindeki tüm konular, modül ve CWE bilgisi ile.
GET/api/public/v1/content/cwes/{'{'}cweId{'}'}/topicscontent:readBir CWE id'sini onu kapsayan konuların listesine çözer.

Kategorileri listele

Kurumunuz için görünen her kategoriyi döner. Kategoriler uyumluluk uç noktalarında kullanılan dört OWASP ailesini yansıtır — web, api, mobile, client.

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

Yanıt

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

Örnek

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

Bir kategorideki konuları listele

Verilen kategoriye bağlanan her konuyu, üst modülü ve SARIF eşlemesi için kullanılan CWE seti ile birlikte döner. categoryId yukarıdaki dörtten biri değilse 404 category_not_found döner.

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

Yanıt

{
  "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"]
    }
  ]
}
  • topicId, POST /assignments'a ve özel kurs öğelerine ilettiğiniz değerdir.
  • moduleId, uyumluluk framework detay yanıtlarında kullanılan moduleId ile eşleşir; böylece iki uç noktayı client tarafında join'leyebilirsiniz.
  • moduleTitle, bir OWASP modülü altında gruplanmamış konular için null olabilir (nadir; geçici içerik için ayrılmıştır).

Örnek

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

Bir CWE'yi konulara çöz

Verilen bir CWE tanımlayıcısı için onu kapsayan her konuyu döner. SARIF içeri alımının dahili olarak kullandığı aramayla aynıdır — tam bir raporu içeri almadan bir bulguyu eğitime eşlemek istediğinizde doğrudan çağırın.

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

Kabul edilen CWE formatları

{'{'}cweId{'}'} yol segmenti sunucu tarafında normalize edilir. Aşağıdakilerin hepsi aynı şekilde çözülür:

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

Yanıtın cwe alanı her zaman normalize edilmiş kanonik formu (CWE-89) yankılar. Bilinmeyen CWE'ler 404 yerine count: 0 ve boş bir topics dizisi ile 200 döner — böylece client'ın eşlenmemiş ID'leri özel olarak işlemesi gerekmez.

Yanıt

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

Örnek

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

Tanımlayıcı kararlılığı

Kategori, modül ve konu tanımlayıcıları kararlı dizgilerdir — bir kez yayımlandıktan sonra değişmezler. Mevcut modüller altına yeni konular ve mevcut kategoriler altına yeni modüller eklenebilir ama entegrasyonları sağlam tutmak için yeniden adlandırmadan kaçınılır. Bir konu emekliye ayrılırsa, tanımlayıcı korunur ve konu geri dönüştürülmek yerine katalogdan gizlenir.