Partilhar via


Amostra de operações básicas API da Web

 

Publicado: janeiro de 2017

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

Este grupo de exemplos demonstram como executar operações associativas e CRUD (Criar, Recuperar, Atualizar e Excluir) usando a API Web do Microsoft Dynamics 365. Este exemplo foi implementado como um projeto separado para as seguintes linguagens:

Este tópico descreve um conjunto comum de operações implementadas para cada exemplo neste grupo. Este tópico descreve as solicitações HTTP e respostas e saída de texto que cada exemplo neste grupo deverá executar sem os detalhes específicos ao idioma. Veja as descrições específicas do idioma e os exemplos individuais para obter detalhes sobre como essas operações são executadas.

Demonstrações

Este exemplo é dividido nas seções principais a seguir, contendo operações de dados de consulta da API da Web do Dynamics 365 que são abordadas detalhadamente nos tópicos conceituais associados especificados.

Seção de código

Tópicos conceituais associados

Seção 1: Criar e atualizar operações básicas

Criar básico
Criar com dados retornados
Atualização básica
Atualização com dados retornados

Seção 2: Crie uma associação

Associar entidades ao criar

Seção 3: Criar entidades relacionadas (inserção profunda)

Criar entidades relacionadas em uma operação

Seção 4: Associar e desassociar as entidades existentes

Associar e desassociar entidades usando a API Web

Seção 5: Excluir entidades (limpeza de exemplos)

Exclusão básica

Observação

Para facilitar, os cabeçalhos HTTP pertinentes foram omitidos. As URLs dos registros podem variar com base no endereço da organização e na ID do registro atribuído pelo servidor do Dynamics 365.

Seção 1: Criar e atualizar operações básicas

