Conformité
Deux vues parallèles de couverture sur les mêmes données de formation. La vue OWASP évalue vos effectifs par rapport aux quatre familles OWASP Top 10 (Web, API, Mobile, Client). La vue réglementaire évalue la même formation par rapport aux standards externes (PCI DSS, ISO/IEC 27001, SOC 2) en mappant chaque contrôle à ses CWE sous-jacents. Portée requise : compliance:read.
Points de terminaison
| Méthode | Chemin | Portée | Objectif |
|---|---|---|---|
GET | /api/public/v1/compliance/summary | compliance:read | Agrégation de couverture OWASP à travers les quatre cadres. |
GET | /api/public/v1/compliance/frameworks/{'{'}frameworkId{'}'} | compliance:read | Ventilation par module pour un cadre OWASP. |
GET | /api/public/v1/compliance/regulatory/summary | compliance:read | Agrégation de couverture pour les cadres réglementaires. |
GET | /api/public/v1/compliance/regulatory/{'{'}frameworkId{'}'} | compliance:read | Ventilation par contrôle pour un cadre réglementaire. |
Comment la couverture est calculée
Un utilisateur éligible est tout membre actif de l'organisation dont le rôle n'est pas org_admin. Un utilisateur est compté comme formé sur un sujet s'il a au moins une tentative de pratique avec un score ≥ passingScore (70) dans les derniers windowDays (365). Un élément à risque (module OWASP ou contrôle réglementaire) bascule au statut covered une fois que le pourcentage d'utilisateurs éligibles formés sur celui-ci dépasse le coverageThresholdPercent de votre organisation — défaut 80, configurable via l'interface admin entre 50 et 100.
Identifiants de cadre
| Type | Identifiant | Titre |
|---|---|---|
| OWASP | web | OWASP Top 10 (Web) |
| OWASP | api | OWASP API Security Top 10 |
| OWASP | mobile | OWASP Mobile Top 10 |
| OWASP | client | OWASP Client-Side Top 10 |
| Réglementaire | pci-dss | PCI DSS v4.0 — Exigence 6.2.4 |
| Réglementaire | iso-27001 | ISO/IEC 27001:2022 — Annexe A développement sécurisé |
| Réglementaire | soc-2 | SOC 2 — Critères des services de confiance (TSC 2017) |
Résumé OWASP
Une entrée par cadre OWASP. Utilisez ceci pour les tuiles de tableau de bord.
GET /api/public/v1/compliance/summary
Authorization: Bearer scs_live_…Réponse
{
"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.noContentsignifie que nous n'avons pas encore livré de formation pour cet élément à risque — traitez-le comme une lacune connue, non un échec des effectifs.avgScoreest la moyenne des tentatives réussies dans la fenêtre, exprimée sur une échelle 0-100.
Exemple
curl -sS \
-H "Authorization: Bearer $SCH_API_KEY" \
https://api.limeplate.com/api/public/v1/compliance/summaryDétail de cadre OWASP
Plonge dans un cadre — renvoie les éléments à risque par module, chacun avec les sujets constitutifs et les CWE. Renvoie 404 framework_not_found pour tout identifiant en dehors de web | api | mobile | client.
GET /api/public/v1/compliance/frameworks/web
Authorization: Bearer scs_live_…Réponse
{
"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"
}statusest l'un decovered,partial,no-activity,no-content.totalAttemptsinclut les tentatives échouées dans la fenêtre ;trainedUserscompte uniquement les utilisateurs avec au moins une tentative réussie.
Exemple
curl -sS \
-H "Authorization: Bearer $SCH_API_KEY" \
https://api.limeplate.com/api/public/v1/compliance/frameworks/apiRésumé réglementaire
Même forme que le résumé OWASP mais pour les cadres réglementaires. Chaque entrée porte version et subtitle pour que vous puissiez rendre la clause d'identification du standard directement.
GET /api/public/v1/compliance/regulatory/summary
Authorization: Bearer scs_live_…Réponse
{
"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"
}Exemple
curl -sS \
-H "Authorization: Bearer $SCH_API_KEY" \
https://api.limeplate.com/api/public/v1/compliance/regulatory/summaryDétail de cadre réglementaire
Ventilation par contrôle. Chaque contrôle inclut la description en amont telle que le standard la publie et l'ensemble de CWE que nous avons utilisé pour mapper la formation au contrôle. Renvoie 404 regulatory_framework_not_found pour les identifiants inconnus.
GET /api/public/v1/compliance/regulatory/pci-dss
Authorization: Bearer scs_live_…Réponse
{
"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"
}Exemple
curl -sS \
-H "Authorization: Bearer $SCH_API_KEY" \
https://api.limeplate.com/api/public/v1/compliance/regulatory/iso-27001