Partager via


Exemple de fonctions et d’actions de l’API Web

Ce groupe d’exemples montre comment exécuter des fonctions et des actions liées et non liées, notamment des actions personnalisées, à l’aide de l’API Web Microsoft Dataverse. Cet exemple est mis en œuvre comme un projet distinct pour les langues suivantes :

Cet article décrit la structure et le contenu de l’exemple à un niveau de langue neutre supérieur. Examinez les exemples d’article liés ci-dessus pour les détails de mise en œuvre spécifiques à chaque langue sur la façon d’exécuter les opérations décrites dans cet article.

Montre ce qui suit

Cet exemple est composé des principales sections suivantes, qui contiennent les opérations de fonctions et d’actions de l’API Web qui sont décrites plus en détail dans les articles conceptuels associés.

Section Article Article(s) associé(s)
Section 1 : Fonction non liée WhoAmI WhoAmI Function
Fonctions non liées
Section 2 : Fonction non liée FormatAddress FormatAddress Function
Transmission de paramètres à une fonction
Section 3 : Fonction non liée InitializeFrom InitializeFrom Function
Créer un enregistrement depuis un autre enregistrement
Mapper les colonnes de table
Personnaliser les mappages de table et de colonne
Section 4 : Fonction non liée RetrieveCurrentOrganization RetrieveCurrentOrganization Function
Section 6 : API personnalisée IsSystemAdmin de la fonction liée Fonctions liées
Utiliser les fonctions liées
Exemple : API personnalisée IsSystemAdmin
Créer et utiliser des API personnalisées
Section 7 : Action non liée GrantAccess GrantAccess Action
Partage et attribution
RetrievePrincipalAccess Function
Section 8 : Actions liées AddPrivilegesRole Actions liées
Utiliser les actions liées
AddPrivilegesRole Action
Référence de table/entité de rôle de sécurité (Role)
Section 9 : Supprimer des exemples d’enregistrements Suppression de base
Exécuter des opérations par lots à l’aide de l’API Web

Les sections suivantes contiennent un bref examen des opérations de l’API web Dataverse effectuées, ainsi que les messages HTTP et la sortie de la console associée correspondants.

Section 1 : Fonction non liée WhoAmI

La fonction WhoAmI est une fonction non liée simple et couramment utilisée.

Demande :

GET [Organization Uri]/api/data/v9.2/WhoAmI HTTP/1.1
OData-MaxVersion: 4.0
OData-Version: 4.0
If-None-Match: null
Accept: application/json

Réponse :

HTTP/1.1 200 OK
OData-Version: 4.0

{
  "@odata.context": "[Organization Uri]/api/data/v9.2/$metadata#Microsoft.Dynamics.CRM.WhoAmIResponse",
  "BusinessUnitId": "cca3985e-c618-ea11-a811-000d3a33f066",
  "UserId": "2138bd90-ec19-ea11-a811-000d3a334e11",
  "OrganizationId": "f2c9290b-0806-4d48-bf9c-3814d4286755"
}

Sortie de la console :

WhoAmI tells us:
WhoAmIResponse.BusinessUnitId:cca3985e-c618-ea11-a811-000d3a33f066
WhoAmIResponse.UserId:2138bd90-ec19-ea11-a811-000d3a334e11
WhoAmIResponse.OrganizationId:f2c9290b-0806-4d48-bf9c-3814d4286755

La valeur BusinessUnitId récupérée ici sera utilisée dans Section 8 : Action liée AddPrivilegesRole.

Section 2 : Fonction non liée FormatAddress

La fonction FormatAddress est une fonction non liée qui nécessite la définition de paramètres. Elle renvoie une chaîne qui représente une adresse conformément aux exigences spécifiques au format national/régional.

