Effectuer le téléchargement en bloc

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 .

Effectuez un nouveau téléchargement en bloc à l’aide de la tâche de synchronisation. Utilisez ce point de terminaison d’API pour ingérer des données dans le service de synchronisation Microsoft Entra. Le service de synchronisation applique les mappages associés au travail de synchronisation et traite les données entrantes. La limite de débit pour cette API est de 40 requêtes par seconde. Chaque demande peut contenir un maximum de 50 opérations utilisateur dans le tableau Opérations de demande en bloc.

Remarque

Cette API est en avant-première publique et peut être utilisée uniquement avec des applications d’approvisionnement entrant pilotées par API.

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) SynchronizationData-User.Upload Non disponible.
Déléguée (compte Microsoft personnel) Non prise en charge. Non prise en charge.
Application SynchronizationData-User.Upload.OwnedBy SynchronizationData-User.Upload

Remarque

Cette API est principalement destinée à être utilisée au sein d’une application ou d’un service responsable du traitement des données d’identité faisant autorité et de leur téléchargement dans Microsoft Entra ID. Les administrateurs de client peuvent configurer un principal du service ou une identité gérée pour accorder l’autorisation d’effectuer le chargement. Il n’existe pas de rôle d’annuaire intégré Microsoft Entra distinct pouvant être attribué par l’utilisateur pour cette API. En dehors des applications qui ont acquis SynchronizationData-User.Upload une autorisation avec le consentement d’administrateur, les utilisateurs administrateurs dotés du rôle d’administrateur utilisateur peuvent appeler l’API.

Requête HTTP

POST /servicePrincipals/{servicePrincipalId}/synchronization/jobs/{jobId}/bulkUpload

Dans le point de terminaison de l’API, {servicePrincipalId} fait référence à l’ID d’objet principal du service et {jobId} fait référence à l’ID de tâche d’approvisionnement.

En-têtes de demande

Nom Description
Autorisation Porteur {token}. Obligatoire. En savoir plus sur l’authentification et les autorisations.
Content-Type application/scim+json. Obligatoire.

Corps de la demande

Dans le corps de la demande, indiquez un type de ressource bulkUpload . Reportez-vous à la section Exemples pour obtenir des exemples de charges utiles.

Réponse

En cas de succès, retourne une 202 Accepted réponse et rien dans le corps de la réponse. Il renvoie également un en-tête Location pour vérifier le status de la mise en service de la demande en bloc.

Code d’état HTTP Explication
202 (Accepté) La demande en bloc est effectuée pour l’exécution et est traitée par la tâche d’approvisionnement associée. La Location clé dans l’en-tête de réponse pointe vers le point de terminaison des journaux d’approvisionnement qui peut être utilisé pour case activée l’status de l’approvisionnement de la demande en bloc.
400 (Demande incorrecte) La requête est insécable, syntaxiquement incorrecte ou viole le schéma. La cause la plus fréquente de cette erreur est l’absence d’en-tête Content-Typede requête . Assurez-vous qu’il est présent et définissez-le sur application/scim+json.
401 (Non autorisé) L’en-tête authorization n’est pas valide ou est manquant. Vérifiez que l’en-tête d’autorisation contient un jeton d’accès valide.
403 (Interdit) L’opération n’est pas autorisée d’après l’en-tête d’autorisation fourni. Assurez-vous que le client API dispose des autorisations nécessaires SynchronizationData-User.Upload et, pour les scénarios de délégation de données, l’appelant doit être un administrateur d’utilisateurs.

Exemples

Exemple 1 : Téléchargement en bloc à l’aide d’un utilisateur SCIM Core et d’un schéma utilisateur d’entreprise

Demande

La demande en bloc suivante utilise le schéma SCIM standard utilisateur principal et utilisateur entreprise. Il a deux opérations utilisateur dans le tableau Opérations . Vous pouvez envoyer un maximum de 50 opérations utilisateur dans chaque demande en bloc.

