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.
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.
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
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 :
- Créer un enregistrement depuis un autre enregistrement
- Mapper les colonnes de table
- Personnaliser les mappages de table et de colonne
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)
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)" }
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 :
Créez un enregistrement à partager.
Trouvez un utilisateur activé autre que l’utilisateur actuel.
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
Si l’utilisateur n’a pas AccessRights.
DeleteAccess
, accordez cet accès à l’utilisateur à l’aide de l’actionGrantAccess
.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
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 :
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)
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" } ] }
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
Retrouvez la définition des privilèges
prvCreateAccount
etprvReadAccount
à 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" } ] }
Préparez une liste des instances RolePrivilege ComplexType pour les privilèges
prvCreateAccount
etprvReadAccount
avec le jeu de propriétésDepth
PrivilegeDepth.’Basic’.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
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é).