Essa seção cria um único contato e executa uma série de atualizações no uso dessa instância. Observe que o cabeçalho de reposta OData-EntityId contém a URL para esse registro recém-criado (instância de entidade), que inclui de forma parentética a ID exclusiva do registro.

  1. Crie um novo contato chamado Peter Cambel.

    Solicitação HTTP

    POST http://cc_WebAPI_ServiceURI/contacts HTTP/1.1
    Content-Type: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    {
      "firstname": "Peter",
      "lastname": "Cambel"
    }
    

    Resposta HTTP

    HTTP/1.1 204 No Content
    OData-Version: 4.0
    OData-EntityId: http://cc_WebAPI_ServiceURI/contacts(60f77a42-5f0e-e611-80e0-00155da84c03)
    

    Saída do console

    Contact 'Peter Cambel' created.
    

    As propriedades disponíveis para cada tipo são definidas no documento de metadados e também são documentadas para cada tipo na seção Web API EntityType Reference. Para obter informações gerais, consulte Tipos de API da Web e operações.

  2. Atualize o contato com os valores da receita anual ($80,000) e o cargo (Junior Developer).

    Solicitação HTTP

    PATCH http://cc_WebAPI_ServiceURI/contacts(60f77a42-5f0e-e611-80e0-00155da84c03) HTTP/1.1
    Content-Type: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    {
      "annualincome": 80000,
      "jobtitle": "Junior Developer"
    }
    

    Resposta HTTP

    HTTP/1.1 204 No Content
    

    Saída do console

    Contact 'Peter Cambel' updated with job title and annual income.
    
  3. Recupere o contato com seu conjunto de propriedades inicializadas de forma explícita.fullname é uma propriedade somente leitura que é calculada a partir das propriedades firstname e lastname, que foram inicializadas de forma explícita quando a instância foi criada. Diferentemente, a propriedade description não foi inicializada de forma explícita. Portanto, ela retém seu valor padrão, uma cadeia de caracteres null.

    Observe que a resposta, bem como os valores e os cabeçalhos comuns solicitados, também retornam automaticamente os tipos a seguir de informações adicionais:

    • O ID principal do tipo de entidade atual, aqui contactid.

    • Um valor ETag, denotado pela chave @odata.etag, que identifica a versão específica do recurso solicitado. Para obter mais informações, consulte Executar operações condicionais usando A API.

    • O contexto dos metadados, denotado pela chave @odata.context, fornece uma forma de comparar os resultados das consultas para determinar se vieram da mesma consulta.

    • _transactioncurrencyid_value que indica a moeda local da transação monetária.

    Solicitação HTTP

    GET http://cc_WebAPI_ServiceURI/contacts(60f77a42-5f0e-e611-80e0-00155da84c03)?$select=fullname,annualincome,jobtitle,description HTTP/1.1
    Accept: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    

    Resposta HTTP

    HTTP/1.1 200 OK
    Content-Type: application/json; odata.metadata=minimal
    OData-Version: 4.0
    { 
       "@odata.context":"http://cc_WebAPI_ServiceURI/$metadata#contacts(fullname,annualincome,jobtitle,description)/$entity",
       "@odata.etag":"W/\"628883\"",
       "fullname":"Peter Cambel",
       "annualincome":80000.0000,
       "jobtitle":"Junior Developer",
       "description":null,
       "_transactioncurrencyid_value":"0d4ed62e-95f7-e511-80d1-00155da84c03",
       "contactid":"60f77a42-5f0e-e611-80e0-00155da84c03"
    }
    

    Saída do console

    Contact 'Peter Cambel' retrieved:
            Income: 80000
            Job title: Junior Developer
            Description: .
    

    Importante

    Você deve sempre usar a filtragem e a seleção em operações de recuperação para otimizar o desempenho. Para obter mais informações, consulte Consultar dados usando a API da Web.

  4. Atualize uma instância da entidade de contato pelo fornecimento de novos valores às mesmas propriedades.

    Solicitação HTTP

    PATCH http://cc_WebAPI_ServiceURI/contacts(60f77a42-5f0e-e611-80e0-00155da84c03) HTTP/1.1
    Content-Type: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    {
      "jobtitle": "Senior Developer",
      "annualincome": 95000,
      "description": "Assignment to-be-determined"
    }
    

    Resposta HTTP

    HTTP/1.1 204 No Content
    

    Saída do console

    Contact 'Peter Cambel' updated:
            Job title: Senior Developer
            Annual income: 95000
            Description: Assignment to-be-determined
    

    Importante

    Envie apenas propriedades alteradas apenas nas solicitações da atualização. Para obter mais informações, consulte Atualização básica.

  5. Defina explicitamente uma propriedade única, um número de telefone principal. Note que a solicitação PUT e que a chave JSON chamada value são usadas para executar operações em propriedades individuais.

    Solicitação HTTP

    PUT http://cc_WebAPI_ServiceURI/contacts(60f77a42-5f0e-e611-80e0-00155da84c03)/telephone1 HTTP/1.1
    Content-Type: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    {
      "value": "555-0105"
    }
    

    Resposta HTTP

    HTTP/1.1 204 No Content
    

    Saída do console

    Contact 'Peter Cambel' phone number updated.
    
  6. Recupere a mesma de propriedade única, o número de telefone principal. Observe novamente o uso da chave value.

    Solicitação HTTP

    GET http://cc_WebAPI_ServiceURI/contacts(60f77a42-5f0e-e611-80e0-00155da84c03)/telephone1 HTTP/1.1
    Accept: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    

    Resposta HTTP

    HTTP/1.1 200 OK
    Content-Type: application/json; odata.metadata=minimal
    OData-Version: 4.0
    { 
       "@odata.context":"http://cc_WebAPI_ServiceURI/$metadata#contacts(60f77a42-5f0e-e611-80e0-00155da84c03)/telephone1",
       "value":"555-0105"
    }
    

    Saída do console

    Contact's telephone# is: 555-0105.
    
  7. Crie um contato semelhante, mas também retorne informações da instância na mesma operação. Esse último recurso é habilitado pelo cabeçalho do Prefer: return=representation. Esse recurso foi apresentado à Atualização de dezembro de 2016 para Dynamics 365 (online e local) e requer a versão 8.2 ou superior.

    Solicitação HTTP

    POST http://cc_WebAPI_ServiceURI/contacts?$select=fullname,annualincome,jobtitle,contactid HTTP/1.1
    OData-Version: 4.0
    Content-Type: application/json; charset=utf-8
    Prefer: return=representation
    {
      "firstname": "Peter_Alt",
      "lastname": "Cambel",
      "jobtitle": "Junior Developer",
      "annualincome": 80000,
      "telephone1": "555-0110"
    }
    

    Resposta HTTP

    HTTP/1.1 201 Created
    Content-Type: application/json; odata.metadata=minimal
    Preference-Applied: return=representation
    OData-Version: 4.0
    {
      "@odata.context":"http://cc_WebAPI_ServiceURI/$metadata#contacts/$entity","@odata.etag":"W/\"758870\"","_transactioncurrencyid_value":"0d4ed62e-95f7-e511-80d1-00155da84c03","annualincome":80000.0000,"contactid":"199250b7-6cbe-e611-80f7-00155da84c08","jobtitle":"Junior Developer","fullname":"Peter_Alt Cambel"
    }
    

    Saída do console

    Contact 'Peter_Alt Cambel' created:
            Annual income: 80000
            Job title: Junior Developer
    Contact URI: http://cc_WebAPI_ServiceURI/contacts(199250b7-6cbe-e611-80f7-00155da84c08)
    
  8. Atualize este contato semelhante e também retorne informações da instância na mesma operação. Mais uma vez, esse último recurso é habilitado pelo cabeçalho do Prefer: return=representation. Esse recurso foi apresentado à Atualização de dezembro de 2016 para Dynamics 365 (online e local) e requer a versão 8.2 ou superior.

    Solicitação HTTP

    POST http://cc_WebAPI_ServiceURI/contacts?$select=fullname,annualincome,jobtitle,contactid HTTP/1.1
    OData-Version: 4.0
    Content-Type: application/json; charset=utf-8
    Prefer: return=representation
    {
      "firstname": "Peter_Alt",
      "lastname": "Cambel",
      "jobtitle": "Junior Developer",
      "annualincome": 80000,
      "telephone1": "555-0110"
    }
    

    Resposta HTTP

    HTTP/1.1 201 Created
    Content-Type: application/json; odata.metadata=minimal
    Preference-Applied: return=representation
    OData-Version: 4.0
    {
      "@odata.context":"http://cc_WebAPI_ServiceURI/$metadata#contacts/$entity","@odata.etag":"W/\"758870\"","_transactioncurrencyid_value":"0d4ed62e-95f7-e511-80d1-00155da84c03","annualincome":80000.0000,"contactid":"199250b7-6cbe-e611-80f7-00155da84c08","jobtitle":"Junior Developer","fullname":"Peter_Alt Cambel"
    }
    

    Saída do console

    Contact 'Peter_Alt Cambel' updated:
            Annual income: 95000
            Job title: Senior Developer
    