Détails du traitement : Le service d’approvisionnement lit les deux enregistrements utilisateur. Il utilise l’attribut correspondant pour userName et externalId qui est configuré dans le mappage d’attributs de la tâche d’approvisionnement pour déterminer s’il faut créer, mettre à jour, activer ou désactiver le compte utilisateur dans l’annuaire. Il résout la référence du gestionnaire à l’aide du manager.value champ. Spécifiez le externalId responsable de l’utilisateur dans ce champ. Dans l’exemple suivant, le service d’approvisionnement désigne Barbara Jensen en tant que responsable pour Kathy Jensen.

POST https://graph.microsoft.com/beta/servicePrincipals/{servicePrincipalId}/synchronization/jobs/{jobId}/bulkUpload
Authorization: Bearer <token>
Content-Type: application/scim+json

{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:BulkRequest"],
    "Operations": [
    {
        "method": "POST",
        "bulkId": "701984",
        "path": "/Users",
        "data": {
            "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User",
            "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User"],
            "externalId": "701984",
            "userName": "bjensen@example.com",
            "name": {
                "formatted": "Ms. Barbara J Jensen, III",
                "familyName": "Jensen",
                "givenName": "Barbara",
                "middleName": "Jane",
                "honorificPrefix": "Ms.",
                "honorificSuffix": "III"
            },
            "displayName": "Babs Jensen",
            "nickName": "Babs",
            "emails": [
            {
              "value": "bjensen@example.com",
              "type": "work",
              "primary": true
            }
            ],
            "addresses": [
            {
              "type": "work",
              "streetAddress": "234300 Universal City Plaza",
              "locality": "Hollywood",
              "region": "CA",
              "postalCode": "91608",
              "country": "USA",
              "formatted": "100 Universal City Plaza\nHollywood, CA 91608 USA",
              "primary": true
            }
            ],
            "phoneNumbers": [
            {
              "value": "555-555-5555",
              "type": "work"
            }
            ],
            "userType": "Employee",
            "title": "Tour Guide",
            "preferredLanguage": "en-US",
            "locale": "en-US",
            "timezone": "America/Los_Angeles",
            "active":true,
            "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User": {
                "employeeNumber": "701984",
                "costCenter": "4130",
                "organization": "Universal Studios",
                "division": "Theme Park",
                "department": "Tour Operations",
                "manager": {
                  "value": "89607",
                  "displayName": "John Smith"
                 }
            }
        }
    },
    {
        "method": "POST",
        "bulkId": "701985",
        "path": "/Users",
        "data": {
            "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User",
            "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User"],
            "externalId": "701985",
            "userName": "Kjensen@example.com",
            "name": {
                "formatted": "Ms. Kathy J Jensen, III",
                "familyName": "Jensen",
                "givenName": "Kathy",
                "middleName": "Jane",
                "honorificPrefix": "Ms.",
                "honorificSuffix": "III"
            },
            "displayName": "Kathy Jensen",
            "nickName": "Kathy",
            "emails": [
            {
              "value": "kjensen@example.com",
              "type": "work",
              "primary": true
            }
            ],
            "addresses": [
            {
              "type": "work",
              "streetAddress": "100 Oracle City Plaza",
              "locality": "Hollywood",
              "region": "CA",
              "postalCode": "91618",
              "country": "USA",
              "formatted": "100 Oracle City Plaza\nHollywood, CA 91618 USA",
              "primary": true
            }
            ],
            "phoneNumbers": [
            {
              "value": "555-555-5545",
              "type": "work"
            }
            ],
            "userType": "Employee",
            "title": "Tour Lead",
            "preferredLanguage": "en-US",
            "locale": "en-US",
            "timezone": "America/Los_Angeles",
            "active":true,
            "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User": {
              "employeeNumber": "701984",
              "costCenter": "4130",
              "organization": "Universal Studios",
              "division": "Theme Park",
              "department": "Tour Operations",
              "manager": {
                "value": "701984",
                "displayName": "Barbara Jensen"
              }
            }
        }
    }
],
    "failOnErrors": null
}

