Aller au contenu

GET /v1/organizations/{org_id}/projects/{id}/cases

Le suivi de traitement (« cas ») des CVE d’un projet : statut de triage et historique des changements. Retourne les dossiers du projet, communs à l’équipe (l’API les appelle des cas).

GET /api/v1/organizations/{org_id}/projects/{project_id}/cases
Authorization: Bearer twa_votre_cle_ici
Paramètre Type Description
org_id UUID Identifiant de l’organisation
project_id UUID Identifiant du projet
Paramètre Type Description
status string Filtre : PENDING, ANALYZING, FIXING, MITIGATED, ACCEPTED, RESOLVED, NOT_APPLICABLE
[
{
"cve_id": "CVE-2024-3094",
"status": "FIXING",
"severity": "CRITICAL",
"notes": "Patch en cours de déploiement",
"created_at": "2024-06-20T09:00:00Z",
"updated_at": "2024-07-01T14:10:00Z",
"tags": [
{ "id": "018ec0de-0000-7000-8000-0000000000a2", "name": "à patcher", "color": "#f59e0b" }
]
}
]
Champ Type Description
cve_id string CVE concernée
status string Statut de traitement (voir filtre ci-dessus)
severity string | null Sévérité de la CVE
notes string | null Notes internes
created_at string (ISO 8601) Date de création du cas
updated_at string (ISO 8601) Dernière mise à jour
tags array<Tag> Tags d’équipe assignés à cette CVE dans le projet. Chaque tag : { id, name, color } (couleur #rrggbb). Tableau vide si aucun.
exception object | null Exception en cours, pour MITIGATED (atténuée) et pour ACCEPTED posé hors registre des risques acceptés ; null sinon. Voir ci-dessous.

MITIGATED n’est pas une correction : la faille est toujours là, une mesure la contient (contournement de l’éditeur, règle WAF, fonction désactivée, isolement réseau) jusqu’à une échéance. Le dossier n’est ni « à traiter » ni clos ; le lendemain de l’échéance, sans correctif, il se rouvre seul (PENDING, ou FIXING s’il y était). Une intégration qui calcule « ce qui reste exposé » doit donc compter MITIGATED avec les statuts ouverts, et exception.expires_on dit jusqu’à quand.

Champ de exception Type Description
nature string contournement, patch_virtuel, desactivation, segmentation, autre ; aucune (acceptation seulement)
measure string | null La mesure en place, en clair
justification string Pourquoi
expires_on string (AAAA-MM-JJ) Dernier jour de validité (heure de Paris)
set_at string (ISO 8601) Date à laquelle l’exception a été posée ou renouvelée
GET /api/v1/organizations/{org_id}/projects/{project_id}/cases/{cve_id}
Authorization: Bearer twa_votre_cle_ici

Ajoute le champ history (changements de statut, du plus ancien au plus récent) :

{
"cve_id": "CVE-2024-3094",
"status": "FIXING",
"history": [
{ "from_status": null, "to_status": "PENDING", "comment": null, "created_at": "2024-06-20T09:00:00Z" },
{ "from_status": "PENDING", "to_status": "FIXING", "comment": "Patch identifié", "created_at": "2024-06-25T11:30:00Z" }
]
}
Code Détail Cause
403 La fonctionnalité « cases » n'est pas incluse dans le plan ... Plan sans la feature cases
404 Projet introuvable Projet inexistant, d’une autre organisation, ou hors de la restriction de projets de la clé
404 Cas introuvable Aucun cas pour cette CVE sur ce projet

Cas non résolus du projet

Fenêtre de terminal
ORG_ID="018e5678-abcd-7000-8000-000000000001"
PROJECT_ID="018e1234-abcd-7000-8000-000000000010"
curl -s \
-H "Authorization: Bearer twa_votre_cle_ici" \
"https://app.techwatchalert.com/api/v1/organizations/${ORG_ID}/projects/${PROJECT_ID}/cases" \
| jq '.[] | select(.status != "RESOLVED" and .status != "NOT_APPLICABLE") | {cve_id, status, severity, jusqu_au: .exception.expires_on}'