Docs/API et Webhooks/Conformité

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éthodeCheminPortéeObjectif
GET/api/public/v1/compliance/summarycompliance:readAgrégation de couverture OWASP à travers les quatre cadres.
GET/api/public/v1/compliance/frameworks/{'{'}frameworkId{'}'}compliance:readVentilation par module pour un cadre OWASP.
GET/api/public/v1/compliance/regulatory/summarycompliance:readAgrégation de couverture pour les cadres réglementaires.
GET/api/public/v1/compliance/regulatory/{'{'}frameworkId{'}'}compliance:readVentilation 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

TypeIdentifiantTitre
OWASPwebOWASP Top 10 (Web)
OWASPapiOWASP API Security Top 10
OWASPmobileOWASP Mobile Top 10
OWASPclientOWASP Client-Side Top 10
Réglementairepci-dssPCI DSS v4.0 — Exigence 6.2.4
Réglementaireiso-27001ISO/IEC 27001:2022 — Annexe A développement sécurisé
Réglementairesoc-2SOC 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.
  • noContent signifie 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.
  • avgScore est 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/summary

Dé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"
}
  • status est l'un de covered, partial, no-activity, no-content.
  • totalAttempts inclut les tentatives échouées dans la fenêtre ; trainedUsers compte 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/api

Ré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/summary

Dé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