Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Espace de noms : microsoft.graph.security
Importante
Les API sous la version /beta dans Microsoft Graph sont susceptibles d’être modifiées. L’utilisation de ces API dans des applications de production n’est pas prise en charge. Pour déterminer si une API est disponible dans v1.0, utilisez le sélecteur Version .
Créez ou remplacez un classeur à l’aide d’un ID sélectionné par le client.
Fournissez un GUID dans l’URL de demande. Sans en-tête conditionnel, cette méthode crée le classeur si cet ID n’existe pas, ou remplace son nom et son contenu si c’est le cas. La réutilisation du même GUID permet de préserver l’identité du classeur. Les mises à jour conservent createdByUpn et createdAtDateTime.
La valeur de contenu remplace l’ensemble du document JSON. Il ne s’agit pas d’une mise à jour partielle ou d’une fusion imbriquée.
Cette API est disponible dans les déploiements cloud nationaux suivants.
| Service global | Gouvernement américain L4 | Gouvernement américain L5 (DOD) | Chine exploitée par 21Vianet |
|---|---|---|---|
| ✅ | ❌ | ❌ | ❌ |
Autorisations
Choisissez l’autorisation ou les autorisations marquées comme étant les moins privilégiées pour cette API. Utilisez une ou plusieurs autorisations privilégiées uniquement si votre application en a besoin. Pour plus d’informations sur les autorisations déléguées et d’application, voir Types d’autorisations. Pour en savoir plus sur ces autorisations, consultez la référence des autorisations.
| Type d’autorisation | Autorisations les moins privilégiées | Autorisations à privilèges plus élevés |
|---|---|---|
| Déléguée (compte professionnel ou scolaire) | Workbooks.ReadWrite.All | Non disponible. |
| Déléguée (compte Microsoft personnel) | Non prise en charge. | Non prise en charge. |
| Application | Workbooks.ReadWrite.All | Non disponible. |
Le client doit être actif et intégré pour utiliser les API Classeurs. Les autorisations déléguées de travail, d’école ou d’application nécessitent le consentement de l’administrateur. L’accès délégué exige également que l’utilisateur connecté dispose de l’autorisation RBAC unifiée de Microsoft Defender XDR applicable. Les comptes Microsoft personnels ne sont pas pris en charge.
Requête HTTP
PATCH /security/workbooks/{workbookId}
En-têtes de demande
| Nom | Description |
|---|---|
| Autorisation | Porteur {token}. Obligatoire. En savoir plus sur l’authentification et les autorisations. |
| Content-Type | application/json. Obligatoire. |
| If-Match | Le classeur ETag actuel. Rend la demande uniquement à jour : le classeur doit exister et l’ETag doit correspondre. Facultatif. |
| If-None-Match | Définissez la valeur * pour faire de la demande une opération de création atomique uniquement. Le classeur ne doit pas exister déjà. Facultatif. |
Pour If-Match, copiez la valeur de l’en-tête de réponse HTTP ETag du classeur inchangée, y compris son préfixe et les W/ guillemets. Les représentations fortes et faibles correspondantes de l’ETag actuel sont acceptées. Traitez les ETag comme des valeurs opaques ; Ne les générez pas vous-même.
Corps de la demande
Indiquez le nom et le contenu dans le corps de la demande. Inclure le document de contenu complet ; Les propriétés imbriquées que vous omettez ne sont pas conservées de la version précédente.
| Propriété | Type | Description |
|---|---|---|
| contenu | microsoft.graph.security.workbookContent | Document JSON complet à stocker. Fournissez un objet JSON, pas une chaîne codée en JSON. |
| nom | String | Nom d’affichage du classeur. Longueur maximale : 256 caractères. |
N’indiquez pas id, etag, createdByUpn, lastUpdatedByUpn, createdAtDateTime ou updatedAtDateTime dans le corps de la demande. L’URL détermine l’ID ; Le service gère les propriétés d’accès concurrentiel et d’audit.
Réponse
En cas de réussite, cette méthode renvoie un objet microsoft.graph.security.workbook dans le corps de la réponse et l’un des codes de réponse suivants :
-
201 Createdlors de la création du classeur. L’en-têteLocationcontient l’URL Microsoft Graph du classeur. -
200 OKLorsqu’un classeur existant est remplacé.
L’en-tête ETag de réponse contient le jeton d’accès concurrentiel actuel du classeur.
Erreurs
La méthode renvoie 412 Precondition Failed lorsque l’une des conditions suivantes s’applique :
- Vous fournissez
If-None-Match: *, mais le classeur existe déjà. - Vous fournissez
If-Match, mais le classeur n’existe pas ou l’ETag fourni ne correspond pas à sa version actuelle.
Exemples
Exemple 1 : remplacer un classeur uniquement s’il n’a pas changé
Demande
L’exemple suivant utilise le faible ETag renvoyé par Get workbook. L’objet de contenu fourni remplace le document précédent.
PATCH https://graph.microsoft.com/beta/security/workbooks/ba989c62-af63-b8de-286d-7474ec579357
Content-Type: application/json
If-Match: W/"0x8DE000000000001"
{
"name": "Threat hunting overview - updated",
"content": {
"version": "2.0",
"title": "Priority investigations",
"items": [
{
"type": "text",
"text": "Review the highest-priority investigations first."
}
]
}
}
Réponse
L’exemple suivant illustre la réponse. L’ID et les propriétés d’audit de création sont conservés, tandis que les propriétés d’audit de mise à jour et ETag reflètent la nouvelle version. L’ancienne propriété content.settings n’est pas conservée, car elle n’a pas été fournie dans le document de remplacement.
Remarque : l’objet de réponse affiché ci-après peut être raccourci pour plus de lisibilité.
HTTP/1.1 200 OK
Content-Type: application/json
ETag: W/"0x8DE000000000002"
{
"@odata.type": "#microsoft.graph.security.workbook",
"id": "ba989c62-af63-b8de-286d-7474ec579357",
"name": "Threat hunting overview - updated",
"content": {
"version": "2.0",
"title": "Priority investigations",
"items": [
{
"type": "text",
"text": "Review the highest-priority investigations first."
}
]
},
"createdByUpn": "adelev@contoso.com",
"lastUpdatedByUpn": "alexw@contoso.com",
"createdAtDateTime": "2026-09-22T10:00:00Z",
"updatedAtDateTime": "2026-09-22T10:15:00Z"
}
Exemple 2 : créer un classeur uniquement si son ID n’existe pas
Demande
Cet exemple indépendant suppose que l’ID de classeur n’existe pas. L’en-tête If-None-Match: * empêche la demande de remplacer un classeur qui utilise déjà l’ID.
PATCH https://graph.microsoft.com/beta/security/workbooks/ba989c62-af63-b8de-286d-7474ec579357
Content-Type: application/json
If-None-Match: *
{
"name": "Threat hunting overview",
"content": {
"version": "1.0",
"title": "Threat hunting overview",
"items": [
{
"type": "text",
"text": "Investigate recent security activity."
}
],
"settings": {
"showTitle": true
}
}
}
Réponse
L’exemple suivant montre la réponse lorsque l’ID n’existe pas. La répétition de cette demande de création uniquement après l’existence du classeur retourne 412 Precondition Failed.
Remarque : l’objet de réponse affiché ci-après peut être raccourci pour plus de lisibilité.
HTTP/1.1 201 Created
Content-Type: application/json
Location: https://graph.microsoft.com/beta/security/workbooks/ba989c62-af63-b8de-286d-7474ec579357
ETag: W/"0x8DE000000000001"
{
"@odata.type": "#microsoft.graph.security.workbook",
"id": "ba989c62-af63-b8de-286d-7474ec579357",
"name": "Threat hunting overview",
"content": {
"version": "1.0",
"title": "Threat hunting overview",
"items": [
{
"type": "text",
"text": "Investigate recent security activity."
}
],
"settings": {
"showTitle": true
}
},
"createdByUpn": "adelev@contoso.com",
"lastUpdatedByUpn": "adelev@contoso.com",
"createdAtDateTime": "2026-09-22T10:00:00Z",
"updatedAtDateTime": "2026-09-22T10:00:00Z"
}