Réponse

Remarque : l’objet de réponse affiché ci-après peut être raccourci pour plus de lisibilité.

HTTP/1.1 202 Accepted
Content-Type: application/scim+json
client-request-id: 92cd10f6-fcc3-5d61-098e-a6dd35e460ef
content-length: "0"
location: "https://graph.microsoft.com/beta/auditLogs/provisioning/?$filter=jobid%20eq%20'API2AAD.b16687d38faf42adb29892cdcaf01c6e.1a03de52-b9c3-4e2c-a1e3-9145aaa8e530'"
request-id: beeb9ea0-f7e4-4fe7-8507-cd834c88f18b

{}

Exemple 2 : Téléchargement en bloc à l’aide de l’espace de noms de schéma personnalisé SCIM

Demande

La demande en bloc suivante utilise le schéma SCIM standard utilisateur principal et utilisateur entreprise. Il dispose d’un autre espace de noms de schéma personnalisé appelé urn:contoso:employee avec deux attributs HireDate et JobCode. Le schemas tableau dans l’objet de données est mis à jour pour inclure l’espace de noms de schéma personnalisé.

Détails du traitement : Le service d’approvisionnement lit les deux enregistrements utilisateur. Il utilise l’attribut correspondant pour userName et externalId qui est configuré dans le mappage d’attributs de la tâche d’approvisionnement pour déterminer s’il faut créer, mettre à jour, activer ou désactiver le compte utilisateur dans l’annuaire. Si vous incluez les deux attributs urn:contoso:employee:HireDate personnalisés et urn:contoso:employee:JobCode dans le mappage d’attributs de votre tâche d’approvisionnement, il est traité et les attributs cibles correspondants sont définis.

POST https://graph.microsoft.com/beta/servicePrincipals/{servicePrincipalId}/synchronization/jobs/{jobId}/bulkUpload
Authorization: Bearer <token>
Content-Type: application/scim+json

{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:BulkRequest"],
    "Operations": [
    {
        "method": "POST",
        "bulkId": "701984",
        "path": "/Users",
        "data": {
            "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User",
            "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User",
            "urn:contoso:employee"],
            "externalId": "701984",
            "userName": "bjensen@example.com",
            "name": {
                "formatted": "Ms. Barbara J Jensen, III",
                "familyName": "Jensen",
                "givenName": "Barbara",
                "middleName": "Jane",
                "honorificPrefix": "Ms.",
                "honorificSuffix": "III"
            },
            "displayName": "Babs Jensen",
            "nickName": "Babs",
            "emails": [
            {
              "value": "bjensen@example.com",
              "type": "work",
              "primary": true
            }
            ],
            "addresses": [
            {
              "type": "work",
              "streetAddress": "234300 Universal City Plaza",
              "locality": "Hollywood",
              "region": "CA",
              "postalCode": "91608",
              "country": "USA",
              "formatted": "100 Universal City Plaza\nHollywood, CA 91608 USA",
              "primary": true
            }
            ],
            "phoneNumbers": [
            {
              "value": "555-555-5555",
              "type": "work"
            }
            ],
            "userType": "Employee",
            "title": "Tour Guide",
            "preferredLanguage": "en-US",
            "locale": "en-US",
            "timezone": "America/Los_Angeles",
            "active":true,
            "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User": {
                "employeeNumber": "701984",
                "costCenter": "4130",
                "organization": "Universal Studios",
                "division": "Theme Park",
                "department": "Tour Operations",
                "manager": {
                  "value": "89607",
                  "displayName": "John Smith"
                 }
            },
            "urn:contoso:employee": {
                "HireDate": "2021-05-01T00:00:00-05:00",
                "JobCode": "AB-1002"
            }            
        }
    },
    {
        "method": "POST",
        "bulkId": "701985",
        "path": "/Users",
        "data": {
            "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User",
            "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User",
            "urn:contoso:employee"],
            "externalId": "701985",
            "userName": "Kjensen@example.com",
            "name": {
                "formatted": "Ms. Kathy J Jensen, III",
                "familyName": "Jensen",
                "givenName": "Kathy",
                "middleName": "Jane",
                "honorificPrefix": "Ms.",
                "honorificSuffix": "III"
            },
            "displayName": "Kathy Jensen",
            "nickName": "Kathy",
            "emails": [
            {
              "value": "kjensen@example.com",
              "type": "work",
              "primary": true
            }
            ],
            "addresses": [
            {
              "type": "work",
              "streetAddress": "100 Oracle City Plaza",
              "locality": "Hollywood",
              "region": "CA",
              "postalCode": "91618",
              "country": "USA",
              "formatted": "100 Oracle City Plaza\nHollywood, CA 91618 USA",
              "primary": true
            }
            ],
            "phoneNumbers": [
            {
              "value": "555-555-5545",
              "type": "work"
            }
            ],
            "userType": "Employee",
            "title": "Tour Lead",
            "preferredLanguage": "en-US",
            "locale": "en-US",
            "timezone": "America/Los_Angeles",
            "active":true,
            "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User": {
              "employeeNumber": "701984",
              "costCenter": "4130",
              "organization": "Universal Studios",
              "division": "Theme Park",
              "department": "Tour Operations",
              "manager": {
                "value": "701984",
                "displayName": "Barbara Jensen"
             }
            },
            "urn:contoso:employee": {
                "HireDate": "2022-07-15T00:00:00-05:00",
                "JobCode": "AB-1003"
            }            
        }
    }
],
    "failOnErrors": null
}

