Catalogue de contenu
Le catalogue est la source de vérité pour les identifiants de catégorie, module et sujet utilisés partout ailleurs dans l'API publique. Recherchez les identifiants ici avant d'appeler POST /assignments, de construire des éléments de cours personnalisés ou d'interpréter les réponses de conformité. Portée requise : content:read.
Points de terminaison
| Méthode | Chemin | Portée | Objectif |
|---|---|---|---|
GET | /api/public/v1/content/categories | content:read | Toutes les catégories de haut niveau. |
GET | /api/public/v1/content/categories/{'{'}categoryId{'}'}/topics | content:read | Tous les sujets dans une catégorie, avec informations sur le module et les CWE. |
GET | /api/public/v1/content/cwes/{'{'}cweId{'}'}/topics | content:read | Résoudre un id CWE en la liste de sujets qui le couvrent. |
Lister les catégories
Renvoie chaque catégorie visible pour votre organisation. Les catégories reflètent les quatre familles OWASP utilisées dans les points de terminaison de conformité — web, api, mobile, client.
GET /api/public/v1/content/categories
Authorization: Bearer scs_live_…Réponse
{
"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" }
]
}Exemple
curl -sS \
-H "Authorization: Bearer $SCH_API_KEY" \
https://api.limeplate.com/api/public/v1/content/categoriesLister les sujets dans une catégorie
Renvoie chaque sujet qui s'agrège à la catégorie donnée, chacun annoté avec son module parent et l'ensemble de CWE utilisé pour le mappage SARIF. Renvoie 404 category_not_found si le categoryId n'est pas l'un des quatre ci-dessus.
GET /api/public/v1/content/categories/web/topics
Authorization: Bearer scs_live_…Réponse
{
"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"]
}
]
}topicIdest la valeur que vous passez àPOST /assignmentset aux éléments de cours personnalisés.moduleIdcorrespond aumoduleIdutilisé dans les réponses de détail de cadre de conformité, donc vous pouvez joindre les deux points de terminaison côté client.moduleTitlepeut êtrenullpour les sujets qui ne sont pas regroupés sous un module OWASP (rare ; réservé au contenu ad hoc).
Exemple
curl -sS \
-H "Authorization: Bearer $SCH_API_KEY" \
https://api.limeplate.com/api/public/v1/content/categories/api/topicsRésoudre un CWE en sujets
Étant donné un identifiant CWE, renvoie chaque sujet qui le couvre. C'est la même recherche que l'ingestion SARIF utilise en interne — appelez-la directement lorsque vous voulez mapper une découverte à la formation sans ingérer un rapport complet.
GET /api/public/v1/content/cwes/CWE-89/topics
Authorization: Bearer scs_live_…Formats CWE acceptés
Le segment de chemin {'{'}cweId{'}'} est normalisé côté serveur. Tous les éléments suivants se résolvent de manière identique :
89cwe-89CWE-89external/cwe/cwe-89
Le champ cwe de la réponse renvoie toujours la forme canonique normalisée (CWE-89). Les CWE inconnus renvoient 200 avec count: 0 et un tableau topics vide — non un 404 — pour que le client n'ait pas besoin de cas spécial pour les IDs non mappés.
Réponse
{
"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)"
}
]
}Exemple
curl -sS \
-H "Authorization: Bearer $SCH_API_KEY" \
https://api.limeplate.com/api/public/v1/content/cwes/external/cwe/cwe-79/topicsStabilité des identifiants
Les identifiants de catégorie, module et sujet sont des chaînes stables — ils ne changeront pas une fois publiés. De nouveaux sujets peuvent être ajoutés sous des modules existants, et de nouveaux modules sous des catégories existantes, mais les renommages sont évités pour garder les intégrations résilientes. Si un sujet est jamais retiré, l'identifiant est préservé et le sujet est masqué du catalogue plutôt que recyclé.