userDataSecurityAndGovernance : processContent

Espace de noms: microsoft.graph

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 .

Traiter le contenu par rapport aux stratégies de protection des données dans le contexte de l’utilisateur actuel ou spécifié.

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) Content.Process.User Content.Process.All
Déléguée (compte Microsoft personnel) Non prise en charge. Non prise en charge.
Application Content.Process.User Content.Process.All

Requête HTTP

POST /me/dataSecurityAndGovernance/processContent

Remarque

L’appel du point de terminaison /me nécessite un utilisateur connecté et par conséquent une autorisation déléguée. Les autorisations d’application ne sont pas prises en charge lors de l’utilisation du point de /me terminaison.

POST /users/{userId}/dataSecurityAndGovernance/processContent

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-None-Match Facultatif. Cette valeur est utilisée par l’API pour déterminer si l’état de la stratégie a changé depuis le dernier appel à l’API. La valeur provient de l’en-tête Etag renvoyé par le calcul protectionScopes. Si la valeur Etag nouvellement calculée ne correspond pas à la valeur transmise dans cet en-tête, la propriété protectionScopeState renvoyée sera « modifiée » et l’application devra être actualisée en appelant protectionScopes compute.
client-request-id Chaîne (GUID recommandé). Facultatif. Identificateur unique de cette requête, qui est utilisé pour le suivi et le débogage dans les journaux et les interactions de support. Si aucun ID n’est fourni, il se peut qu’il soit généré automatiquement. Nous vous recommandons de spécifier l’ID pour faciliter le suivi et le débogage. Le même ID que celui envoyé dans la demande sera renvoyé dans la réponse.

Corps de la demande

Dans le corps de la demande, fournissez une représentation JSON des paramètres.

Le tableau suivant répertorie les paramètres qui sont requis lorsque vous appelez cette action.

Paramètre Type Description
contentToProcess processContentRequest Obligatoire. Objet contenant les entrées de contenu et les métadonnées (activité, appareil, application) à évaluer pour l’utilisateur spécifié.

Pour le contenu d’un fichier, utilisez une entrée processFileMetadata dans contentEntries. Pour fournir des métadonnées d’étiquette de confidentialité, incluez sa collection sensitivityLabels héritée avec un ou plusieurs objets currentLabel . Utilisez un tableau même si vous ne fournissez qu’une seule étiquette. La fourniture de ces métadonnées ne s’applique ni ne modifie les étiquettes du fichier.

Omettre sensitivityLabels ou fournir une collection vide, lorsque vous ne fournissez pas de métadonnées d’étiquette fournies par l’appelant. Aucun des deux cas ne supprime une étiquette du contenu.

Fournissez des métadonnées d’étiquette uniquement pour les activités prises en charge par cette API. Les demandes qui affirment des étiquettes pour des activités non prises en charge peuvent être rejetées. L’héritage du schéma n’établit pas la prise en charge de l’activité.

Réponse

En cas de succès, cette action retourne un code de réponse et un 200 OKprocessContentResponse dans le corps de la réponse ou 202 Accepted204 No Content , sans corps de réponse.

En-têtes de réponse

Nom Description
ETag Indicateur qui peut être utilisé pour détecter si l’état de la stratégie configurée a changé. Si l’état de la stratégie change, la valeur ETag change et protectionScopeState est renvoyée est « modifiée » et l’application doit s’actualiser en appelant protectionScopes calcul.

Exemples

Exemple 1 : Application d’entreprise

Demande

L’exemple suivant montre une demande provenant d’une application d’entreprise, qui peut être une application non-IA ou une application IA. Le texte que vous envoyez à l’aide data peut être n’importe quel texte de votre application (par exemple, un corps de document, un message de conversation ou l’invite de l’utilisateur si votre application est une application IA).

POST https://graph.microsoft.com/beta/me/dataSecurityAndGovernance/processContent
Content-Type: application/json
Client-Request-Id: 50dc805c-3af4-42d9-ad16-a746235cc736

