Compartilhar via


Limitações de API Web do Microsoft Dynamics 365

 

Publicado: janeiro de 2017

Aplicável a: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

A Microsoft Dynamics 365 API Web proporcionará paridade completa com os recursos do serviço de organização. Para o Microsoft Dynamics 365 (online e local), este tópico descreve algumas limitações.

Neste tópico

Limitações em Atualização de dezembro de 2016 para Microsoft Dynamics 365 (online) e Service Pack de dezembro de 2016 para Microsoft Dynamics 365 (local)

Limitações abordadas em Atualização de dezembro de 2016 para Microsoft Dynamics 365 (online) e Service Pack de dezembro de 2016 para Microsoft Dynamics 365 (local)

Limitações abordadas em Atualização 1 do Microsoft Dynamics CRM Online 2016 e Microsoft Dynamics CRM 2016 Service Pack 1

Limitações abordadas em Atualização 0.1 do Microsoft Dynamics CRM Online 2016 e Atualização 0.1 do Microsoft Dynamics CRM 2016

Limitações em Atualização de dezembro de 2016 para Microsoft Dynamics 365 (online) e Service Pack de dezembro de 2016 para Microsoft Dynamics 365 (local)

Esta seção fornece informações sobre limitações na Atualização de dezembro de 2016 para Microsoft Dynamics 365 (online) e Service Pack de dezembro de 2016 para Microsoft Dynamics 365 (local).

  • Algumas ações personalizadas não estão disponíveis na API Web.

  • Funções e ações ausentes para algumas mensagens de serviço da organização

Algumas ações personalizadas não estão disponíveis na API Web.

Se você definir uma ação personalizada que inclui um valor de retorno complexo e um valor de retorno simples, uma ação correspondente não estará disponível na API Web, mas estará disponível com o ponto de extremidade 2011 SOAP. Um valor de retorno complexo é uma EntityReference, Entity ou EntityCollection. Você pode ter qualquer combinação de valores de retorno simples ou um valor de retorno complexo.Para obter mais informações:Criar suas próprias ações

Funções e ações ausentes para algumas mensagens de serviço da organização

A tabela a seguir lista as mensagens que não têm uma função ou uma ação correspondente depois que Atualização de dezembro de 2016 para Microsoft Dynamics 365 (online) e Service Pack de dezembro de 2016 para Microsoft Dynamics 365 (local) são aplicados.

GrantAccessRequest

ModifyAccessRequest

ReactivateEntityKeyRequest

RemoveMemberListRequest

RemoveItemCampaignRequest

RemoveItemCampaignActivityRequest

Para obter uma lista de funções e ações ausentes na versão inicial, combine esta lista com a lista em Funções e ações adicionadas em Atualização 0.1 do Microsoft Dynamics CRM Online 2016 e Atualização 0.1 do Microsoft Dynamics CRM 2016 e Funções e ações adicionadas em Atualização 1 do Microsoft Dynamics CRM Online 2016 e Microsoft Dynamics CRM 2016 Service Pack 1.

Limitações abordadas em Atualização de dezembro de 2016 para Microsoft Dynamics 365 (online) e Service Pack de dezembro de 2016 para Microsoft Dynamics 365 (local)

Esta seção fornece informações sobre limitações abordadas no Atualização de dezembro de 2016 para Microsoft Dynamics 365 (online) e Service Pack de dezembro de 2016 para Microsoft Dynamics 365 (local).

  • A API Web não é habilitada para Microsoft Dynamics 365 para Outlook com Acesso Offline quando o usuário está offline

  • Não é possível consultar valores de data

  • Ao chamar ações com parâmetros de coleção de entidade e outros parâmetros, é preciso passar um parâmetro de coleção como o último parâmetro no corpo

  • Não é possível criar um atributo de pesquisa do cliente

  • Não foi possível recuperar metadados não publicados

Novas operações adicionadas

As seguintes operações foram adicionadas à API Web para Atualização de dezembro de 2016 para Microsoft Dynamics 365 (online) e Service Pack de dezembro de 2016 para Microsoft Dynamics 365 (local).

QualifyLead Action

RetrieveByResourcesService Function

RetrieveFilteredForms Function