Dans cet exemple, les paramètres sont définis à l’aide de valeurs de paramètre de chaîne de requête.

  1. Une demande d’adresse aux États-Unis :

    Demande :

    GET [Organization Uri]/api/data/v9.2/FormatAddress(Line1=@p1,City=@p2,StateOrProvince=@p3,PostalCode=@p4,Country=@p5)?@p1='123%20Maple%20St.'&@p2='Seattle'&@p3='WA'&@p4='98007'&@p5='USA' HTTP/1.1
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    If-None-Match: null
    Accept: application/json
    

    Réponse :

    HTTP/1.1 200 OK
    OData-Version: 4.0
    
    {
    "@odata.context": "[Organization Uri]/api/data/v9.2/$metadata#Microsoft.Dynamics.CRM.FormatAddressResponse",
    "Address": "123 Maple St.\r\nSeattle, WA 98007\r\nUSA"
    }
    

    Sortie de la console :

    USA Formatted Address:
    123 Maple St.
    Seattle, WA 98007
    USA
    
  2. Une demande d’adresse au Japon.

    Demande :

    GET [Organization Uri]/api/data/v9.2/FormatAddress(Line1=@p1,City=@p2,StateOrProvince=@p3,PostalCode=@p4,Country=@p5)?@p1='1-2-3%20Sakura'&@p2='Nagoya'&@p3='Aichi'&@p4='455-2345'&@p5='JAPAN' HTTP/1.1
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    If-None-Match: null
    Accept: application/json
    

    Réponse :

    HTTP/1.1 200 OK
    OData-Version: 4.0
    
    {
    "@odata.context": "[Organization Uri]/api/data/v9.2/$metadata#Microsoft.Dynamics.CRM.FormatAddressResponse",
    "Address": "455-2345\r\nAichi\r\nNagoya\r\n1-2-3 Sakura\r\nJAPAN"
    }
    

    Sortie de la console :

    JAPAN Formatted Address:
    455-2345
    Aichi
    Nagoya
    1-2-3 Sakura
    JAPAN
    

Section 3 : Fonction non liée InitializeFrom

La fonction InitializeFrom est une fonction non liée qui nécessite des paramètres. Cette fonction renvoie les données d’un nouvel enregistrement à créer dans le contexte d’un enregistrement existant. En fonction des données de configuration pour contrôler les données copiées, les données d’enregistrement renvoyées incluent les données copiées à partir de l’enregistrement d’origine.