{
    "contentToProcess": {
       "contentEntries": [
          {
             "@odata.type": "microsoft.graph.processConversationMetadata",
             "identifier": "07785517-9081-4fe7-a9dc-85bcdf5e9075",
             "content": {
                "@odata.type": "microsoft.graph.textContent", 
                "data": "Write an acceptance letter for Alex Wilber with Credit card number 4532667785213500, ssn: 120-98-1437 at One Microsoft Way, Redmond, WA 98052"
             },
             "name":"PC Purview API Explorer message",
             "correlationId": "d63eafd2-e3a9-4c1a-b726-a2e9b9d9580d",
             "sequenceNumber": 0, 
             "isTruncated": false,
             "createdDateTime": "2025-05-27T17:23:20",
             "modifiedDateTime": "2025-05-27T17:23:20",
             "contentCategory": "ai"
          }
       ],
       "activityMetadata": { 
          "activity": "uploadText"
       },
       "deviceMetadata": {
          "deviceType": "Unmanaged",
          "operatingSystemSpecifications": {
             "operatingSystemPlatform": "Windows 11",
             "operatingSystemVersion": "10.0.26100.0" 
          },
          "ipAddress": "127.0.0.1"
       },
       "protectedAppMetadata": {
          "name": "PC Purview API Explorer",
          "version": "0.2",
          "applicationLocation":{
             "@odata.type": "microsoft.graph.policyLocationApplication",
             "value": "83ef208a-0396-4893-9d4f-d36efbffc8bd"
          }
       },
       "integratedAppMetadata": {
          "name": "PC Purview API Explorer",
          "version": "0.2" 
       }
    }
}

Réponse

L’exemple suivant illustre la réponse.

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
Client-Request-Id: 50dc805c-3af4-42d9-ad16-a746235cc736

{
  "@odata.context": "https://graph.microsoft.com/beta/$metadata#microsoft.graph.processContentResponse",
  "protectionScopeState": "notModified",
   "policyActions": [],
  "processingErrors": []
}

Exemple 2 : Agent IA

Demande

L’exemple suivant montre une demande envoyée à partir d’un agent IA. Dans la requête, notez qu’il y a un agents tableau qui est de type aiAgentInfo. Dans cet exemple, data est utilisé pour envoyer l’invite de l’utilisateur.

POST https://graph.microsoft.com/beta/users/{5def8f26-aff8-4db6-a08c-0fcf8f1aa2ba}/dataSecurityAndGovernance/processContent
Content-Type: application/json

{
    "contentToProcess": {
      "contentEntries": [
        {
          "@odata.type": "microsoft.graph.processConversationMetadata",
          "identifier": "42837765-85c9-4a28-a165-27b6aaa5f635",
          "content": {
            "@odata.type": "microsoft.graph.textContent",
            "data": "For application 123456789, Write an acceptance letter for Alex Wilber with Credit card number 0000111122223333, ssn: 000-11-2222 at One Microsoft Way, Redmond, WA 98052"
          },
          "agents": [
            {
              "@odata.type": "microsoft.graph.aiAgentInfo",
              "blueprintId": "c84571c6-5ef3-4af7-aed2-0491cfd362a0",
              "identifier": "89515a70-a236-43be-b977-3ff0b454f853",
              "name": "Demo Agent",
              "version": "1.0"
            }
          ],
          "name":"PC Purview API Explorer message",
          "correlationId": "1cd5e33a-c78f-46e4-a242-74b0ef910486",
          "sequenceNumber": 0,
             "isTruncated": false,
             "createdDateTime": "2026-04-08T20:52:08",
             "modifiedDateTime": "2026-04-08T20:52:08"
          }
       ],
       "activityMetadata": { 
          "activity": "uploadText"
       },
       "deviceMetadata": {
          "operatingSystemSpecifications": {
             "operatingSystemPlatform": "Windows 11",
             "operatingSystemVersion": "10.0.26200.0" 
          },
          "ipAddress": "127.0.0.1"
       },
       "protectedAppMetadata": {
          "name": "PC Purview API Explorer",
          "version": "0.2",
          "applicationLocation":{
             "@odata.type": "microsoft.graph.policyLocationApplication",
             "value": "83ef198a-0396-4893-9d4f-d36efbffc8bd"
          }
       },
       "integratedAppMetadata": {
          "name": "PC Purview API Explorer",
          "version": "0.1" 
       }
    }
}


Réponse

L’exemple suivant illustre la réponse.

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

{
  "@odata.context": "https://graph.microsoft.com/beta/$metadata#microsoft.graph.processContentResponse",
  "protectionScopeState": "modified",
  "policyActions": [
    {
      "@odata.type": "#microsoft.graph.restrictAccessAction",
      "action": "restrictAccess",
      "restrictionAction": "block"
    }
  ],
  "processingErrors": []
}

Exemple 3 : Application du fournisseur de réseau

Demande

L’exemple suivant illustre une demande.

POST https://graph.microsoft.com/beta/users/{5def8f26-aff8-4db6-a08c-0fcf8f1aa2ba}/dataSecurityAndGovernance/processContent
Content-Type: application/json