A API Web não é habilitada para Microsoft Dynamics 365 para Outlook com Acesso Offline quando o usuário está offline

Observação

Esse problema é abordado em Atualização de dezembro de 2016 para Microsoft Dynamics 365 (online) e Service Pack de dezembro de 2016 para Microsoft Dynamics 365 (local).

JavaScript o código em execução em scripts de formulário, comandos de faixa ou recursos da Web em HTML não podem usar a API Web. Agora é habilitado no servidor local usado quando o usuário fica offline.

Não é possível consultar valores de data

Na verdade, esse problema não é uma limitação; é apenas um problema de sintaxe. Não use aspas simples ao especificar uma data como valor para um filtro.

Para consultar uma propriedade de dados, como a data de nascimento de um contato, a seguinte sintaxe de consulta funcionará:

/contacts?$select=fullname,birthdate&$filter=birthdate eq 1990-01-01

A seguinte sintaxe não funcionará:

/contacts?$select=fullname,birthdate&$filter=birthdate eq '1990-01-01'

Ao chamar ações com parâmetros de coleção de entidade e outros parâmetros, é preciso passar um parâmetro de coleção como o último parâmetro no corpo

Observação

Esse problema é abordado em Atualização de dezembro de 2016 para Microsoft Dynamics 365 (online) e Service Pack de dezembro de 2016 para Microsoft Dynamics 365 (local).

As ações a seguir contêm um parâmetro de coleção de entidade, além de outros parâmetros.

AddListMembersList Action

AddPrivilegesRole Action

CompoundUpdateDuplicateDetectionRule Action

DeliverIncomingEmail Action

DeliverPromoteEmail Action

InstantiateTemplate Action

QualifyMemberList Action

ReplacePrivilegesRole Action

SendTemplate Action

SetLocLabels Action

Antes da Atualização de dezembro de 2016 para Microsoft Dynamics 365 (online) e Service Pack de dezembro de 2016 para Microsoft Dynamics 365 (local), quando você usa essas ações, o parâmetro que inclui a coleção de entidades deve ser passado como o parâmetro mais recente no JSON; caso contrário, o sistema retorna um erro. Por exemplo, você receberá um erro quando usar a QualifyMemberList Action e passar os valores de parâmetro da seguida maneira.

{
"ListMember": [
  {
   "@odata.type": "Microsoft.Dynamics.CRM.account",
   "accountid": "483F8080-6976-E511-9172-0024E8436263"
  },
  {
   "@odata.type": "Microsoft.Dynamics.CRM.account",
   "accountid": "4D3F8080-6976-E511-9172-0024E8436263"
  }
 ],
"OverrideorRemove": true
}

Mas o seguinte deve ter êxito.

{
 "OverrideorRemove": true,
 "ListMember": [
  {
   "@odata.type": "Microsoft.Dynamics.CRM.account",
   "accountid": "483F8080-6976-E511-9172-0024E8436263"
  },
  {
   "@odata.type": "Microsoft.Dynamics.CRM.account",
   "accountid": "4D3F8080-6976-E511-9172-0024E8436263"
  }
 ]
}

Não é possível criar um atributo de pesquisa do cliente

Observação

Esse problema é abordado em Atualização de dezembro de 2016 para Microsoft Dynamics 365 (online) e Service Pack de dezembro de 2016 para Microsoft Dynamics 365 (local).

Não há suporte para a criação de atributo de pesquisa de cliente usando a API Web no Atualização 1 do Microsoft Dynamics CRM Online 2016 e Microsoft Dynamics CRM 2016 Service Pack 1.

Para criar um atributo de pesquisa de cliente com a API Web usando a Atualização de dezembro de 2016 para Microsoft Dynamics 365 (online) e Service Pack de dezembro de 2016 para Microsoft Dynamics 365 (local), consulte Criar um atributo de pesquisa de cliente.

Não foi possível recuperar metadados não publicados

Observação

Esse problema é abordado em Atualização de dezembro de 2016 para Microsoft Dynamics 365 (online) e Service Pack de dezembro de 2016 para Microsoft Dynamics 365 (local).