Pour plus d’informations :

  1. Créez un enregistrement qui sera l’enregistrement d’origine :

    Demande :

    POST [Organization Uri]/api/data/v9.2/accounts HTTP/1.1
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    If-None-Match: null
    Accept: application/json
    
    {
    "accountcategorycode": 1,
    "address1_addresstypecode": 3,
    "address1_city": "Redmond",
    "address1_country": "USA",
    "address1_line1": "123 Maple St.",
    "address1_name": "Corporate Headquarters",
    "address1_postalcode": "98000",
    "address1_shippingmethodcode": 4,
    "address1_stateorprovince": "WA",
    "address1_telephone1": "555-1234",
    "customertypecode": 3,
    "description": "Contoso is a business consulting company.",
    "emailaddress1": "info@contoso.com",
    "industrycode": 7,
    "name": "Contoso Consulting",
    "numberofemployees": 150,
    "ownershipcode": 2,
    "preferredcontactmethodcode": 2,
    "telephone1": "(425) 555-1234"
    }
    

    Réponse :

    HTTP/1.1 204 NoContent
    OData-Version: 4.0
    OData-EntityId: [Organization Uri]/api/data/v9.2/accounts(98d463e4-6d29-ed11-9db1-00224804f8e2)
    
  2. Utilisez InitializeFrom pour obtenir les données d’un nouvel enregistrement à partir de l’enregistrement d’origine.

    Demande :

    GET [Organization Uri]/api/data/v9.2/InitializeFrom(EntityMoniker=@p1,TargetEntityName=@p2,TargetFieldType=@p3)?@p1={'@odata.id':'accounts(98d463e4-6d29-ed11-9db1-00224804f8e2)'}&@p2='account'&@p3=Microsoft.Dynamics.CRM.TargetFieldType'ValidForCreate' HTTP/1.1
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    If-None-Match: null
    Accept: application/json
    

    Réponse :

    HTTP/1.1 200 OK
    Preference-Applied: return=representation
    OData-Version: 4.0
    
    {
    "@odata.context": "[Organization Uri]/api/data/v9.2/$metadata#accounts/$entity",
    "@odata.type": "#Microsoft.Dynamics.CRM.account",
    "parentaccountid@odata.bind": "accounts(98d463e4-6d29-ed11-9db1-00224804f8e2)"
    }
    

    Sortie de la console :

    New data based on original record:
    {
    "@odata.context": "[Organization URI]/api/data/v9.2/$metadata#accounts/$entity",
    "@odata.type": "#Microsoft.Dynamics.CRM.account",
    "parentaccountid@odata.bind": "accounts(98d463e4-6d29-ed11-9db1-00224804f8e2)"
    }
    

    Notes

    Si aucune colonne n’est mappée pour cette relation, seules les valeurs de colonne minimales sont incluses, comme indiqué ci-dessus. Dans ce cas, seul parentaccountid cherche à associer le nouvel enregistrement à l’original.

    Si toutes les colonnes disponibles sont mappées pour cette relation, la valeur renvoyée inclut davantage de données de l’enregistrement d’origine, par exemple :

    {
       "@odata.context": "[Organization URI]/api/data/v9.2/$metadata#accounts/$entity",
       "@odata.type": "#Microsoft.Dynamics.CRM.account",
       "territorycode": 1,
       "address2_freighttermscode": 1,
       "address2_shippingmethodcode": 1,
       "address1_telephone1": "555-1234",
       "accountclassificationcode": 1,
       "creditonhold": false,
       "donotbulkemail": false,
       "donotsendmm": false,
       "emailaddress1": "info@contoso.com",
       "address1_line1": "123 Maple St.",
       "customertypecode": 3,
       "ownershipcode": 2,
       "businesstypecode": 1,
       "donotpostalmail": false,
       "donotbulkpostalmail": false,
       "name": "Contoso Consulting",
       "address1_city": "Redmond",
       "description": "Contoso is a business consulting company.",
       "donotemail": false,
       "address2_addresstypecode": 1,
       "donotphone": false,
       "statuscode": 1,
       "address1_name": "Corporate Headquarters",
       "followemail": true,
       "preferredcontactmethodcode": 2,
       "numberofemployees": 150,
       "industrycode": 7,
       "telephone1": "(425) 555-1234",
       "address1_shippingmethodcode": 4,
       "donotfax": false,
       "address1_addresstypecode": 3,
       "customersizecode": 1,
       "marketingonly": false,
       "accountratingcode": 1,
       "shippingmethodcode": 1,
       "address1_country": "USA",
       "participatesinworkflow": false,
       "accountcategorycode": 1,
       "address1_postalcode": "98000",
       "address1_stateorprovince": "WA",
       "parentaccountid@odata.bind": "accounts(fe9873ac-2f1b-ed11-b83e-00224837179f)"
    }     
    
  3. Créez un nouvel enregistrement contenant les données renvoyées avec InitializeFrom.

    Demande :

    POST [Organization Uri]/api/data/v9.2/accounts HTTP/1.1
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    If-None-Match: null
    Accept: application/json
    
    {
    "@odata.context": "[Organization Uri]/api/data/v9.2/$metadata#accounts/$entity",
    "@odata.type": "#Microsoft.Dynamics.CRM.account",
    "parentaccountid@odata.bind": "accounts(98d463e4-6d29-ed11-9db1-00224804f8e2)",
    "name": "Contoso Consulting Chicago Branch",
    "address1_city": "Chicago",
    "address1_line1": "456 Elm St.",
    "address1_name": "Chicago Branch Office",
    "address1_postalcode": "60007",
    "address1_stateorprovince": "IL",
    "address1_telephone1": "(312) 555-3456",
    "numberofemployees": 12
    }
    

    Réponse :

    HTTP/1.1 204 NoContent
    OData-Version: 4.0
    OData-EntityId: [Organization Uri]/api/data/v9.2/accounts(9ad463e4-6d29-ed11-9db1-00224804f8e2)
    

    Sortie de la console :

    New Record:
    {
    "@odata.context": "[Organization URI]/api/data/v9.2/$metadata#accounts/$entity",
    "@odata.type": "#Microsoft.Dynamics.CRM.account",
    "parentaccountid@odata.bind": "accounts(98d463e4-6d29-ed11-9db1-00224804f8e2)",
    "name": "Contoso Consulting Chicago Branch",
    "address1_city": "Chicago",
    "address1_line1": "456 Elm St.",
    "address1_name": "Chicago Branch Office",
    "address1_postalcode": "60007",
    "address1_stateorprovince": "IL",
    "address1_telephone1": "(312) 555-3456",
    "numberofemployees": 12
    }
    

Section 4 : Fonction non liée RetrieveCurrentOrganization

Fonction RetrieveCurrentOrganization renvoie les informations concernant l’organisation actuelle. Elle nécessite une valeur EndpointAccessType enum type comme paramètre.

RetrieveCurrentOrganization renvoie un type complexe RetrieveCurrentOrganizationResponse qui inclut une propriété Detail qui est un type complexe OrganizationDetail, qui a des propriétés complexes qui utilisent le type complexe EndpointCollection, EndpointType enum type et OrganizationState enum type

Notes

Remarquez comment la valeur du paramètre AccessType EndpointAccessType enum type est transmise dans l’URL. Le nom complet avec le nom du membre sélectionné est requis.

Demande :

GET [Organization Uri]/api/data/v9.2/RetrieveCurrentOrganization(AccessType=@p1)?@p1=Microsoft.Dynamics.CRM.EndpointAccessType'Default' HTTP/1.1
OData-MaxVersion: 4.0
OData-Version: 4.0
If-None-Match: null
Accept: application/json

