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.
Você interage com a API Web redigindo e enviando solicitações HTTP. Você precisa saber como definir os cabeçalhos HTTP apropriados e lidar com os erros incluídos na resposta.
URL e versões da API Web
Para localizar a URL da API Web para seu ambiente:
Entre no Power Apps e selecione seu ambiente no canto superior direito.
Selecione o botão Configurações no canto superior direito e selecione Recursos do Desenvolvedor.
A partir daqui, você pode copiar o valor para o endpoint da API Web. Para obter mais informações, consulte Exibir recursos do desenvolvedor.
A tabela a seguir descreve as partes da URL:
| Parte | Descrição |
|---|---|
| Protocolo | https:// |
| Nome do ambiente | O nome único que designa seu ambiente. Se o nome da sua empresa for Contoso, então pode ser contoso. |
| Região | Seu ambiente geralmente está em um data center que está perto de você geograficamente. Para a América do Norte, é crm. Para a América crm2do Sul. Para o Japão crm7. Para obter a lista completa, consulte as regiões do Datacenter. |
| URL Base | Esse valor é geralmente dynamics.com., mas alguns data centers usam valores diferentes. Consulte as regiões do Datacenter. |
| Caminho da API Web | O caminho para a API Web é /api/data/. |
| Versão | A versão é expressa dessa forma: v[Major_version].[Minor_version][PatchVersion]/. A versão atual é v9.2. |
| Recurso | O EntitySetName da tabela ou o nome da função ou ação que você deseja usar. |
A URL que você usa é composta por estas partes:
Protocolo + Nome do ambiente + Região + URL base + Caminho da API Web + Versão + Recurso.
Tamanho máximo da URL
O comprimento máximo da URL aceita por é de 32 KB (32.768 caracteres). Esse comprimento é adequado para a maioria dos tipos de solicitações, exceto determinadas GET operações que exigem parâmetros de consulta de cadeia de caracteres muito longos, como consultas usando FetchXml. Se você enviar solicitações dentro do corpo de uma solicitação $batch , poderá enviar solicitações com URLs de até 64 KB (65.536 caracteres).
Saiba mais sobre como enviar FetchXml em uma solicitação $batch.
Comprimento máximo do segmento OData
O comprimento máximo de qualquer segmento individual em uma solicitação OData é de 260 caracteres. Se um único segmento da solicitação OData tiver mais de 260 caracteres de comprimento, a solicitação retornará 400 Bad Request - Invalid URL. O segmento é a parte 'Resource' da URL e inclui todos os caracteres necessários para descrever o ponto de extremidade e todos os parâmetros embutidos.
Por exemplo, se a solicitação for api/data/v9.2/MyApi(MyParameter='longvalue'), MyApi(MyParameter='longvalue') será o segmento que não pode exceder 260 caracteres. Sempre use aliases de parâmetro com funções OData. Por exemplo, redigir sua função como /api/data/v9.2/MyApi(MyParameter=@alias)?@alias='longvalue' reduz o segmento para apenas MyApi(MyParameter=@alias).
Saiba mais sobre como usar aliases de parâmetro com funções de API Web.
Compatibilidade entre versões
Esta versão apresenta recursos que as versões anteriores não dão suporte. As versões secundárias subsequentes podem fornecer mais recursos que as versões secundárias anteriores não dão suporte. Seu código escrito para v9.0 continua funcionando em versões futuras quando você faz referência à v9.0 em sua URL.
À medida que novos recursos são introduzidos, eles podem entrar em conflito com versões anteriores. Essas alterações significativas são necessárias para melhorar o serviço. Na maioria das vezes, os recursos permanecem os mesmos entre as versões, mas não assuma que isso seja garantido.
Observação
Ao contrário das versões secundárias v8.x, as versões futuras não aplicam novos recursos ou outras alterações a versões anteriores. Preste atenção à versão do serviço que você usa e teste seu código se alterar a versão usada.
Métodos HTTP
A tabela a seguir lista os métodos HTTP que você pode usar com a API Web do Dataverse.
| Método | Usage |
|---|---|
GET |
Use ao recuperar dados, incluindo funções de chamada. O código de status esperado para uma recuperação bem-sucedida é 200 OK. |
POST |
Use ao criar entidades ou ao chamar ações. |
PATCH |
Utilize ao atualizar entidades ou ao executar operações de substituição ou inserção. |
DELETE |
Use ao excluir entidades ou propriedades individuais de entidades. |
PUT |
Use em situações limitadas para atualizar propriedades individuais de entidades. Esse método não é recomendado ao atualizar a maioria das entidades. Use PUT ao atualizar definições de tabela. Mais informações: usar a API Web com definições de tabela |
Cabeçalhos HTTP
Todas as solicitações HTTP devem incluir pelo menos os cabeçalhos a seguir.
Accept: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
If-None-Match: null
Embora o protocolo OData permita o formato JSON e ATOM, a API Web dá suporte apenas ao JSON. Cada solicitação deve incluir o valor do cabeçalho application/json, mesmo quando nenhum corpo de resposta é esperado. A API Web retorna qualquer erro na resposta como JSON. Embora seu código deva funcionar mesmo se esse cabeçalho não estiver incluído, inclua-o como uma prática recomendada.
A versão atual do OData é 4.0, mas versões futuras podem introduzir novos recursos. Para garantir que não haja ambiguidade sobre a versão OData que se aplique ao código, inclua sempre uma instrução explícita da versão atual do OData e a versão máxima. Use ambos os cabeçalhos OData-Version e OData-MaxVersion definidos para um valor de 4.0.
Consultas que expandem propriedades de navegação com valor de coleção podem retornar dados armazenados em cache para essas propriedades que não refletem alterações recentes. Inclua o cabeçalho If-None-Match: null no corpo da solicitação para substituir o cache do navegador da solicitação de API Web. Para obter mais informações, consulte Protocolo de Transferência de Hipertexto (HTTP/1.1): Solicitações condicionais 3.2: If-None-Match.
Cada solicitação que inclui dados JSON no corpo da solicitação deve incluir um Content-Type cabeçalho com um valor de application/json.
Content-Type: application/json
Você pode usar outros cabeçalhos para habilitar recursos específicos.
Preferir cabeçalhos
Use o cabeçalho Prefer com os valores a seguir para especificar preferências.
| Preferir valor | Descrição |
|---|---|
return=representation |
Use essa preferência para retornar dados em operações de criação (POST) ou atualização (PATCH) para entidades. Quando você aplica essa preferência a uma solicitação POST , uma resposta bem-sucedida tem status 201 Created . Para uma solicitação PATCH , uma resposta bem-sucedida tem um status 200 OK. Sem essa preferência, ambas as operações retornam status 204 No Content para refletir que o corpo da resposta não contém dados. Mais informações: Criar com os dados retornados e atualizar com os dados retornados |
odata.include-annotations |
Ver anotações de solicitação |
odata.maxpagesize |
Use essa preferência para especificar quantas páginas você deseja retornar em uma consulta. Mais informações: Resultados da página |
odata.track-changes |
O recurso de controle de alterações mantém os dados sincronizados de maneira eficiente detectando quais dados foram alterados desde que os dados foram extraídos inicialmente ou sincronizados pela última vez. Mais informações: Usar o controle de alterações para sincronizar dados com sistemas externos |
respond-async |
Especifica que a solicitação deve ser processada de forma assíncrona. Mais informações: operações em segundo plano (modo de pré-visualização) |
Observação
Você pode especificar vários Prefer cabeçalhos usando valores separados por vírgulas. Por exemplo: Prefer: respond-async,odata.include-annotations="*"
Solicitar anotações
Você pode solicitar dados de anotação OData diferentes para serem retornados com os resultados usando o cabeçalho da solicitação Prefer: odata.include-annotations . Você pode optar por retornar todas as anotações ou especificar anotações específicas. A tabela a seguir descreve as anotações que a API Web do Dataverse dá suporte:
| Annotation | Descrição |
|---|---|
OData.Community.Display.V1.FormattedValue |
Retorna valores de cadeia de caracteres formatados que você pode usar em seu aplicativo. Mais informações: Valores formatados |
Microsoft.Dynamics.CRM.associatednavigationpropertyMicrosoft.Dynamics.CRM.lookuplogicalname |
Retorna informações sobre colunas de pesquisa relacionadas. Mais informações: Consulta de Dados de Propriedade e Consultas de Várias Tabelas |
Microsoft.Dynamics.CRM.totalrecordcountMicrosoft.Dynamics.CRM.totalrecordcountlimitexceeded |
Quando você usa a opção $count de consulta, a @odata.count anotação informa o número de registros, mas apenas 5.000 registros de tabela padrão podem ser retornados por vez. Para tabelas elásticas, o limite de tamanho da página é 500. Solicite a Microsoft.Dynamics.CRM.totalrecordcountlimitexceeded anotação para obter um valor booliano que indica se o número total de registros correspondentes à consulta excede o limite máximo de tamanho de página para o tipo de tabela que você está usando. Mais informações: Contar número de linhas |
Microsoft.Dynamics.CRM.globalmetadataversion |
Você pode armazenar essa anotação em cache em seu aplicativo. O valor é alterado quando ocorre qualquer alteração de esquema, indicando que talvez seja necessário atualizar os dados de esquema armazenados em cache do aplicativo. Mais informações: Dados do esquema de cache |
Microsoft.PowerApps.CDS.ErrorDetails.OperationStatusMicrosoft.PowerApps.CDS.ErrorDetails.SubErrorCodeMicrosoft.PowerApps.CDS.HelpLinkMicrosoft.PowerApps.CDS.TraceTextMicrosoft.PowerApps.CDS.InnerError.Message |
Essas anotações fornecem mais detalhes quando os erros são retornados. Mais informações: inclua mais detalhes com erros |
Para solicitar anotações específicas, inclua-as como valores separados por vírgulas. Você também pode usar o caractere '*' como curinga. Por exemplo, o cabeçalho de solicitação a seguir Prefer inclui apenas os valores formatados e quaisquer anotações adicionais de detalhes de erro:
Prefer: odata.include-annotations="OData.Community.Display.V1.FormattedValue,Microsoft.PowerApps.CDS.ErrorDetails*"
Dica
Para retornar todas as anotações, use o cabeçalho da solicitação Prefer: odata.include-annotations="*" .
Outros cabeçalhos
| Cabeçalho | Valor | Descrição |
|---|---|---|
CallerObjectId |
ID de objeto do usuário do Microsoft Entra ID | Use este cabeçalho para impersonar outro usuário quando o chamador tiver os privilégios para fazê-lo. Defina o valor como a ID de objeto do Microsoft Entra ID do usuário a ser impersonado. Esses dados estão na tabela/entidade do Usuário (SystemUser) atributo AzureActiveDirectoryObjectId (coluna). Mais informações: representar outro usuário usando a API Web. |
If-Match |
Valor Etagou * |
Use este cabeçalho para aplicar concorrência otimista e garantir que você não substitua as alterações que alguém mais aplicou no servidor desde que você recuperou um registro. Mais informações: Aplicar concorrência otimista e If-Match. Você também pode usar esse cabeçalho * para impedir que uma PATCH operação crie um registro. Mais informações: impedir criação no upsert. |
If-None-Match |
nullou * |
Esse cabeçalho deve ser usado em todas as solicitações com um valor igual null ao descrito em cabeçalhos HTTP, mas também pode ser usado para impedir que uma POST operação execute uma atualização. Mais informações: Impedir atualização em upsert e If-None-Match. |
MSCRM.SolutionUniqueName |
nome exclusivo da solução | Use esse cabeçalho quando quiser criar um componente de solução e associá-lo a uma solução não gerenciada. Mais informações: criar e atualizar definições de tabela usando a API Web. |
MSCRM.SuppressDuplicateDetection |
false |
Use esse cabeçalho com o valor false para habilitar a detecção duplicada ao criar ou atualizar um registro. Mais informações: verifique se há registros duplicados. |
MSCRM.BypassCustomPluginExecution |
true |
Use este cabeçalho quando quiser ignorar o código de plug-in personalizado e o chamador tiver o privilégio prvBypassCustomPlugins. Mais informações: ignorar a lógica de negócios personalizada. |
Consistency |
Strong |
Use esse cabeçalho quando precisar ter a versão mais recente de um item armazenado em cache. Os itens armazenados em cache incluem definições de metadados, rótulos, permissões de usuário e permissões de equipe. Por exemplo, se você aplicar uma alteração a algumas definições de metadados, rótulo ou permissão e tiver um código que deve usar a definição mais recente dentro de 30 segundos após a alteração, use esse cabeçalho para garantir que você obtenha a versão mais recente. O uso desse cabeçalho incorre em uma pequena penalidade de desempenho, por isso não o use todo o tempo. |
Ao executar operações em lote, você deve aplicar muitos cabeçalhos diferentes na solicitação e com cada parte enviada no corpo. Mais informações: executar operações em lote usando a API Web.
Identificar códigos de status
Se uma solicitação HTTP for bem-sucedida ou falhar, a resposta inclui um código de status. A tabela a seguir descreve os códigos de status retornados pela API Web do Microsoft Dataverse.
| Code | Descrição | Tipo |
|---|---|---|
200 OK |
Espere esse código de status quando a operação retornar dados no corpo da resposta. | Êxito |
201 Created |
Aguarde este código de status quando a operação POST da entidade for bem-sucedida e você tiver especificado a preferência return=representation na sua solicitação. |
Êxito |
204 No Content |
Espere esse código de status quando sua operação for bem-sucedida, mas não retornar dados no corpo da resposta. | Êxito |
304 Not Modified |
Espere esse código de status ao testar se uma entidade foi modificada desde a última recuperação. Mais informações: Recuperações condicionais | Redirection |
403 Forbidden |
Espere esse código de status para os seguintes tipos de erros: - AccessDenied- AttributePermissionReadIsMissing- AttributePermissionUpdateIsMissingDuringUpdate- AttributePrivilegeCreateIsMissing- CannotActOnBehalfOfAnotherUser- CannotAddOrActonBehalfAnotherUserPrivilege- CrmSecurityError- InvalidAccessRights- PrincipalPrivilegeDenied- PrivilegeCreateIsDisabledForOrganization- PrivilegeDenied- unManagedinvalidprincipal- unManagedinvalidprivilegeedepth |
Erro do cliente |
401 Unauthorized |
Espere esse código de status para os seguintes tipos de erros: - BadAuthTicket- ExpiredAuthTicket- InsufficientAuthTicket- InvalidAuthTicket- InvalidUserAuth- MissingCrmAuthenticationToken- MissingCrmAuthenticationTokenOrganizationName- RequestIsNotAuthenticated- TamperedAuthTicket- UnauthorizedAccess- UnManagedInvalidSecurityPrincipal |
Erro do cliente |
413 Payload Too Large |
Espere esse código de status quando o comprimento da solicitação for muito grande. Saiba mais sobre as limitações de tamanho do conteúdo de solicitação e resposta | Erro do cliente |
400 BadRequest |
Espere esse código de status quando um argumento for inválido. | Erro do cliente |
404 Not Found |
Espere esse código de status quando o recurso não existir. | Erro do cliente |
405 Method Not Allowed |
Esse erro ocorre para combinações de métodos e recursos incorretos. Por exemplo, você não pode usar DELETE ou PATCH em uma coleção de entidades. Espere isso para os seguintes tipos de erros: - CannotDeleteDueToAssociation- InvalidOperation- NotSupported |
Erro do cliente |
412 Precondition Failed |
Espere esse código de status para os seguintes tipos de erros: - ConcurrencyVersionMismatch- DuplicateRecord |
Erro do cliente |
429 Too Many Requests |
Espere esse código de status quando os limites da API forem excedidos. Mais informações: Limites da API de Proteção de Serviço | Erro do cliente |
501 Not Implemented |
Espere esse código de status quando alguma operação solicitada não for implementada. | Erro do servidor |
503 Service Unavailable |
Espere esse código de status quando o serviço de API Web não estiver disponível. | Erro do servidor |
Analisar erros da resposta
A resposta inclui detalhes sobre erros como JSON no formato a seguir.
{
"error":{
"code": "<This code is not related to the http status code and is frequently empty>",
"message": "<A message describing the error>"
}
}
Incluir mais detalhes relacionados aos erros
Alguns erros incluem mais detalhes por meio de anotações. Quando uma solicitação inclui o Prefer: odata.include-annotations="*" cabeçalho, a resposta inclui todas as anotações que contêm mais detalhes sobre erros e uma URL que pode direcionar você para diretrizes específicas para o erro.
Os desenvolvedores que gravam plug-ins podem definir alguns desses detalhes. Por exemplo, suponha que você tenha um plug-in que gera um erro usando o construtor InvalidPluginExecutionException(OperationStatus, Int32, String ). Esse construtor aceita um OperationStatus valor, um código de erro inteiro personalizado e uma mensagem de erro.
Um plug-in simples pode ter esta aparência:
namespace MyNamespace
{
public class MyClass : IPlugin
{
public void Execute(IServiceProvider serviceProvider)
{
// Obtain the tracing service
ITracingService tracingService =
(ITracingService)serviceProvider.GetService(typeof(ITracingService));
tracingService.Trace("Entering MyClass plug-in.");
try
{
throw new InvalidPluginExecutionException(OperationStatus.Canceled, 12345, "Example Error Message.");
}
catch (InvalidPluginExecutionException ex)
{
tracingService.Trace("StackTrace:");
tracingService.Trace(ex.StackTrace);
throw ex;
}
}
}
}
Quando você registra esse plug-in na mensagem Criar de uma entidade de conta e a solicitação para criar uma conta inclui a odata.include-annotations="*" preferência, a solicitação e a resposta se parecem com o exemplo a seguir:
Solicitação:
POST https://yourorg.api.crm.dynamics.com/api/data/v9.2/accounts HTTP/1.1
Content-Type: application/json;
Prefer: odata.include-annotations="*"
{
"name":"Example Account"
}
Resposta:
HTTP/1.1 400 Bad Request
Content-Type: application/json; odata.metadata=minimal
{
"error": {
"code": "0x80040265",
"message": "Example Error Message.",
"@Microsoft.PowerApps.CDS.ErrorDetails.OperationStatus": "1",
"@Microsoft.PowerApps.CDS.ErrorDetails.SubErrorCode": "12345",
"@Microsoft.PowerApps.CDS.HelpLink": "http://go.microsoft.com/fwlink/?LinkID=398563&error=Microsoft.Crm.CrmException%3a80040265&client=platform",
"@Microsoft.PowerApps.CDS.TraceText": "\r\n[MyNamespace: MyNamespace.MyClass ]\r\n[52e2dbb9-85d3-ea11-a812-000d3a122b89: MyNamespace.MyClass : Create of account] \r\n\r\n Entering MyClass plug-in.\r\nStackTrace:\r\n at MyNamespace.MyClass.Execute(IServiceProvider serviceProvider)\r\n\r\n"
"@Microsoft.PowerApps.CDS.InnerError.Message": "Example Error Message."
}
}
A tabela a seguir descreve a anotação na resposta.
| Anotação e descrição | Valor |
|---|---|
@Microsoft.PowerApps.CDS.ErrorDetails.OperationStatusO valor do OperationStatus definido pelo construtor InvalidPluginExecutionException(OperationStatus, Int32, String). |
1 |
@Microsoft.PowerApps.CDS.ErrorDetails.SubErrorCodeO valor do SubErrorCode definido pelo uso do construtor InvalidPluginExecutionException(OperationStatus, Int32, String). |
12345 |
@Microsoft.PowerApps.CDS.HelpLinkUma URL que contém informações sobre o erro e pode redirecioná-lo para diretrizes sobre como resolver o erro. |
http://go.microsoft.com/fwlink/?LinkID=398563&error=Microsoft.Crm.CrmException%3a80040265&client=platform |
@Microsoft.PowerApps.CDS.TraceTextConteúdo gravado no log de rastreamento do plug-in usando o método ITracingService.Trace(String, Object[]). Essa anotação inclui o rastreamento de stack do plugin porque o autor do plugin o logou. |
[MyNamespace: MyNamespace.MyClass ][52e2dbb9-85d3-ea11-a812-000d3a122b89: MyNamespace.MyClass :Create of account]Entering MyClass plug-in.StackTrace: at MyNamespace.MyClass.Execute(IServiceProvider serviceProvider) |
@Microsoft.PowerApps.CDS.InnerError.MessageA mensagem de erro encontrada no InnerError para a exceção. Essa mensagem deve ser a mesma que a mensagem de erro, exceto em determinados casos especiais que são apenas para uso interno. |
Example Error Message. |
Observação
Não @Microsoft.PowerApps.CDS.HelpLink há garantia de fornecer diretrizes para cada erro. As diretrizes podem ser fornecidas proativamente, mas geralmente elas são fornecidas novamente com base na frequência com que o link é usado. Utilize o link. Se ele não fornecer diretrizes, o uso do link ajudará a equipe do produto a acompanhar que as pessoas precisam de mais diretrizes sobre o erro. Em seguida, a equipe pode priorizar a inclusão de diretrizes para os erros que as pessoas mais precisam. Os recursos aos quais o link pode direcionar você podem ser documentação, links para recursos da comunidade ou sites externos.
Se você não quiser receber todas as anotações na resposta, poderá especificar quais anotações deseja retornar. Em vez de usar Prefer: odata.include-annotations="*", use o seguinte valor para receber apenas valores formatados para operações que recuperam dados e o link de ajuda se ocorrer um erro: Prefer: odata.include-annotations="OData.Community.Display.V1.FormattedValue,Microsoft.PowerApps.CDS.HelpLink".
Mais informações: Solicitar anotações
Adicionar uma variável compartilhada da API Web
Você pode definir um valor de cadeia de caracteres disponível para plug-ins na ExecutionContextSharedVariables coleção. Para obter mais informações, consulte:
Consulte também
Executar operações usando a API Web
Consultar dados usando a API Web
Criar uma linha de tabela usando a API Web
Recuperar uma linha de tabela usando a API Web
Atualizar e excluir linhas de tabela usando a API Web
Associar e desassociar linhas de tabela usando a API Web
Usar funções de API Web
Use ações API da Web
Executar operações em lote usando a API Web
Representar outro usuário usando a API Web
Execute operações condicionais usando a API Web.