As mensagens de serviço da organização que recuperam metadados incluem um RetrieveAsIfPublished parâmetro que oferece a opção de retornar definições de metadados que ainda não foram confirmadas por meio de publicação. Esse recurso é útil quando você está criando um aplicativo a ser usado para editar os metadados e precisa permitir que alterações não confirmadas sejam salvas. Na Atualização 1 do Microsoft Dynamics CRM Online 2016 e Microsoft Dynamics CRM 2016 Service Pack 1, todas as operações de recuperação de metadados retornam apenas metadados publicados.Para obter mais informações:Use o API da Web com metadados do Dynamics 365 e Publicar personalizações.

Limitações abordadas em Atualização 1 do Microsoft Dynamics CRM Online 2016 e Microsoft Dynamics CRM 2016 Service Pack 1

Atualização 1 do Microsoft Dynamics CRM Online 2016 e Microsoft Dynamics CRM 2016 Service Pack 1 adicionaram funções e ações e abordaram os seguintes problemas com API Web.:

  • Funções e ações adicionadas em Atualização 1 do Microsoft Dynamics CRM Online 2016 e Microsoft Dynamics CRM 2016 Service Pack 1

  • Não é possível filtrar consultas com base no valor de uma propriedade de navegação de valor único

Funções e ações adicionadas em Atualização 1 do Microsoft Dynamics CRM Online 2016 e Microsoft Dynamics CRM 2016 Service Pack 1

A tabela a seguir lista as funções e as ações adicionadas para Atualização 1 do Microsoft Dynamics CRM Online 2016 e Microsoft Dynamics CRM 2016 Service Pack 1.

Book Action

Reschedule Action

CalculateRollupField Function

Não é possível filtrar consultas com base no valor de uma propriedade de navegação de valor único

Observação

Esse problema é parcialmente abordado em Atualização 1 do Microsoft Dynamics CRM Online 2016 e Microsoft Dynamics CRM 2016 Service Pack 1. Agora você pode filtrar consultas na propriedade de navegação de valor único se a propriedade de navegação fizer referência ao valor de atributo principal da entidade referenciada.Para obter mais informações:Filtrar registros com base na propriedade de navegação de valor único

Se você usar a propriedade de uma propriedade de navegação de valor único como filtro em uma consulta, você verá o erro 501. Por exemplo, a consulta a seguir tenta retornar todas as contas em que o valor da propriedade firstname do contato principal é "Renee".

  • Solicitação

    GET 
    [Organization URI]/api/data/v8.0/accounts?$select=name&$filter=primarycontactid/firstname eq 'Renee' HTTP/1.1
    Accept: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    
  • Resposta

    HTTP/1.1 501 Not Implemented
    Content-Type: application/json; odata.metadata=minimal
    OData-Version: 4.0
    
    {  
     "error": {    
      "code": "",
       "message": "The query node (0) is not supported",
       "innererror": {      
       "message": "The query node (0) is not supported",
       "type": "Microsoft.Crm.CrmHttpException",
       "stacktrace": 
                            <stacktrace value removed for brevity>
      }  
     }
    }
    

Limitações abordadas em Atualização 0.1 do Microsoft Dynamics CRM Online 2016 e Atualização 0.1 do Microsoft Dynamics CRM 2016

Atualização 0.1 do Microsoft Dynamics CRM Online 2016 e Atualização 0.1 do Microsoft Dynamics CRM Online 2016 adicionaram funções e ações e abordaram os seguintes problemas com a API Web.

  • Funções e ações adicionadas em Atualização 0.1 do Microsoft Dynamics CRM Online 2016 e Atualização 0.1 do Microsoft Dynamics CRM 2016

  • Erro ao consultar relações muitos-para-muitos autorreferenciais

  • $select em algumas expressões $expand pode ser ignorada

  • Não é possível retornar propriedades de navegação de valor único a partir de uma consulta $expand se elas tiverem um valor null

  • As consultas FetchXML vinculadas a activitypointer podem não incluir campos vinculados

  • Não é possível retornar propriedades de valor null em resultados de propriedade de navegação expandida

Funções e ações adicionadas em Atualização 0.1 do Microsoft Dynamics CRM Online 2016 e Atualização 0.1 do Microsoft Dynamics CRM 2016