Réponse :

HTTP/1.1 200 OK
OData-Version: 4.0

{
  "@odata.context": "[Organization Uri]/api/data/v9.2/$metadata#Microsoft.Dynamics.CRM.RetrieveCurrentOrganizationResponse",
  "Detail": {
    "OrganizationId": "f2c9290b-0806-4d48-bf9c-3814d4286755",
    "FriendlyName": "[Organization Name]",
    "OrganizationVersion": "9.2.22074.168",
    "EnvironmentId": "Default-f6976b02-5a42-4e90-ac3d-8bf516ce0859",
    "DatacenterId": "695014e1-bafd-4d7e-9d3d-2261d4aaf780",
    "Geo": "NA",
    "TenantId": "f6976b02-5a42-4e90-ac3d-8bf516ce0859",
    "UrlName": "org619726b5",
    "UniqueName": "org0335df44",
    "State": "Enabled",
    "Endpoints": {
      "Count": 3,
      "IsReadOnly": false,
      "Keys": [
        "WebApplication",
        "OrganizationService",
        "OrganizationDataService"
      ],
      "Values": [
        "[Organization URI]/",
        "[Organization URI]/XRMServices/2011/Organization.svc",
        "[Organization URI]/XRMServices/2011/OrganizationData.svc"
      ]
    }
  }
}

Sortie de la console :

Data returned with RetrieveCurrentOrganizationResponse:
{
  "OrganizationId": "f2c9290b-0806-4d48-bf9c-3814d4286755",
  "FriendlyName": "[Organization Name]",
  "OrganizationVersion": "9.2.22074.168",
  "EnvironmentId": "Default-f6976b02-5a42-4e90-ac3d-8bf516ce0859",
  "DatacenterId": "695014e1-bafd-4d7e-9d3d-2261d4aaf780",
  "Geo": "NA",
  "TenantId": "f6976b02-5a42-4e90-ac3d-8bf516ce0859",
  "UrlName": "org619726b5",
  "UniqueName": "org0335df44",
  "Endpoints": {
    "Count": 3,
    "IsReadOnly": false,
    "Keys": [
      "WebApplication",
      "OrganizationService",
      "OrganizationDataService"
    ],
    "Values": [
      "[Organization URI]/",
      "[Organization URI]/XRMServices/2011/Organization.svc",
      "[Organization URI]/XRMServices/2011/OrganizationData.svc"
    ]
  },
  "State": "Enabled"
}

Section 5 : Fonction non liée RetrieveTotalRecordCount

La fonction RetrieveTotalRecordCount renvoie des données sur le nombre total d’enregistrements pour des entités spécifiques. Les données récupérées proviennent d’un instantané au cours des dernières 24 heures, il ne s’agit donc pas d’un décompte exact à un moment donné.

Demande :

GET [Organization Uri]/api/data/v9.2/RetrieveTotalRecordCount(EntityNames=@p1)?@p1=["account","contact"] HTTP/1.1
OData-MaxVersion: 4.0
OData-Version: 4.0
If-None-Match: null
Accept: application/json

Réponse :

HTTP/1.1 200 OK
OData-Version: 4.0

{
  "@odata.context": "[Organization Uri]/api/data/v9.2/$metadata#Microsoft.Dynamics.CRM.RetrieveTotalRecordCountResponse",
  "EntityRecordCountCollection": {
    "Count": 2,
    "IsReadOnly": false,
    "Keys": [
      "account",
      "contact"
    ],
    "Values": [
      19,
      3
    ]
  }
}

Sortie de la console :

The number of records for each table according to RetrieveTotalRecordCount:
        account:19
        contact:3

Section 6 : API personnalisée IsSystemAdmin de la fonction liée

Pour illustrer une fonction liée, cet exemple importe un message personnalisé défini dans une solution avant d’exécuter cette partie de l’exemple.

L’exemple utilise le message personnalisé sample_IsSystemAdmin qui est défini à l’aide d’une API personnalisée. Vous pouvez trouver des détails sur cette API personnalisée ici : Exemple : API personnalisée IsSystemAdmin.

Notes

Lorsque vous utilisez une fonction ou une action liée, vous devez inclure le nom complet, qui inclut la fonction Microsoft.Dynamics.CRM.+ < ou le nom de l’action name> dans l’url.

Demande :

GET [Organization Uri]/api/data/v9.2/systemusers(ce31e691-f559-ec11-8f8f-000d3a308de4)/Microsoft.Dynamics.CRM.sample_IsSystemAdmin HTTP/1.1
OData-MaxVersion: 4.0
OData-Version: 4.0
If-None-Match: null
Accept: application/json