Seção 2: Crie uma associação

Essa seção cria uma nova instância de conta chamada Contoso, Ltd. e a associa a um contato existente, Peter Cambel, criado na Seção 1: Criar e atualizar operações básicas. Essa criação e associação são executadas em uma única operação POST.

  1. Crie uma conta Contoso, Ltd. e defina o atributo do contato principal como o contato Peter Cambel. A anotação da @odata.bind indica que uma associação está sendo criada por meio da associação da propriedade de navegação de valor único primarycontactid a um contato existente, Peter Cambel.

    Solicitação HTTP

    POST http://cc_WebAPI_ServiceURI/accounts HTTP/1.1
    Content-Type: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    {
      "name": "Contoso Inc",
      "telephone1": "555-5555",
      "primarycontactid@odata.bind": "http://cc_WebAPI_ServiceURI/contacts(60f77a42-5f0e-e611-80e0-00155da84c03)"
    }
    

    Resposta HTTP

    HTTP/1.1 204 No Content
    OData-Version: 4.0
    OData-EntityId: http://cc_WebAPI_ServiceURI/accounts(65f77a42-5f0e-e611-80e0-00155da84c03)
    

    Saída do console

    Account 'Contoso Inc' created.
    
  2. Recupere o contato principal da conta Contoso, Ltd. novamente usando $expand com a a propriedade de navegação de valor único primarycontactid para acessar o registro associado contact EntityType.

    Solicitação HTTP

    GET http://cc_WebAPI_ServiceURI/accounts(65f77a42-5f0e-e611-80e0-00155da84c03)?$select=name,&$expand=primarycontactid($select=fullname,jobtitle,annualincome) HTTP/1.1
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    

    Resposta HTTP

    HTTP/1.1 200 OK
    Content-Type: application/json; odata.metadata=minimal
    OData-Version: 4.0
    { 
       "@odata.context":"http://cc_WebAPI_ServiceURI/$metadata#accounts(name,primarycontactid,primarycontactid(fullname,jobtitle,annualincome))/$entity",
       "@odata.etag":"W/\"628886\"",
       "name":"Contoso Inc",
       "accountid":"65f77a42-5f0e-e611-80e0-00155da84c03",
       "primarycontactid":{ 
          "@odata.etag":"W/\"628885\"",
          "fullname":"Peter Cambel",
          "jobtitle":"Senior Developer",
          "annualincome":95000.0000,
          "_transactioncurrencyid_value":"0d4ed62e-95f7-e511-80d1-00155da84c03",
          "contactid":"60f77a42-5f0e-e611-80e0-00155da84c03"
       }
    }
    

    Saída do console

    Account 'Contoso Inc' has primary contact 'Peter Cambel':
         Job title: Senior Developer
         Income: 95000
    