Réponse

Remarque : l’objet de réponse affiché ci-après peut être raccourci pour plus de lisibilité.

HTTP/1.1 202 Accepted
Content-Type: application/scim+json
client-request-id: 92cd10f6-fcc3-5d61-098e-a6dd35e460ef
content-length: "0"
location: "https://graph.microsoft.com/beta/auditLogs/provisioning/?$filter=jobid%20eq%20'API2AAD.b16687d38faf42adb29892cdcaf01c6e.1a03de52-b9c3-4e2c-a1e3-9145aaa8e530'"
request-id: beeb9ea0-f7e4-4fe7-8507-cd834c88f18b

{}

Exemple 3 : téléchargement en bloc pour mettre à jour un utilisateur existant

Demande

La demande en bloc suivante montre comment mettre à jour les attributs d’un utilisateur Microsoft Entra existant, modifier le service de l’utilisateur et désactiver la connexion pour l’utilisateur. Cet exemple suppose que vous avez configuré un mappage pour les champs externalId, Department et Active et que vous avez un utilisateur Microsoft Entra existant dont l’attribut correspond à externalId.

POST https://graph.microsoft.com/beta/servicePrincipals/{servicePrincipalId}/synchronization/jobs/{jobId}/bulkUpload
Authorization: Bearer <token>
Content-Type: application/scim+json

{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:BulkRequest"],
    "Operations": [
        {
            "method": "POST",
            "bulkId": "7172023",
            "path": "/Users",
            "data": {
                "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User",
                "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User"],
                "externalId": "7172023",
                "active": false,
                "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User": {
                    "department": "Tour Ops"
                }
            }
        }
    ],
    "failOnErrors": null
}

Réponse

Remarque : l’objet de réponse affiché ci-après peut être raccourci pour plus de lisibilité.

HTTP/1.1 202 Accepted
Content-Type: application/scim+json
client-request-id: 92cd20f6-fcc3-5d61-098e-a6dd35e460ef
content-length: "0"
location: "https://graph.microsoft.com/beta/auditLogs/provisioning/?$filter=jobid%20eq%20'API2AAD.b16687d38faf42adb29892cdcaf01c6e.1a03de52-b9c3-4e2c-a1e3-9145aaa8e530'"
request-id: beec9ea0-f7e4-4fe7-8507-cd834c88f18b

{}