Réponse :

HTTP/1.1 200 OK
OData-Version: 4.0

{
  "@odata.context": "[Organization Uri]/api/data/v9.2/$metadata#Microsoft.Dynamics.CRM.sample_IsSystemAdminResponse",
  "HasRole": false
}

Cet exemple récupère 10 enregistrements d’utilisateurs et teste chacun d’eux pour déterminer si chaque utilisateur dispose du rôle de sécurité Administrateur système.

Sortie de la console :

Les noms réels dépendent des personnes dans votre environnement.

Top 10 users and whether they have System Administrator role.
        Gediminas Matulis does not have the System Administrator role.
        Gaby Frost does not have the System Administrator role.
        Henrikas Martinkus does not have the System Administrator role.
        Alain Davignon HAS the System Administrator role.
        Isobel Macintyre HAS the System Administrator role.
        Ale Laukaitiene HAS the System Administrator role.
        Rudabeh Yekta HAS the System Administrator role.
        Grazina Januliene HAS the System Administrator role.
        Pranciskus Sukys HAS the System Administrator role.
        Asha Sawant HAS the System Administrator role.

Pour un autre exemple de fonction liée, voir l’utilisation de la fonction RetrievePrincipalAccess dans l’exemple suivant.

Section 7 : Action non liée GrantAccess

L’action GrantAccess est une action non liée qui permet aux utilisateurs de partager des privilèges spécifiques avec d’autres utilisateurs de leur environnement.

L’exemple de code illustre les opérations suivantes :

  1. Créez un enregistrement à partager.

  2. Trouvez un utilisateur activé autre que l’utilisateur actuel.

  3. Utilisez la fonction RetrievePrincipalAccess pour déterminer les droits d’accès dont dispose l’utilisateur pour l’enregistrement créé.

    Demande :

    GET [Organization Uri]/api/data/v9.2/systemusers(ce31e691-f559-ec11-8f8f-000d3a308de4)/Microsoft.Dynamics.CRM.RetrievePrincipalAccess(Target=@p1)?@p1={'@odata.id':'accounts(659876fd-6d29-ed11-9db1-00224804f8e2)'} HTTP/1.1
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    If-None-Match: null
    Accept: application/json
    

    Réponse :

    HTTP/1.1 200 OK
    OData-Version: 4.0
    
    {
    "@odata.context": "[Organization Uri]/api/data/v9.2/$metadata#Microsoft.Dynamics.CRM.RetrievePrincipalAccessResponse",
    "AccessRights": "ShareAccess"
    }
    

    Sortie de la console :

    Testing user: Gediminas Matulis
    Current users access: ShareAccess
    
  4. Si l’utilisateur n’a pas AccessRights.DeleteAccess, accordez cet accès à l’utilisateur à l’aide de l’action GrantAccess.

    Demande :

    POST [Organization Uri]/api/data/v9.2/GrantAccess HTTP/1.1
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    If-None-Match: null
    Accept: application/json
    
    {
    "Target": {
       "accountid": "659876fd-6d29-ed11-9db1-00224804f8e2",
       "@odata.type": "Microsoft.Dynamics.CRM.account"
    },
    "PrincipalAccess": {
       "AccessMask": "DeleteAccess",
       "Principal": {
          "systemuserid": "ce31e691-f559-ec11-8f8f-000d3a308de4",
          "@odata.type": "Microsoft.Dynamics.CRM.systemuser"
       }
     }
    }
    

    Réponse :

    HTTP/1.1 204 NoContent
    OData-Version: 4.0
    
  5. Une fois que DeleteAccess a été accordé, le même appel à RetrievePrincipalAccess Function indique qu’ils ont maintenant accès pour supprimer cet enregistrement :

    Demande :

    GET [Organization Uri]/api/data/v9.2/systemusers(ce31e691-f559-ec11-8f8f-000d3a308de4)/Microsoft.Dynamics.CRM.RetrievePrincipalAccess(Target=@p1)?@p1={'@odata.id':'accounts(659876fd-6d29-ed11-9db1-00224804f8e2)'} HTTP/1.1
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    If-None-Match: null
    Accept: application/json
    

    Réponse :

    HTTP/1.1 200 OK
    OData-Version: 4.0
    
    {
    "@odata.context": "[Organization Uri]/api/data/v9.2/$metadata#Microsoft.Dynamics.CRM.RetrievePrincipalAccessResponse",
    "AccessRights": "DeleteAccess, ShareAccess"
    }
    

    Sortie de la console :

    Gediminas Matulis was granted DeleteAccess
    