Seção 3: Criar entidades relacionadas (inserção profunda)

Essa seção demonstra como criar uma instância de entidade e instâncias de entidade relacionadas, em uma única solicitação POST. Com esse método, todas as instâncias são recém-criadas; não há nenhuma instância a qual se associar. Esta abordagem tem duas vantagens. É mais eficiente, substituindo diversas operações de criação e associação mais simples por uma operação combinada. Além disso, é atômica, onde a operação inteira tem êxito e todos os objetos relacionados são criados ou ocorre falha na operação e nada é criado.

Esta seção cria uma conta, o contato principal e um conjunto de tarefas para o contato em uma solicitação.

  1. Crie uma conta Fourth Coffee e o contato principal Susie Curtis e suas três tarefas relacionadas em uma operação. Observe o uso de uma propriedade de navegação primarycontactid de valor único e da propriedade de navegação de valor de coleção Contact_Tasks para definir esses relacionamentos, respectivamente. As propriedades de navegação de valor único usam um valor de objeto, enquanto as propriedades de navegação de valor de coleção usam um valor de matriz.

    Solicitação HTTP

    POST http://cc_WebAPI_ServiceURI/accounts HTTP/1.1
    Content-Type: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    {
      "name": "Fourth Coffee",
      "primarycontactid": {
        "firstname": "Susie",
        "lastname": "Curtis",
        "jobtitle": "Coffee Master",
        "annualincome": 48000,
        "Contact_Tasks": [
          {
            "subject": "Sign invoice",
            "description": "Invoice #12321",
            "scheduledend": "2016-04-19T00:00:00-07:00"
          },
          {
            "subject": "Setup new display",
            "description": "Theme is - Spring is in the air",
            "scheduledstart": "2016-04-20T00:00:00-07:00"
          },
          {
            "subject": "Conduct training",
            "description": "Train team on making our new blended coffee",
            "scheduledstart": "2016-06-01T00:00:00-07:00"
          }
        ]
      }
    }
    

    Resposta HTTP

    HTTP/1.1 204 No Content
    OData-Version: 4.0
    OData-EntityId: http://cc_WebAPI_ServiceURI/accounts(6af77a42-5f0e-e611-80e0-00155da84c03)
    

    Saída do console

    Account 'Fourth Coffee' created.
    
  2. Recupere seletivamente a conta do Fourth Coffee recém-criada e seu contato principal. É feita uma expansão da propriedade de navegação de valor único primarycontactid.

    Solicitação HTTP

    GET http://cc_WebAPI_ServiceURI/accounts(6af77a42-5f0e-e611-80e0-00155da84c03)?$select=name,&$expand=primarycontactid($select=fullname,jobtitle,annualincome) HTTP/1.1
    Accept: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    

    Resposta HTTP

    HTTP/1.1 200 OK
    Content-Type: application/json; odata.metadata=minimal
    OData-Version: 4.0 
    { 
       "@odata.context":"http://cc_WebAPI_ServiceURI/$metadata#accounts(name,primarycontactid,primarycontactid(fullname,jobtitle,annualincome))/$entity",
       "@odata.etag":"W/\"628902\"",
       "name":"Fourth Coffee",
       "accountid":"6af77a42-5f0e-e611-80e0-00155da84c03",
       "primarycontactid":{ 
          "@odata.etag":"W/\"628892\"",
          "fullname":"Susie Curtis",
          "jobtitle":"Coffee Master",
          "annualincome":48000.0000,
          "_transactioncurrencyid_value":"0d4ed62e-95f7-e511-80d1-00155da84c03",
          "contactid":"6bf77a42-5f0e-e611-80e0-00155da84c03"
       }
    }
    

    Saída do console

    Account 'Fourth Coffee' has primary contact 'Susie Curtis':
            Job title: Coffee Master
            Income: 48000
    
  3. Recupere seletivamente as tarefas associadas ao contato principal recuperado na operação anterior. É feita uma expansão da propriedade de navegação de valor de coleção Contact_Tasks.

    Solicitação HTTP

    GET http://cc_WebAPI_ServiceURI/contacts(6bf77a42-5f0e-e611-80e0-00155da84c03)?$select=fullname,&$expand=Contact_Tasks($select=subject,description,scheduledstart,scheduledend) HTTP/1.1
    Accept: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    

    Resposta HTTP

    HTTP/1.1 200 OK
    Content-Type: application/json; odata.metadata=minimal
    OData-Version: 4.0 
    { 
       "@odata.context":"http://cc_WebAPI_ServiceURI/$metadata#contacts(fullname,Contact_Tasks,Contact_Tasks(subject,description,scheduledstart,scheduledend))/$entity",
       "@odata.etag":"W/\"628892\"",
       "fullname":"Susie Curtis",
       "contactid":"6bf77a42-5f0e-e611-80e0-00155da84c03",
       "Contact_Tasks":[ 
          { 
             "@odata.etag":"W/\"628903\"",
             "subject":"Sign invoice",
             "description":"Invoice #12321",
             "scheduledstart":"2016-04-19T00:00:00Z",
             "scheduledend":"2016-04-19T00:00:00Z",
             "activityid":"6cf77a42-5f0e-e611-80e0-00155da84c03"
          },
          { 
             "@odata.etag":"W/\"628905\"",
             "subject":"Setup new display",
             "description":"Theme is - Spring is in the air",
             "scheduledstart":"2016-04-20T00:00:00Z",
             "scheduledend":"2016-04-20T00:00:00Z",
             "activityid":"6df77a42-5f0e-e611-80e0-00155da84c03"
          },
          { 
             "@odata.etag":"W/\"628907\"",
             "subject":"Conduct training",
             "description":"Train team on making our new blended coffee",
             "scheduledstart":"2016-06-01T00:00:00Z",
             "scheduledend":"2016-06-01T00:00:00Z",
             "activityid":"6ef77a42-5f0e-e611-80e0-00155da84c03"
          }
       ]
    }
    

    Saída do console

    Contact 'Susie Curtis' has the following assigned tasks:
    Subject: Sign invoice,
            Description: Invoice #12321
            Start: 4/19/2016
            End: 4/19/2016
    
    Subject: Setup new display,
            Description: Theme is - Spring is in the air
            Start: 4/20/2016
            End: 4/20/2016
    
    Subject: Conduct training
            Description: Train team on making our new blended coffee,
            Start: 6/1/2016
            End: 6/1/2016
    