{
	"contentToProcess": {
		"contentEntries": [
			{
				"@odata.type": "#microsoft.graph.processConversationMetadata",
				"identifier": "f7af180f-dc2e-467c-9719-757e1c61eabf",
				"content": {
					"@odata.type": "#microsoft.graph.textContent",
					"data": "some data"
				},
				"correlationId": "d63eafd2-e3a9-4c1a-b726-a2e9b9d95811",
				"sequenceNumber": 0,
				"name": "Test Content"
			}
		],
		"activityMetadata": {
			"activity": "uploadText"
		},
		"deviceMetadata": {
			"deviceType": "unmanaged",
			"ipAddress": null,
			"operatingSystemSpecifications": {
				"operatingSystemPlatform": "Windows",
				"operatingSystemVersion": "11.1"
			}
		},
		"integratedAppMetadata": {
			"name": "My Entra App",
			"version": "0.1"
		},
		"protectedAppMetadata": {
			"name": "My Entra App",
			"version": "0.1",
			"applicationLocation": {
				"@odata.type": "#microsoft.graph.policyLocationUrl",
				"value": "https://gemini.google.com"
			}
		}
	}
}


Réponse

L’exemple suivant illustre la réponse.

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

{
  "@odata.context": "https://graph.microsoft.com/beta/$metadata#microsoft.graph.processContentResponse",
  "protectionScopeState": "modified",
  "policyActions": [
    {
      "@odata.type": "#microsoft.graph.restrictAccessAction",
      "action": "restrictAccess",
      "restrictionAction": "block"
    }
  ],
  "processingErrors": []
}

Exemple 4 : Application du fournisseur de réseau avec contenu de fichier

Demande

L’exemple suivant illustre une demande.

POST https://graph.microsoft.com/beta/me/dataSecurityAndGovernance/processContent
Content-Type: application/json

{
	"contentToProcess": {
		"contentEntries": [
			{
				"@odata.type": "#microsoft.graph.processFileMetadata",
				"identifier": "f7af180f-dc2e-467c-9719-757e1c61eabf",
				"content": {
				"@odata.type": "#microsoft.graph.textContent",
					"data": "Base64 encoded content"
				},
				"name": "Test File.docx",
				"correlationId": "d63eafd2-e3a9-4c1a-b726-a2e9b9d95822",
				"createdDateTime": "2024-07-23T01:31:40.2020463Z",
				"modifiedDateTime": "2024-09-17T13:45:21.0000000Z",
				"correlationId": "9d84223c-521c-42f4-8f35-3cdeabe515d3",
				"length": 17352,
				"isTruncated": false,
				"ownerId": "ffe1ca70-6e5b-4120-abf0-472034ba05d4",
             	"contentCategory": "none",
				"customProperties": {
					"Department": "Finance",
					"ReviewerName": "John Smith"
				}
			}
		],
		"activityMetadata": {
			"activity": "uploadFile"
		},
		"deviceMetadata": {
			"deviceType": "unmanaged",
			"operatingSystemSpecifications": {
				"operatingSystemPlatform": "Windows",
				"operatingSystemVersion": "11.1"
			}
		},
		"integratedAppMetadata": {
			"name": "Network Proxy App",
			"version": "1.0.0"
		},
		"protectedAppMetadata": {
			"name": "My App",
			"version": "0.1",
			"applicationLocation": {
				"@odata.type": "#microsoft.graph.policyLocationUrl",
				"value": "https://gemini.google.com"
			}
		}
	}
}

Réponse

L’exemple suivant illustre la réponse.

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

{
  "@odata.context": "https://graph.microsoft.com/beta/$metadata#microsoft.graph.processContentResponse",
  "protectionScopeState": "modified",
  "policyActions": [
    {
      "@odata.type": "#microsoft.graph.restrictAccessAction",
      "action": "restrictAccess",
      "restrictionAction": "block"
    }
  ],
  "processingErrors": []
}

Exemple 5 : Contenu du fichier avec une étiquette de confidentialité

Demande

L’exemple suivant fournit un objet de métadonnées d’étiquette de confidentialité pour une entrée de contenu de fichier. La propriété sensitivityLabels est une collection, donc l’objet unique est entouré d’un tableau. Les identificateurs et les valeurs d’étiquette de cet exemple sont fictifs.

POST https://graph.microsoft.com/beta/users/5def8f26-aff8-4db6-a08c-0fcf8f1aa2ba/dataSecurityAndGovernance/processContent
Content-Type: application/json