Section 8 : Action liée AddPrivilegesRole

L’action AddPrivilegesRole est une action liée au type d’entité rôle. C’est le moyen d’ajouter des privilèges à un rôle de sécurité.

L’exemple de code illustre les opérations suivantes :

  1. Créez un rôle de sécurité. Le rôle de sécurité doit être associé à une division. La valeur de l’identifiant de la division a été récupérée dans Section 1 : Fonction non liée WhoAmI.

    Demande :

    POST [Organization Uri]/api/data/v9.2/roles HTTP/1.1
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    If-None-Match: null
    Accept: application/json
    
    {
    "businessunitid@odata.bind": "businessunits(cca3985e-c618-ea11-a811-000d3a33f066)",
    "name": "Test Role"
    }
    

    Réponse :

    HTTP/1.1 204 NoContent
    OData-Version: 4.0
    OData-EntityId: [Organization Uri]/api/data/v9.2/roles(669876fd-6d29-ed11-9db1-00224804f8e2)
    
  2. Récupérez le rôle, développez la propriété de navigation avec une valeur de collection roleprivileges_association pour inclure les privilèges inclus avec le rôle.

    Demande :

    GET [Organization Uri]/api/data/v9.2/roles(669876fd-6d29-ed11-9db1-00224804f8e2)?$select=roleid&$expand=roleprivileges_association($select=name) HTTP/1.1
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    If-None-Match: null
    Accept: application/json
    

    Réponse :

    HTTP/1.1 200 OK
    ETag: W/"13278232"
    OData-Version: 4.0
    
    {
    "@odata.context": "[Organization Uri]/api/data/v9.2/$metadata#roles(roleid,roleprivileges_association(name))/$entity",
    "@odata.etag": "W/\"13278232\"",
    "roleid": "669876fd-6d29-ed11-9db1-00224804f8e2",
    "roleprivileges_association": [
       {
          "@odata.etag": "W/\"142279\"",
          "name": "prvReadSharePointData",
          "privilegeid": "fecbd29c-df64-4ede-a611-47226b402c22"
       },
       {
          "@odata.etag": "W/\"142304\"",
          "name": "prvReadSdkMessage",
          "privilegeid": "94c3ac2c-eb23-41cb-a903-4e2e49e910b4"
       },
       {
          "@odata.etag": "W/\"142421\"",
          "name": "prvWriteSharePointData",
          "privilegeid": "cfdd12cf-090b-4599-8302-771962d2350a"
       },
       {
          "@odata.etag": "W/\"142477\"",
          "name": "prvReadSdkMessageProcessingStepImage",
          "privilegeid": "122e085f-8c52-47e8-8415-875dee1c961e"
       },
       {
          "@odata.etag": "W/\"142695\"",
          "name": "prvReadSdkMessageProcessingStep",
          "privilegeid": "db10a828-ec49-4035-8b7e-c58efaf169ec"
       },
       {
          "@odata.etag": "W/\"142713\"",
          "name": "prvReadPluginAssembly",
          "privilegeid": "f5b50296-a212-488a-be92-cbcca8971717"
       },
       {
          "@odata.etag": "W/\"142735\"",
          "name": "prvCreateSharePointData",
          "privilegeid": "5eb85025-363b-46ea-a77e-ce24159cd231"
       },
       {
          "@odata.etag": "W/\"142740\"",
          "name": "prvReadPluginType",
          "privilegeid": "9365005c-4703-473b-8d3c-d073cfd8670c"
       },
       {
          "@odata.etag": "W/\"142761\"",
          "name": "prvReadSharePointDocument",
          "privilegeid": "d71fc8d0-99bc-430e-abd7-d95c64f11e9c"
       }
    ]
    }
    
  3. Affiche le nombre de privilèges créés par défaut pour le nouveau rôle.

    Sortie de la console :

    Number of privileges in new role: 9
          prvReadSharePointData
          prvReadSdkMessage
          prvWriteSharePointData
          prvReadSdkMessageProcessingStepImage
          prvReadSdkMessageProcessingStep
          prvReadPluginAssembly
          prvCreateSharePointData
          prvReadPluginType
          prvReadSharePointDocument
    
  4. Retrouvez la définition des privilèges prvCreateAccount et prvReadAccount à partir de privilege EntityType.

    Demande :

    GET [Organization Uri]/api/data/v9.2/privileges?$select=name&$filter=name eq 'prvCreateAccount' or name eq 'prvReadAccount' HTTP/1.1
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    If-None-Match: null
    Accept: application/json
    

    Réponse :

    HTTP/1.1 200 OK
    OData-Version: 4.0
    
    {
    "@odata.context": "[Organization Uri]/api/data/v9.2/$metadata#privileges(name)",
    "value": [
       {
          "@odata.etag": "W/\"142189\"",
          "name": "prvReadAccount",
          "privilegeid": "886b280c-6396-4d56-a0a3-2c1b0a50ceb0"
       },
       {
          "@odata.etag": "W/\"142359\"",
          "name": "prvCreateAccount",
          "privilegeid": "d26fe964-230b-42dd-ad93-5cc879de411e"
       }
     ]
    }
    
  5. Préparez une liste des instances RolePrivilege ComplexType pour les privilèges prvCreateAccount et prvReadAccount avec le jeu de propriétés Depth PrivilegeDepth.’Basic’.

  6. Passez la liste en tant que paramètre AddPrivilegesRole.Privileges.

    Demande :

    POST [Organization Uri]/api/data/v9.2/roles(669876fd-6d29-ed11-9db1-00224804f8e2)/Microsoft.Dynamics.CRM.AddPrivilegesRole HTTP/1.1
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    If-None-Match: null
    Accept: application/json
    
    {
    "Privileges": [
       {
          "Depth": "Basic",
          "PrivilegeId": "886b280c-6396-4d56-a0a3-2c1b0a50ceb0",
          "BusinessUnitId": "cca3985e-c618-ea11-a811-000d3a33f066",
          "PrivilegeName": "prvReadAccount"
       },
       {
          "Depth": "Basic",
          "PrivilegeId": "d26fe964-230b-42dd-ad93-5cc879de411e",
          "BusinessUnitId": "cca3985e-c618-ea11-a811-000d3a33f066",
          "PrivilegeName": "prvCreateAccount"
       }
     ]
    }
    

    Réponse :

    HTTP/1.1 204 NoContent
    OData-Version: 4.0
    
  7. Récupérez à nouveau les privilèges associés au rôle pour confirmer qu’ils ont été ajoutés.

    Demande :

    GET [Organization Uri]/api/data/v9.2/roles(669876fd-6d29-ed11-9db1-00224804f8e2)?$select=roleid&$expand=roleprivileges_association($select=name) HTTP/1.1
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    If-None-Match: null
    Accept: application/json
    

    Réponse :

    HTTP/1.1 200 OK
    ETag: W/"13278248"
    OData-Version: 4.0
    
    {
    "@odata.context": "[Organization Uri]/api/data/v9.2/$metadata#roles(roleid,roleprivileges_association(name))/$entity",
    "@odata.etag": "W/\"13278248\"",
    "roleid": "669876fd-6d29-ed11-9db1-00224804f8e2",
    "roleprivileges_association": [
       {
          "@odata.etag": "W/\"142189\"",
          "name": "prvReadAccount",
          "privilegeid": "886b280c-6396-4d56-a0a3-2c1b0a50ceb0"
       },
       {
          "@odata.etag": "W/\"142279\"",
          "name": "prvReadSharePointData",
          "privilegeid": "fecbd29c-df64-4ede-a611-47226b402c22"
       },
       {
          "@odata.etag": "W/\"142304\"",
          "name": "prvReadSdkMessage",
          "privilegeid": "94c3ac2c-eb23-41cb-a903-4e2e49e910b4"
       },
       {
          "@odata.etag": "W/\"142359\"",
          "name": "prvCreateAccount",
          "privilegeid": "d26fe964-230b-42dd-ad93-5cc879de411e"
       },
       {
          "@odata.etag": "W/\"142421\"",
          "name": "prvWriteSharePointData",
          "privilegeid": "cfdd12cf-090b-4599-8302-771962d2350a"
       },
       {
          "@odata.etag": "W/\"142477\"",
          "name": "prvReadSdkMessageProcessingStepImage",
          "privilegeid": "122e085f-8c52-47e8-8415-875dee1c961e"
       },
       {
          "@odata.etag": "W/\"142695\"",
          "name": "prvReadSdkMessageProcessingStep",
          "privilegeid": "db10a828-ec49-4035-8b7e-c58efaf169ec"
       },
       {
          "@odata.etag": "W/\"142713\"",
          "name": "prvReadPluginAssembly",
          "privilegeid": "f5b50296-a212-488a-be92-cbcca8971717"
       },
       {
          "@odata.etag": "W/\"142735\"",
          "name": "prvCreateSharePointData",
          "privilegeid": "5eb85025-363b-46ea-a77e-ce24159cd231"
       },
       {
          "@odata.etag": "W/\"142740\"",
          "name": "prvReadPluginType",
          "privilegeid": "9365005c-4703-473b-8d3c-d073cfd8670c"
       },
       {
          "@odata.etag": "W/\"142761\"",
          "name": "prvReadSharePointDocument",
          "privilegeid": "d71fc8d0-99bc-430e-abd7-d95c64f11e9c"
       }
    ]
    }
    

    Sortie de la console :

    Number of privileges after: 11
          prvReadAccount
          prvReadSharePointData
          prvReadSdkMessage
          prvCreateAccount
          prvWriteSharePointData
          prvReadSdkMessageProcessingStepImage
          prvReadSdkMessageProcessingStep
          prvReadPluginAssembly
          prvCreateSharePointData
          prvReadPluginType
          prvReadSharePointDocument
    