Seção 4: Associar e desassociar as entidades existentes

Esta seção mostra como associar e desassociar instâncias de entidade existentes. Formar uma associação existe o uso de um URI de referência e de um objeto de relacionamento, que são enviados na solicitação POST. A desassociação requer o envio de uma solicitação DELETE para o URI de referência daquela associação. Primeiro, uma associação de um-para-muitos é formada entre o contato e uma conta. Depois, uma associação de muitos-para-muitos é formada entre um concorrente e uma ou mais oportunidades.

  1. Adicione Peter Cambel como um contato da conta do Fourth Coffee usando a propriedade de navegação de valor de coleção contact_customer_accounts. Observação o uso da chave especial @odata.id para especificar o registro associado.

    Solicitação HTTP

    POST http://cc_WebAPI_ServiceURI/accounts(6af77a42-5f0e-e611-80e0-00155da84c03)/contact_customer_accounts/$ref HTTP/1.1
    Content-Type: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    {
      "@odata.id": "http://cc_WebAPI_ServiceURI/contacts(60f77a42-5f0e-e611-80e0-00155da84c03)"
    }
    

    Resposta HTTP

    HTTP/1.1 204 No Content
    

    Saída do console

    Contact 'Peter Cambel' associated to account 'Fourth Coffee'.
    
  2. Confirme a operação anterior por meio da recuperação da coleção de contatos da conta do Fourth Coffee. A resposta contém a matriz com um único elemento, o contato recém-atribuído Peter Cambel.

    Solicitação HTTP

    GET http://cc_WebAPI_ServiceURI/accounts(6af77a42-5f0e-e611-80e0-00155da84c03)/contact_customer_accounts?$select=fullname,jobtitle HTTP/1.1
    Accept: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    

    Resposta HTTP

    HTTP/1.1 200 OK
    Content-Type: application/json; odata.metadata=minimal
    OData-Version: 4.0 
    {
      "@odata.context":"http://cc_WebAPI_ServiceURI/$metadata#contacts(fullname,jobtitle)","value":[
        {
          "@odata.etag":"W/\"632481\"","fullname":"Peter Cambel","jobtitle":"Senior Developer","contactid":"00b6e0e2-b010-e611-80e1-00155da84c03"
        }
      ]
    }
    

    Saída do console

    Contact list for account 'Fourth Coffee':
            Name: Peter Cambel, Job title: Senior Developer
    
  3. Remova a associação que tinha acabado de ser criada entre a conta do Fourth Coffee e o contato Peter Cambel.

    Solicitação HTTP

    DELETE http://cc_WebAPI_ServiceURI/accounts(6af77a42-5f0e-e611-80e0-00155da84c03)/contact_customer_accounts/$ref?$id=http://cc_WebAPI_ServiceURI/contacts(60f77a42-5f0e-e611-80e0-00155da84c03) HTTP/1.1
    Content-Type: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    

    Resposta HTTP

    HTTP/1.1 204 No Content
    

    Saída do console

    Contact 'Peter Cambel' dissociated from account 'Fourth Coffee'.
    
  4. Crie um concorrente chamado Adventure Works.

    Solicitação HTTP

    POST http://cc_WebAPI_ServiceURI/competitors HTTP/1.1
    Content-Type: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    {
      "name": "Adventure Works",
      "strengths": "Strong promoter of private tours for multi-day outdoor adventures"
    }
    

    Resposta HTTP

    HTTP/1.1 204 No Content
    OData-Version: 4.0
    OData-EntityId: http://cc_WebAPI_ServiceURI/accounts(77f77a42-5f0e-e611-80e0-00155da84c03) 
    

    Saída do console

    Competitor 'Adventure Works' created.
    
  5. Crie uma oportunidade chamada River rafting adventure.

    Solicitação HTTP

    POST http://cc_WebAPI_ServiceURI/opportunities HTTP/1.1
    Content-Type: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    {
      "name": "River rafting adventure",
      "description": "Sales team on a river-rafting offsite and team building"
    }
    

    Resposta HTTP

    HTTP/1.1 204 No Content
    OData-Version: 4.0
    OData-EntityId: http://cc_WebAPI_ServiceURI/opportunities(7cf77a42-5f0e-e611-80e0-00155da84c03) 
    

    Saída do console

    Opportunity 'River rafting adventure' created.
    
  6. Associe essa nova oportunidade ao concorrente novo. Observe que a mesma sintaxe geral é usada nessa associação muitos-para-muitos da mesma forma que foi usada na associação um-para-muitos anterior.

    Solicitação HTTP

    POST http://cc_WebAPI_ServiceURI/opportunities(7cf77a42-5f0e-e611-80e0-00155da84c03)/opportunitycompetitors_association/$ref HTTP/1.1
    Content-Type: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    {
      "@odata.id": "http://cc_WebAPI_ServiceURI/competitors(77f77a42-5f0e-e611-80e0-00155da84c03)"
    }
    

    Resposta HTTP

    HTTP/1.1 204 No Content
    

    Saída do console

    Opportunity 'River rafting adventure' associated with competitor 'Adventure Works'.
    
  7. Recupere de forma seletiva as oportunidades associadas ao concorrente Adventure Works. É retornada uma matriz que contém uma oportunidade única.

    Solicitação HTTP

    GET http://cc_WebAPI_ServiceURI/competitors(77f77a42-5f0e-e611-80e0-00155da84c03)?$select=name,&$expand=opportunitycompetitors_association($select=name,description) HTTP/1.1
    Accept: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    

    Resposta HTTP

    HTTP/1.1 200 OK
    { 
       "@odata.context":"http://cc_WebAPI_ServiceURI/$metadata#competitors(name,opportunitycompetitors_association,opportunitycompetitors_association(name,description))/$entity",
       "@odata.etag":"W/\"628913\"",
       "name":"Adventure Works",
       "competitorid":"77f77a42-5f0e-e611-80e0-00155da84c03",
       "opportunitycompetitors_association":[ 
          { 
             "@odata.etag":"W/\"628917\"",
             "name":"River rafting adventure",
             "description":"Sales team on a river-rafting offsite and team building",
             "opportunityid":"7cf77a42-5f0e-e611-80e0-00155da84c03"
          }
       ]
    }
    

    Saída do console

    Competitor 'Adventure Works' has the following opportunities:
            Name: River rafting adventure,
            Description: Sales team on a river-rafting offsite and team building
    
  8. Desassocie a oportunidade do concorrente. Novamente, observe que esse processo apresenta a mesma sintaxe geral usada para remover a associação de um-para-muitos.

    Solicitação HTTP

    DELETE http://cc_WebAPI_ServiceURI/opportunities(7cf77a42-5f0e-e611-80e0-00155da84c03)/opportunitycompetitors_association/$ref?$id=http://[Token-CRM-Org-Name]/Contoso/api/data/v8.1/competitors(77f77a42-5f0e-e611-80e0-00155da84c03) HTTP/1.1
    Content-Type: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    

    Resposta HTTP

    HTTP/1.1 204 No Content
    

    Saída do console

    Opportunity 'River rafting adventure' disassociated from competitor 'Adventure Works'.
    