A tabela a seguir lista as funções e as ações adicionadas a Atualização 0.1 do Microsoft Dynamics CRM Online 2016 e a Atualização 0.1 do Microsoft Dynamics CRM 2016.

CheckIncomingEmail Function

FindParentResourceGroup Function

GetQuantityDecimal Function

IncrementKnowledgeArticleViewCount Function

InitializeFrom Function

IsValidStateTransition Function

QueryMultipleSchedules Function

RetrieveAllEntities Function

RetrieveDuplicates Function

RetrieveLocLabels Function

RetrievePrincipalAccess Function

RetrieveRecordWall Function

RetrieveUnpublishedMultiple Function

SearchByBodyKbArticle Function

SearchByKeywordsKbArticle Function

SearchByTitleKbArticle Function

ValidateRecurrenceRule Function

Erro ao consultar relações muitos-para-muitos autorreferenciais

Observação

Esse problema é abordado em Atualização 0.1 do Microsoft Dynamics CRM Online 2016 e Atualização 0.1 do Microsoft Dynamics CRM 2016.

Há duas entidades de sistema com relações muitos-para-muitos autorreferenciais: connectionrole EntityType tem connectionroleassociation_association e campaign EntityType tem campaigncampaign_association. Se você tentar uma consulta que use essas propriedades de navegação de valor de coleção, é esperado que ocorra HTTP Status 400 o seguinte erro: Reflexive relationship must specify direction using ReflexiveManyToManyRelationship.

Se precisar consultar dados usando essas relações muitos para muitos, você poderá usar as entidades de interseção em vez disso. Para a propriedade de navegação de valor de coleção campaigncampaign_association, a entidade campaignitem EntityType é uma entidade de interseção especial que define as relações. Para connectionroleassociation_association, connectionroleassociation é a entidade de interseção ordinária que contém os dados que definem esta relação muito para muitos. As entidades de interseção ordinárias não estão incluídas na documentação de referência, mas estão disponíveis na API Web. Você pode acessar a entidade connectionroleassociation usando este URI: /api/data/v8.0/connectionroleassociations.Para obter mais informações:Propriedades de navegação avaliadas por coleção

$select em algumas expressões $expand pode ser ignorada

Observação

Esse problema é abordado em Atualização 0.1 do Microsoft Dynamics CRM Online 2016 e Atualização 0.1 do Microsoft Dynamics CRM 2016.

Ao recuperar duas propriedades de navegação, se a última propriedade de navegação não tiver $select a opção de consulta, todas as propriedades da propriedade da primeira navegação serão retornadas. Por exemplo, se você construir a consulta a seguir:

GET 
[Organization URI]/api/data/v8.0/accounts(0495779B-F67F-E511-80C2-00155DB09B03)$select=name&$expand=contact_customer_accounts($select=lastname),opportunity_customer_accounts

Você está esperando a propriedade name da conta, a lastname dos contatos associados usando contact_customer_accounts e todas as propriedades das oportunidades associadas usando opportunity_customer_accounts.

Entretanto, você obterá todas as propriedades dos contatos, bem como todas as propriedades das oportunidades relacionadas. É uma prática recomendada usar sempre $select para limitar as propriedades em qualquer operação de recuperação; portanto, seguir esta prática recomendada garantirá a você obter o melhor desempenho e não recuperar mais dados do que você precisa.

Não é possível retornar propriedades de navegação de valor único a partir de uma consulta $expand se elas tiverem um valor null

Observação

Esse problema é abordado em Atualização 0.1 do Microsoft Dynamics CRM Online 2016 e Atualização 0.1 do Microsoft Dynamics CRM 2016.