{
  "contentToProcess": {
    "contentEntries": [
      {
        "@odata.type": "#microsoft.graph.processFileMetadata",
        "identifier": "project-proposal",
        "content": {
          "@odata.type": "#microsoft.graph.textContent",
          "data": "Draft project proposal."
        },
        "name": "Project proposal.docx",
        "isTruncated": false,
        "createdDateTime": "2026-10-01T09:00:00Z",
        "modifiedDateTime": "2026-10-01T09:00:00Z",
        "ownerId": "5def8f26-aff8-4db6-a08c-0fcf8f1aa2ba",
        "sensitivityLabels": [
          {
            "id": "f7c86e4a-e462-4bbb-a0f0-078c10aa2898",
            "applicationMode": "manual"
          }
        ]
      }
    ],
    "activityMetadata": {
      "activity": "uploadFile"
    },
    "deviceMetadata": {
      "deviceType": "managed",
      "operatingSystemSpecifications": {
        "operatingSystemPlatform": "Windows 11",
        "operatingSystemVersion": "10.0.26100.0"
      }
    },
    "integratedAppMetadata": {
      "name": "Microsoft 365 Copilot",
      "version": "1.0.0"
    },
    "protectedAppMetadata": {
      "name": "Microsoft 365 Copilot in Word",
      "version": "1.0.0",
      "applicationLocation": {
        "@odata.type": "#microsoft.graph.policyLocationApplication",
        "value": "Copilot.M365.Word"
      }
    }
  }
}

Réponse

L’exemple suivant montre une réponse lorsqu’une stratégie de protection des données applicable nécessite le blocage du contenu envoyé. Les actions renvoyées dépendent des stratégies applicables, et non du nombre d’étiquettes fournies.

HTTP/1.1 200 OK
Content-Type: application/json

{
  "@odata.context": "https://graph.microsoft.com/beta/$metadata#microsoft.graph.processContentResponse",
  "protectionScopeState": "notModified",
  "policyActions": [
    {
      "@odata.type": "#microsoft.graph.restrictAccessAction",
      "action": "restrictAccess",
      "restrictionAction": "block"
    }
  ],
  "processingErrors": []
}

Exemple 6 : contenu d’un fichier avec deux étiquettes de niveau de confidentialité

Demande

L’exemple suivant fournit deux objets de métadonnées d’étiquette de confidentialité distincts pour la même entrée de contenu de fichier. Les deux objets se trouvent dans la collection sensitivityLabels héritée ; Chacun possède son propre identificateur d’étiquette et son propre mode d’application. La collection décrit les métadonnées fournies par l’appelant et n’applique pas plusieurs étiquettes au fichier.

POST https://graph.microsoft.com/beta/users/5def8f26-aff8-4db6-a08c-0fcf8f1aa2ba/dataSecurityAndGovernance/processContent
Content-Type: application/json

{
  "contentToProcess": {
    "contentEntries": [
      {
        "@odata.type": "#microsoft.graph.processFileMetadata",
        "identifier": "project-proposal",
        "content": {
          "@odata.type": "#microsoft.graph.textContent",
          "data": "Draft project proposal."
        },
        "name": "Project proposal.docx",
        "isTruncated": false,
        "createdDateTime": "2026-10-01T09:00:00Z",
        "modifiedDateTime": "2026-10-01T09:00:00Z",
        "ownerId": "5def8f26-aff8-4db6-a08c-0fcf8f1aa2ba",
        "sensitivityLabels": [
          {
            "id": "8d14c2db-3e52-4345-af62-4ee3e65bff9e",
            "applicationMode": "automatic"
          },
          {
            "id": "f7c86e4a-e462-4bbb-a0f0-078c10aa2898",
            "applicationMode": "manual"
          }
        ]
      }
    ],
    "activityMetadata": {
      "activity": "uploadFile"
    },
    "deviceMetadata": {
      "deviceType": "managed",
      "operatingSystemSpecifications": {
        "operatingSystemPlatform": "Windows 11",
        "operatingSystemVersion": "10.0.26100.0"
      }
    },
    "integratedAppMetadata": {
      "name": "Microsoft 365 Copilot",
      "version": "1.0.0"
    },
    "protectedAppMetadata": {
      "name": "Microsoft 365 Copilot in Word",
      "version": "1.0.0",
      "applicationLocation": {
        "@odata.type": "#microsoft.graph.policyLocationApplication",
        "value": "Copilot.M365.Word"
      }
    }
  }
}

Réponse

L’exemple suivant montre une réponse lorsqu’une stratégie de protection des données applicable nécessite le blocage du contenu envoyé. La fourniture de deux étiquettes ne détermine pas en soi la réponse.

HTTP/1.1 200 OK
Content-Type: application/json

{
  "@odata.context": "https://graph.microsoft.com/beta/$metadata#microsoft.graph.processContentResponse",
  "protectionScopeState": "notModified",
  "policyActions": [
    {
      "@odata.type": "#microsoft.graph.restrictAccessAction",
      "action": "restrictAccess",
      "restrictionAction": "block"
    }
  ],
  "processingErrors": []
}