Seção 5: Excluir entidades (limpeza de exemplos)

Esta seção demonstra como excluir instâncias de entidade. A mensagem correspondente é uma simples solicitação DELETE que usa o URI da instância de entidade a ser excluída. Se a entidade de destino tem um relacionamento pai-filho com outras entidades, então excluir o pai, por padrão, propagará automaticamente a exclusão das instâncias filho. Por exemplo, neste exemplo, as tarefas têm contato com pai. Para obter mais informações, consulte Comportamento do relacionamento entre entidades.

  1. Cada elemento das URLs da coleção de entidades é excluído. O primeiro é um registro de contato para Peter Cambel.

    Solicitação HTTP

    DELETE http://cc_WebAPI_ServiceURI/contacts(60f77a42-5f0e-e611-80e0-00155da84c03) HTTP/1.1
    Content-Type: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    

    Resposta HTTP

    HTTP/1.1 204 No Content
    
  2. As iterações subsequentes por meio da coleção excluem os registros restantes.

    Solicitação HTTP

    DELETE http://cc_WebAPI_ServiceURI/accounts(65f77a42-5f0e-e611-80e0-00155da84c03) HTTP/1.1
    . . .
    
    DELETE http://cc_WebAPI_ServiceURI/accounts(6af77a42-5f0e-e611-80e0-00155da84c03) HTTP/1.1
    . . .
    
    DELETE http://cc_WebAPI_ServiceURI/contacts(6bf77a42-5f0e-e611-80e0-00155da84c03) HTTP/1.1
    . . .
    
    DELETE http://cc_WebAPI_ServiceURI/competitors(77f77a42-5f0e-e611-80e0-00155da84c03) HTTP/1.1
    . . .
    
    DELETE http://cc_WebAPI_ServiceURI/opportunities(7cf77a42-5f0e-e611-80e0-00155da84c03) HTTP/1.1
    . . .
    

Confira Também

Use a API da Web do Microsoft Dynamics 365
Criar uma entidade usando a API da Web
Recuperar uma entidade usando a API Web
Atualizar e excluir entidades que usam a API Web
Associar e desassociar entidades usando a API Web
Amostra de operações básicas API da Web (C#)
Exemplo de operações básicas da API Web (JavaScript do lado do cliente)

Microsoft Dynamics 365

© 2017 Microsoft. Todos os direitos reservados. Direitos autorais