Section 9 : Supprimer des exemples d’enregistrements

Chaque enregistrement créé dans cet exemple a été ajouté à une liste pour être supprimé à la fin. Ces enregistrements sont supprimés à l’aide d’une demande $batch.

Demande :

POST [Organization Uri]/api/data/v9.2/$batch HTTP/1.1
OData-MaxVersion: 4.0
OData-Version: 4.0
If-None-Match: null
Accept: application/json

--batch_d6010246-cd97-429f-bc05-cf20054cfe8a
Content-Type: application/http
Content-Transfer-Encoding: binary
Content-Length: 121

DELETE /api/data/v9.2/accounts(98d463e4-6d29-ed11-9db1-00224804f8e2) HTTP/1.1


--batch_d6010246-cd97-429f-bc05-cf20054cfe8a
Content-Type: application/http
Content-Transfer-Encoding: binary
Content-Length: 121

DELETE /api/data/v9.2/accounts(9ad463e4-6d29-ed11-9db1-00224804f8e2) HTTP/1.1


--batch_d6010246-cd97-429f-bc05-cf20054cfe8a
Content-Type: application/http
Content-Transfer-Encoding: binary
Content-Length: 122

DELETE /api/data/v9.2/solutions(b37bc86a-4c3a-41be-b35d-ddfd129276c5) HTTP/1.1