De acordo com a especificação OData, quando você expande uma propriedade de navegação única e ela não contém um valor, a propriedade deve ser incluída com um conjunto null. O comportamento atual é o de que a propriedade não será incluída na resposta JSON. No exemplo a seguir, a propriedade primarycontactid de navegação de valor único da conta é solicitada, mas, como não há nenhum contato associado à propriedade de navegação, o valor é null.

  • Solicitação

    GET 
    [Organization URI]/api/data/v8.0/accounts(25DD0B31-ED8B-E511-80D2-00155D2A68D4)?$select=name&$expand=primarycontactid($select=fullname) HTTP/1.1
    Accept: application/json
    Content-Type: application/json; charset=utf-8
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    
  • Resposta Esperada

    HTTP/1.1 200 OK
    OData-Version: 4.0
    
    {
     "@odata.context": "
    [Organization URI]/api/data/v8.0/$metadata#accounts(name,primarycontactid,primarycontactid(fullname))/$entity",
     "@odata.etag": "W/\"504724\"",
     "name": "A. Datum Corporation (sample)",
     "accountid": "25dd0b31-ed8b-e511-80d2-00155d2a68d4",
     "primarycontactid": null
    }
    
  • Resposta Real

    HTTP/1.1 200 OK
    OData-Version: 4.0
    
    {
     "@odata.context": "
    [Organization URI]/api/data/v8.0/$metadata#accounts(name,primarycontactid,primarycontactid(fullname))/$entity",
     "@odata.etag": "W/\"504724\"",
     "name": "A. Datum Corporation (sample)",
     "accountid": "25dd0b31-ed8b-e511-80d2-00155d2a68d4"
    }
    

As consultas FetchXML vinculadas a activitypointer podem não incluir campos vinculados

Observação

Esse problema é abordado em Atualização 0.1 do Microsoft Dynamics CRM Online 2016 e Atualização 0.1 do Microsoft Dynamics CRM 2016.

Ao criar uma consulta usando FetchXML, que inclui activitypointer como uma entidade vinculada, os valores da propriedade serão null. Por exemplo, se você usar o seguinte fetchXML:

<fetch version="1.0"
       output-format="xml-platform"
       mapping="logical"
       distinct="true">
  <entity name="account">
    <attribute name="name" />
    <link-entity name="activitypointer"
                 from="regardingobjectid"
                 to="accountid"
                 link-type="inner">
      <attribute name="subject" />
    </link-entity>
  </entity>
</fetch>

Você está solicitando o activitypointerrelacionado.subject valor a ser retornado. É devolvido com um valor null quando existe um valor real.

  • Solicitação

    GET 
    [Organization URI]/api/data/v8.0/accounts?fetchXml=%3Cfetch%20version=%221.0%22%20output-format=%22xml-platform%22%20mapping=%22logical%22%20distinct=%22true%22%3E%3Centity%20name=%22account%22%3E%3Cattribute%20name=%22name%22%20/%3E%3Clink-entity%20name=%22activitypointer%22%20from=%22regardingobjectid%22%20to=%22accountid%22%20link-type=%22inner%22%3E%3Cattribute%20name=%22subject%22%20/%3E%3C/link-entity%3E%3C/entity%3E%3C/fetch%3E HTTP/1.1
    Accept: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    
  • Resposta Esperada

    HTTP/1.1 200 OK
    Content-Type: application/json; odata.metadata=minimal
    OData-Version: 4.0
    
    {
     "@odata.context": "
    [Organization URI]/api/data/v8.0/$metadata#accounts(name)",
     "value": [
      {
       "name": "A. Datum Corporation (sample)",
       "activitypointer1.subject": "Task Subject Value"
      }
     ]
    }
    
  • Resposta Real

    HTTP/1.1 200 OK
    Content-Type: application/json; odata.metadata=minimal
    OData-Version: 4.0
    
    {
     "@odata.context": "
    [Organization URI]/api/data/v8.0/$metadata#accounts(name)",
     "value": [
      {
       "name": "A. Datum Corporation (sample)",
       "activitypointer1.subject": null
      }
     ]
    }
    

Para obter mais informações:Usar FetchXML personalizado

Não é possível retornar propriedades de valor null em resultados de propriedade de navegação expandida

Observação

Esse problema é abordado em Atualização 0.1 do Microsoft Dynamics CRM Online 2016 e Atualização 0.1 do Microsoft Dynamics CRM 2016.

