Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Esse grupo de exemplos demonstra como executar funções e ações associadas e não associadas, incluindo ações personalizadas, usando a API Web do Microsoft Dataverse. O exemplo é implementado como um projeto separado para os seguintes idiomas:
- Exemplo de funções e ações (C#)
- Exemplo de funções e ações (JavaScript do lado do cliente)
- Exemplo de funções e ações da API Web (PowerShell)
Este artigo explica a estrutura e o conteúdo da amostra em um nível mais alto e neutro em idioma. Para obter detalhes de implementação específicos do idioma sobre como executar as operações descritas neste artigo, consulte os artigos de exemplo vinculados.
Demonstra
Este exemplo é dividido nas seções principais a seguir, contendo funções de API Web e operações de ações que são discutidas com mais detalhes nos artigos conceituais associados.
As seções a seguir contêm uma breve discussão sobre as operações da API Web do Dataverse, juntamente com as mensagens HTTP correspondentes e a saída do console associada.
Seção 1: Função desvinculada WhoAmI
A função WhoAmI é uma função simples e comumente usada desvinculada.
Pedir:
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
Resposta:
HTTP/1.1 200 OK
OData-Version: 4.0
{
"@odata.context": "[Organization Uri]/api/data/v9.2/$metadata#Microsoft.Dynamics.CRM.WhoAmIResponse",
"BusinessUnitId": "11bb11bb-cc22-dd33-ee44-55ff55ff55ff",
"UserId": "22cc22cc-dd33-ee44-ff55-66aa66aa66aa",
"OrganizationId": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee"
}
Saída do console:
WhoAmI tells us:
WhoAmIResponse.BusinessUnitId:11bb11bb-cc22-dd33-ee44-55ff55ff55ff
WhoAmIResponse.UserId:22cc22cc-dd33-ee44-ff55-66aa66aa66aa
WhoAmIResponse.OrganizationId:00aa00aa-bb11-cc22-dd33-44ee44ee44ee
Use o BusinessUnitId valor recuperado aqui na Seção 8 - Bound Action AddPrivilegesRole.
Seção 2: Função desassociada FormatAddress
A função FormatAddress é uma função não vinculada que requer parâmetros. Ele retorna uma cadeia de caracteres que representa um endereço de acordo com requisitos específicos de formato regional ou país.
Neste exemplo, defina os parâmetros usando valores de parâmetro de cadeia de caracteres de consulta.
Uma solicitação para um endereço nos Estados Unidos:
Pedir:
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/jsonResposta:
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" }Saída do console:
USA Formatted Address: 123 Maple St. Seattle, WA 98007 USAUma solicitação para um endereço no Japão.
Pedir:
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/jsonResposta:
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" }Saída do console:
JAPAN Formatted Address: 455-2345 Aichi Nagoya 1-2-3 Sakura JAPAN
Seção 3: Função desvinculada InitializeFrom
A função InitializeFrom é uma função não associada que requer parâmetros. Essa função retorna os dados de um novo registro a ser criado no contexto de um registro existente. Dependendo dos dados de configuração para controlar quais dados são copiados, os dados de registro retornados incluem dados copiados do registro original.
Mais informações:
- Criar um registro de outro registro
- Mapear colunas da tabela
- Personalizar mapeamentos de tabela e coluna
Crie um registro para ser o registro original:
Pedir:
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" }Resposta:
HTTP/1.1 204 NoContent OData-Version: 4.0 OData-EntityId: [Organization Uri]/api/data/v9.2/accounts(22cc22cc-dd33-ee44-ff55-66aa66aa66aa)Use
InitializeFrompara obter os dados de um novo registro do registro original.Pedir:
GET [Organization Uri]/api/data/v9.2/InitializeFrom(EntityMoniker=@p1,TargetEntityName=@p2,TargetFieldType=@p3)?@p1={'@odata.id':'accounts(22cc22cc-dd33-ee44-ff55-66aa66aa66aa)'}&@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/jsonResposta:
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(22cc22cc-dd33-ee44-ff55-66aa66aa66aa)" }Saída do 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(22cc22cc-dd33-ee44-ff55-66aa66aa66aa)" }Observação
Se não houver colunas mapeadas para essa relação, somente os valores mínimos de coluna serão incluídos, conforme mostrado no exemplo anterior. Nesse caso, o único valor é a
parentaccountidconsulta para associar o novo registro ao original.Se todas as colunas disponíveis forem mapeadas para essa relação, o valor retornado incluirá mais dados do registro original, por exemplo:
{ "@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)" }Crie um novo registro usando os dados retornados por
InitializeFrom.Pedir:
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(22cc22cc-dd33-ee44-ff55-66aa66aa66aa)", "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 }Resposta:
HTTP/1.1 204 NoContent OData-Version: 4.0 OData-EntityId: [Organization Uri]/api/data/v9.2/accounts(33dd33dd-ee44-ff55-aa66-77bb77bb77bb)Saída do console:
New Record: { "@odata.context": "[Organization URI]/api/data/v9.2/$metadata#accounts/$entity", "@odata.type": "#Microsoft.Dynamics.CRM.account", "parentaccountid@odata.bind": "accounts(22cc22cc-dd33-ee44-ff55-66aa66aa66aa)", "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 }
Seção 4: Função Desvinculada RetrieveCurrentOrganization
A função RetrieveCurrentOrganization retorna informações sobre a organização atual. Ele requer um valor de tipo de enumeração EndpointAccessType como um parâmetro.
RetrieveCurrentOrganization retorna um tipo complexo de RetrieveCurrentOrganizationResponse que inclui uma Detail propriedade que é um tipo complexo de OrganizationDetail. Esse tipo complexo tem propriedades que usam o tipo complexo EndpointCollection, o tipo de enumeração EndpointType e o tipo de enumeração OrganizationState.
Observação
A URL passa o valor do parâmetro do tipo de enumeração AccessTypeEndpointAccessType. Requer o nome completo e qualificado junto com o do membro selecionado.
Pedir:
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
Resposta:
HTTP/1.1 200 OK
OData-Version: 4.0
{
"@odata.context": "[Organization Uri]/api/data/v9.2/$metadata#Microsoft.Dynamics.CRM.RetrieveCurrentOrganizationResponse",
"Detail": {
"OrganizationId": "11bb11bb-cc22-dd33-ee44-55ff55ff55ff",
"FriendlyName": "[Organization Name]",
"OrganizationVersion": "9.2.22074.168",
"EnvironmentId": "Default-aaaabbbb-0000-cccc-1111-dddd2222eeee",
"DatacenterId": "695014e1-bafd-4d7e-9d3d-2261d4aaf780",
"Geo": "NA",
"TenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
"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"
]
}
}
}
Saída do console:
Data returned with RetrieveCurrentOrganizationResponse:
{
"OrganizationId": "11bb11bb-cc22-dd33-ee44-55ff55ff55ff",
"FriendlyName": "[Organization Name]",
"OrganizationVersion": "9.2.22074.168",
"EnvironmentId": "Default-aaaabbbb-0000-cccc-1111-dddd2222eeee",
"DatacenterId": "695014e1-bafd-4d7e-9d3d-2261d4aaf780",
"Geo": "NA",
"TenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
"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"
}
Seção 5: Função Não Vinculada RetrieveTotalRecordCount
A função RetrieveTotalRecordCount retorna dados sobre o número total de registros para entidades específicas. A função recupera dados de um instantâneo com menos de 24 horas de idade, portanto, não é uma contagem exata em um determinado momento no tempo.
Pedir:
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
Resposta:
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
]
}
}
Saída do console:
The number of records for each table according to RetrieveTotalRecordCount:
account:19
contact:3
Seção 6: API personalizada IsSystemAdmin de função vinculada
Para demonstrar uma função associada, este exemplo importa uma mensagem personalizada definida em uma solução antes de executar essa parte do exemplo.
O exemplo usa a sample_IsSystemAdmin mensagem personalizada definida usando uma API personalizada. Você pode encontrar detalhes sobre esta API personalizada aqui: Exemplo: API personalizada IsSystemAdmin.
Observação
Ao usar uma função ou ação associada, você deve incluir o nome totalmente qualificado, que inclui Microsoft.Dynamics.CRM.+ <nome da função ou ação> na URL.
Pedir:
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
Resposta:
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
}
Este exemplo recupera 10 registros de usuário e testa cada um para determinar se cada usuário tem a função de segurança administrador do sistema.
Saída do console:
Os nomes reais dependem das pessoas em seu ambiente.
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.
Para obter outro exemplo de uma função associada, consulte o uso da função RetrievePrincipalAccess no próximo exemplo.
Seção 7: Ação Não Associada GrantAccess
Usando a ação GrantAccess, os usuários podem compartilhar privilégios específicos com outros usuários em seu ambiente.
O código de exemplo demonstra as seguintes operações:
Crie um registro para compartilhar.
Localize um usuário habilitado diferente do usuário atual.
Use a função RetrievePrincipalAccess para verificar quais direitos de acesso o usuário tem para o registro criado.
Pedir:
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/jsonResposta:
HTTP/1.1 200 OK OData-Version: 4.0 { "@odata.context": "[Organization Uri]/api/data/v9.2/$metadata#Microsoft.Dynamics.CRM.RetrievePrincipalAccessResponse", "AccessRights": "ShareAccess" }Saída do console:
Testing user: Gediminas Matulis Current users access: ShareAccessSe o usuário não tiver o AccessRights.
DeleteAccess, conceda ao usuário esse acesso usando a açãoGrantAccess.Pedir:
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" } } }Resposta:
HTTP/1.1 204 NoContent OData-Version: 4.0Depois de conceder
DeleteAccess, a mesma chamada para a Função RetrievePrincipalAccess mostra que o usuário agora tem acesso para excluir este registro:Pedir:
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/jsonResposta:
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" }Saída do console:
Gediminas Matulis was granted DeleteAccess
Seção 8: Ação Vinculada AddPrivilegesRole
A ação AddPrivilegesRole é uma ação associada ao tipo de entidade de função. Use-o para adicionar privilégios a uma função de segurança.
O código de exemplo executa as seguintes operações:
Crie uma função de segurança. Você deve associar a função a uma unidade de negócios. Você recuperou o valor da ID da unidade de negócios na Seção 1: WhoAmI da função unbound.
Pedir:
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" }Resposta:
HTTP/1.1 204 NoContent OData-Version: 4.0 OData-EntityId: [Organization Uri]/api/data/v9.2/roles(44ee44ee-ff55-aa66-bb77-88cc88cc88cc)Recupere a função, expandindo a
roleprivileges_associationpropriedade de navegação com valor de coleção para incluir os privilégios incluídos na função.Pedir:
GET [Organization Uri]/api/data/v9.2/roles(44ee44ee-ff55-aa66-bb77-88cc88cc88cc)?$select=roleid&$expand=roleprivileges_association($select=name) HTTP/1.1 OData-MaxVersion: 4.0 OData-Version: 4.0 If-None-Match: null Accept: application/jsonResposta:
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": "44ee44ee-ff55-aa66-bb77-88cc88cc88cc", "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" } ] }Mostrar o número de privilégios criados por padrão para a nova função.
Saída do console:
Number of privileges in new role: 9 prvReadSharePointData prvReadSdkMessage prvWriteSharePointData prvReadSdkMessageProcessingStepImage prvReadSdkMessageProcessingStep prvReadPluginAssembly prvCreateSharePointData prvReadPluginType prvReadSharePointDocumentRecupere a definição dos privilégios
prvCreateAccounteprvReadAccountdo EntityType de privilégios.Pedir:
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/jsonResposta:
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" } ] }Prepare uma lista de instâncias do ComplexType RolePrivilege para os privilégios
prvCreateAccounteprvReadAccountcom a propriedadeDepthdefinida como PrivilegeDepth 'Básico'.Passe a lista como parâmetro
AddPrivilegesRole.Privileges.Pedir:
POST [Organization Uri]/api/data/v9.2/roles(44ee44ee-ff55-aa66-bb77-88cc88cc88cc)/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" } ] }Resposta:
HTTP/1.1 204 NoContent OData-Version: 4.0Recupere os privilégios associados à função novamente para confirmar se você os adicionou.
Pedir:
GET [Organization Uri]/api/data/v9.2/roles(44ee44ee-ff55-aa66-bb77-88cc88cc88cc)?$select=roleid&$expand=roleprivileges_association($select=name) HTTP/1.1 OData-MaxVersion: 4.0 OData-Version: 4.0 If-None-Match: null Accept: application/jsonResposta:
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": "44ee44ee-ff55-aa66-bb77-88cc88cc88cc", "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" } ] }Saída do console:
Number of privileges after: 11 prvReadAccount prvReadSharePointData prvReadSdkMessage prvCreateAccount prvWriteSharePointData prvReadSdkMessageProcessingStepImage prvReadSdkMessageProcessingStep prvReadPluginAssembly prvCreateSharePointData prvReadPluginType prvReadSharePointDocument
Seção 9: Excluir registros de exemplo
Adicione cada registro criado neste exemplo a uma lista para que você possa excluí-los no final. Use uma solicitação $batch para excluir esses registros.
Pedir:
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(22cc22cc-dd33-ee44-ff55-66aa66aa66aa) 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(33dd33dd-ee44-ff55-aa66-77bb77bb77bb) 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(44ee44ee-ff55-aa66-bb77-88cc88cc88cc) HTTP/1.1
--batch_d6010246-cd97-429f-bc05-cf20054cfe8a--
Resposta:
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--
Saída do console:
Deleting created records.
Consulte também
Utilizar a API Web do Dataverse
Usar funções de API Web
Use ações API da Web
Exemplo de ações e funções da API Web (C#)
Exemplo de funções e ações (JavaScript do lado do cliente)
Exemplo de funções e ações da API Web (PowerShell)