--batch_d6010246-cd97-429f-bc05-cf20054cfe8a
Content-Type: application/http
Content-Transfer-Encoding: binary
Content-Length: 121

DELETE /api/data/v9.2/accounts(659876fd-6d29-ed11-9db1-00224804f8e2) HTTP/1.1


--batch_d6010246-cd97-429f-bc05-cf20054cfe8a
Content-Type: application/http
Content-Transfer-Encoding: binary
Content-Length: 118

DELETE /api/data/v9.2/roles(669876fd-6d29-ed11-9db1-00224804f8e2) HTTP/1.1


--batch_d6010246-cd97-429f-bc05-cf20054cfe8a--

Réponse :

HTTP/1.1 200 OK
OData-Version: 4.0

--batchresponse_cb852192-c300-4ed7-a54f-dc5fc7ee27c3
Content-Type: application/http
Content-Transfer-Encoding: binary

HTTP/1.1 204 No Content
OData-Version: 4.0


--batchresponse_cb852192-c300-4ed7-a54f-dc5fc7ee27c3
Content-Type: application/http
Content-Transfer-Encoding: binary

HTTP/1.1 204 No Content
OData-Version: 4.0


--batchresponse_cb852192-c300-4ed7-a54f-dc5fc7ee27c3
Content-Type: application/http
Content-Transfer-Encoding: binary

HTTP/1.1 204 No Content
OData-Version: 4.0


--batchresponse_cb852192-c300-4ed7-a54f-dc5fc7ee27c3
Content-Type: application/http
Content-Transfer-Encoding: binary

HTTP/1.1 204 No Content
OData-Version: 4.0


--batchresponse_cb852192-c300-4ed7-a54f-dc5fc7ee27c3
Content-Type: application/http
Content-Transfer-Encoding: binary

HTTP/1.1 204 No Content
OData-Version: 4.0


--batchresponse_cb852192-c300-4ed7-a54f-dc5fc7ee27c3--

Sortie de la console :

Deleting created records.

Voir aussi

Utilisation de l’API web Dataverse
Utiliser des fonctions API Web
Utiliser des actions API web
Exemple de fonctions et d’actions de l’API Web (C#)

Notes

Pouvez-vous nous indiquer vos préférences de langue pour la documentation ? Répondez à un court questionnaire. (veuillez noter que ce questionnaire est en anglais)

Le questionnaire vous prendra environ sept minutes. Aucune donnée personnelle n’est collectée (déclaration de confidentialité).