Quando uma das propriedades expandidas em uma propriedade de navegação de valor de coleção é null, a propriedade expandida não será incluída nos resultados. O primeiro exemplo mostra os dados quando um dos contatos relacionados a uma conta tem um valor null para a propriedade emailaddress1 expandida. A propriedade emailaddress1 não é retornada mesmo para o contato em que há um valor.

  • Solicitação

    GET 
    [Organization URI]/api/data/v8.0/accounts(25DD0B31-ED8B-E511-80D2-00155D2A68D4)?$select=name&$expand=contact_customer_accounts($select=emailaddress1,lastname,firstname) HTTP/1.1
    Accept: application/json
    Content-Type: application/json; charset=utf-8
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    
  • Resposta Esperada

    HTTP/1.1 200 OK
    Content-Type: application/json; odata.metadata=minimal
    OData-Version: 4.0
    
    {
     "@odata.context": "
    [Organization URI]/api/data/v8.0/$metadata#accounts(name,contact_customer_accounts,contact_customer_accounts(emailaddress1,lastname,firstname))/$entity",
     "@odata.etag": "W/\"504724\"",
     "name": "A. Datum Corporation (sample)",
     "accountid": "25dd0b31-ed8b-e511-80d2-00155d2a68d4",
     "contact_customer_accounts": [
      {
       "@odata.etag": "W/\"504749\"",
       "emailaddress1": null,
       "lastname": "Valdes (sample)",
       "firstname": "Rene",
       "contactid": "8bdd0b31-ed8b-e511-80d2-00155d2a68d4"
      },
      {
       "@odata.etag": "W/\"503647\"",
       "emailaddress1": someone_l@example.com,
       "lastname": "Burk (sample)",
       "firstname": "Susan",
       "contactid": "91dd0b31-ed8b-e511-80d2-00155d2a68d4"
      }
     ]
    }
    
  • Resposta Real

    HTTP/1.1 200 OK
    Content-Type: application/json; odata.metadata=minimal
    OData-Version: 4.0
    
    {
     "@odata.context": "
    [Organization URI]/api/data/v8.0/$metadata#accounts(name,contact_customer_accounts,contact_customer_accounts(emailaddress1,lastname,firstname))/$entity",
     "@odata.etag": "W/\"504724\"",
     "name": "A. Datum Corporation (sample)",
     "accountid": "25dd0b31-ed8b-e511-80d2-00155d2a68d4",
     "contact_customer_accounts": [
      {
       "@odata.etag": "W/\"504749\"",
       "lastname": "Valdes (sample)",
       "firstname": "Rene",
       "contactid": "8bdd0b31-ed8b-e511-80d2-00155d2a68d4"
      },
      {
       "@odata.etag": "W/\"503647\"",
       "lastname": "Burk (sample)",
       "firstname": "Susan",
       "contactid": "91dd0b31-ed8b-e511-80d2-00155d2a68d4"
      }
     ]
    }
    

O consulta direta por meio da propriedade de navegação de valor de coleção sem expansão contact_customer_accounts retorna os dados esperados.

  • Solicitação

    GET 
    [Organization URI]/api/data/v8.0/accounts(25DD0B31-ED8B-E511-80D2-00155D2A68D4)/contact_customer_accounts?$select=emailaddress1,lastname,firstname HTTP/1.1
    Accept: application/json
    Content-Type: application/json; charset=utf-8
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    
  • Resposta

    HTTP/1.1 200 OK
    Content-Type: application/json; odata.metadata=minimal
    OData-Version: 4.0
    
    {
     "@odata.context": "
    [Organization URI]/api/data/v8.0/$metadata#contacts(emailaddress1,lastname,firstname)",
     "value": [
      {
       "@odata.etag": "W/\"504749\"",
       "emailaddress1": null,
       "lastname": "Valdes (sample)",
       "firstname": "Rene",
       "contactid": "8bdd0b31-ed8b-e511-80d2-00155d2a68d4"
      },
      {
       "@odata.etag": "W/\"503647\"",
       "emailaddress1": "someone_l@example.com",
       "lastname": "Burk (sample)",
       "firstname": "Susan",
       "contactid": "91dd0b31-ed8b-e511-80d2-00155d2a68d4"
      }
     ]
    }
    

Confira Também

Use a API da Web do Microsoft Dynamics 365
Autentique Microsoft Dynamics 365 com API da Web
Tipos de API da Web e operações
Executar operações usando A API

Microsoft Dynamics 365

© 2017 Microsoft. Todos os direitos reservados. Direitos autorais