Compartilhar via


Exemplo de operações de esquema de tabela da API Web

Esta coleção de solicitações e respostas http demonstra como executar operações selecionadas que modificam o esquema ou metadados do Dataverse usando estes exemplos:

Este artigo descreve um conjunto comum de operações implementadas por cada exemplo neste grupo. Este artigo descreve as solicitações HTTP e as respostas e a saída de texto que cada exemplo executa sem os detalhes específicos do idioma. Consulte as descrições específicas do idioma e os exemplos individuais para obter detalhes sobre como essas operações são executadas.

Demonstra

Este exemplo é dividido nas seções a seguir, contendo operações de API Web do Dataverse que são discutidas com mais detalhes nos artigos conceituais associados especificados.

Seção de código Artigos conceituais e de referência associados
Seção 0: Criar Publicador e Solução Criar uma linha de tabela
publisher EntityType
soluion EntityType
Seção 1: Criar, Recuperar e Atualizar Tabela Criar e atualizar definições de tabela
MetadadosDeEntidade TipoDeEntidade
Seção 2: Criar, Recuperar e Atualizar Colunas
- Coluna booliana
    - Atualizar valores de opção
- Coluna DateTime
- Coluna decimal
- Coluna Inteira
- Coluna de Memorandos
- Coluna Money
- Coluna de Lista de Seleção
    - Adicionar uma opção ao conjunto de opções local
    - Reordenar opções da coluna de escolha
    - Excluir valor da opção local
- Coluna de Lista de Seleção Múltipla
- Inserir valor de status
Criar colunas
Recuperando atributos
Ação InsertOptionValue
Ação OrderOption
Ação DeleteOptionValue
Ação InsertStatusValue
Seção 3: Criar e usar o Global OptionSet Criar e atualizar opções (conjuntos de opções)
Seção 4: Criar relação com o cliente Ação CreateCustomerRelationships
Seção 5: Criar e recuperar uma relação um-para-muitos Elegibilidade para relacionamentos
Criar uma relação um-para-muitos
Consultando metadados de relação
Seção 6: Criar e recuperar uma relação muitos para um Criar uma relação um-para-muitos
Consultando metadados de relação
Seção 7: Criar e recuperar uma relação muitos para muitos Criar uma relação muitos para muitos
Consultando metadados de relação
Seção 8: Exportar solução gerenciada Exportar soluções
Seção 9: Excluir registros de exemplo Exclusão básica
Seção 10: Importar e excluir solução gerenciada Importar soluções

Observação

Para fins de brevidade, cabeçalhos HTTP menos pertinentes são omitidos. As URLs dos registros variam com o endereço base da organização e as IDs definidas pelo servidor dataverse.

Seção 0: Criar Publicador e Solução

  1. Crie o publicador primeiro, pois a solução deve estar relacionada a ela. Todos os itens criados ou modificados neste exemplo usam os publicadores customizationprefix e customizationoptionvalueprefix.

    Pedir:

    POST [Organization Uri]/api/data/v9.2/publishers HTTP/1.1
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    If-None-Match: null
    Accept: application/json
    
    {
    "friendlyname": "Example Publisher",
    "uniquename": "examplepublisher",
    "description": "An example publisher for samples",
    "customizationprefix": "sample",
    "customizationoptionvalueprefix": 72700
    }
    

    Resposta:

    HTTP/1.1 204 NoContent
    OData-Version: 4.0
    OData-EntityId: [Organization Uri]/api/data/v9.2/publishers(00aa00aa-bb11-cc22-dd33-44ee44ee44ee)
    

    Saída do console:

    Created publisher Example Publisher
    
  2. Em seguida, crie a solução relacionada ao publicador.

    Observação

    Muitos dos itens criados ou atualizados nesta amostra usam o valor uniquename desta solução com o MSCRM.SolutionUniqueName cabeçalho da solicitação para que as alterações sejam incluídas como parte dessa solução. Algumas ações têm um SolutionUniqueName parâmetro que faz a mesma coisa. No final deste exemplo, essa solução é exportada e contém as definições de todos os itens criados e alterados neste exemplo.

    Pedir:

    POST [Organization Uri]/api/data/v9.2/solutions HTTP/1.1
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    If-None-Match: null
    Accept: application/json
    
    {
    "friendlyname": "Example Solution",
    "uniquename": "examplesolution",
    "description": "An example solution for samples",
    "version": "1.0.0.0",
    "publisherid@odata.bind": "publishers(00aa00aa-bb11-cc22-dd33-44ee44ee44ee)"
    }
    

    Resposta:

    HTTP/1.1 204 NoContent
    OData-Version: 4.0
    OData-EntityId: [Organization Uri]/api/data/v9.2/solutions(11bb11bb-cc22-dd33-ee44-55ff55ff55ff)
    

    Saída do console:

    Created solution Example Solution
    

Seção 1: Criar, Recuperar e Atualizar Tabela

  1. Criar a tabela sample_BankAccount.

    Essas propriedades são necessárias: SchemaName, , DisplayName, DisplayCollectionName, HasNotes, HasActivitiese PrimaryNameAttribute, que devem incluir o LogicalName valor da coluna de nome primário.

    A tabela também deve incluir uma coluna StringAttributeMetadata na Attributes coleção para ser a coluna de nome primário da tabela. Essa definição de coluna deve ter SchemaName, MaxLengthe DisplayName valores, e IsPrimaryName deve ser definida como true.

    Observação

    O MSCRM.SolutionUniqueName: examplesolution cabeçalho de solicitação associa essa tabela à solução. O SchemaName valor (sample_BankAccount) inclui o prefixo de personalização do publicador.

    Pedir:

    POST [Organization Uri]/api/data/v9.2/EntityDefinitions HTTP/1.1
    MSCRM.SolutionUniqueName: examplesolution
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    If-None-Match: null
    Accept: application/json
    
    {
    "@odata.type": "Microsoft.Dynamics.CRM.EntityMetadata",
    "Description": {
       "@odata.type": "Microsoft.Dynamics.CRM.Label",
       "LocalizedLabels": [
          {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "A table to store information about customer bank accounts",
          "LanguageCode": 1033,
          "IsManaged": false
          }
       ],
       "UserLocalizedLabel": {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "A table to store information about customer bank accounts",
          "LanguageCode": 1033,
          "IsManaged": false
       }
    },
    "DisplayCollectionName": {
       "@odata.type": "Microsoft.Dynamics.CRM.Label",
       "LocalizedLabels": [
          {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "Bank Accounts",
          "LanguageCode": 1033,
          "IsManaged": false
          }
       ],
       "UserLocalizedLabel": {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "Bank Accounts",
          "LanguageCode": 1033,
          "IsManaged": false
       }
    },
    "DisplayName": {
       "@odata.type": "Microsoft.Dynamics.CRM.Label",
       "LocalizedLabels": [
          {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "Bank Account",
          "LanguageCode": 1033,
          "IsManaged": false
          }
       ],
       "UserLocalizedLabel": {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "Bank Account",
          "LanguageCode": 1033,
          "IsManaged": false
       }
    },
    "HasActivities": false,
    "HasNotes": false,
    "OwnershipType": "UserOwned",
    "PrimaryNameAttribute": "sample_name",
    "SchemaName": "sample_BankAccount",
    "Attributes": [
       {
          "@odata.type": "Microsoft.Dynamics.CRM.StringAttributeMetadata",
          "AttributeType": "String",
          "AttributeTypeName": {
          "Value": "StringType"
          },
          "MaxLength": 100,
          "Description": {
          "@odata.type": "Microsoft.Dynamics.CRM.Label",
          "LocalizedLabels": [
             {
                "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
                "Label": "The primary attribute for the Bank Account entity.",
                "LanguageCode": 1033,
                "IsManaged": false
             }
          ],
          "UserLocalizedLabel": {
             "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
             "Label": "The primary attribute for the Bank Account entity.",
             "LanguageCode": 1033,
             "IsManaged": false
          }
          },
          "DisplayName": {
          "@odata.type": "Microsoft.Dynamics.CRM.Label",
          "LocalizedLabels": [
             {
                "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
                "Label": "Account Name",
                "LanguageCode": 1033,
                "IsManaged": false
             }
          ],
          "UserLocalizedLabel": {
             "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
             "Label": "Account Name",
             "LanguageCode": 1033,
             "IsManaged": false
          }
          },
          "IsPrimaryName": true,
          "RequiredLevel": {
          "Value": "None",
          "CanBeChanged": false,
          "ManagedPropertyLogicalName": "canmodifyrequirementlevelsettings"
          },
          "SchemaName": "sample_Name"
       }
    ]
    }
    

    Resposta:

    HTTP/1.1 204 NoContent
    OData-Version: 4.0
    OData-EntityId: [Organization Uri]/api/data/v9.2/EntityDefinitions(22cc22cc-dd33-ee44-ff55-66aa66aa66aa)
    

    Saída do console:

    Sending request to create the sample_BankAccount table...
    Created sample_BankAccount table.
    
  2. Recupere a definição da sample_BankAccount tabela.

    • Essa operação de recuperação não inclui nenhuma $select para filtrar as propriedades retornadas porque esses dados são modificados e enviados de volta para atualizar a definição de tabela usando PUT, o que substitui o valor existente.
    • Essa consulta também não inclui um $expand para incluir dados relacionados, como atributos, porque os dados relacionados devem ser atualizados separadamente.

    Observação

    Essa solicitação e outras solicitações neste exemplo usam o cabeçalho Consistency: Strong. Use este cabeçalho quando recuperar as alterações nas definições de metadados logo após aplicá-las. As alterações de metadados são armazenadas em cache por motivos de desempenho e uma solicitação para um item recém-criado pode retornar um 404 porque ele ainda não foi armazenado em cache. O cache pode levar 30 segundos. Esse cabeçalho força o servidor a ler a versão mais recente, incluindo as alterações. Ao usar esse cabeçalho, você nega o ganho de desempenho fornecido pelo cache, portanto, você só deve usá-lo em cenários como este exemplo em que você está recuperando as alterações feitas. Mais informações: cabeçalhos HTTP > Outros cabeçalhos.

    Pedir:

    GET [Organization Uri]/api/data/v9.2/EntityDefinitions(LogicalName='sample_bankaccount') HTTP/1.1
    Consistency: Strong
    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#EntityDefinitions/$entity",
    "ActivityTypeMask": 0,
    "AutoRouteToOwnerQueue": false,
    "CanTriggerWorkflow": true,
    "EntityHelpUrlEnabled": false,
    "EntityHelpUrl": null,
    "IsDocumentManagementEnabled": false,
    "IsOneNoteIntegrationEnabled": false,
    "IsInteractionCentricEnabled": false,
    "IsKnowledgeManagementEnabled": false,
    "IsSLAEnabled": false,
    "IsBPFEntity": false,
    "IsDocumentRecommendationsEnabled": false,
    "IsMSTeamsIntegrationEnabled": false,
    "SettingOf": null,
    "DataProviderId": null,
    "DataSourceId": null,
    "AutoCreateAccessTeams": false,
    "IsActivity": false,
    "IsActivityParty": false,
    "IsRetrieveAuditEnabled": false,
    "IsRetrieveMultipleAuditEnabled": false,
    "IsArchivalEnabled": false,
    "IsAvailableOffline": false,
    "IsChildEntity": false,
    "IsAIRUpdated": false,
    "IconLargeName": null,
    "IconMediumName": null,
    "IconSmallName": null,
    "IconVectorName": null,
    "IsCustomEntity": true,
    "IsBusinessProcessEnabled": false,
    "SyncToExternalSearchIndex": false,
    "IsOptimisticConcurrencyEnabled": true,
    "ChangeTrackingEnabled": false,
    "IsImportable": true,
    "IsIntersect": false,
    "IsManaged": false,
    "IsEnabledForCharts": true,
    "IsEnabledForTrace": false,
    "IsValidForAdvancedFind": true,
    "DaysSinceRecordLastModified": 0,
    "MobileOfflineFilters": "",
    "IsReadingPaneEnabled": true,
    "IsQuickCreateEnabled": false,
    "LogicalName": "sample_bankaccount",
    "ObjectTypeCode": 10393,
    "OwnershipType": "UserOwned",
    "PrimaryNameAttribute": "sample_name",
    "PrimaryImageAttribute": null,
    "PrimaryIdAttribute": "sample_bankaccountid",
    "RecurrenceBaseEntityLogicalName": null,
    "ReportViewName": "Filteredsample_BankAccount",
    "SchemaName": "sample_BankAccount",
    "IntroducedVersion": "1.0.0.0",
    "IsStateModelAware": true,
    "EnforceStateTransitions": false,
    "ExternalName": null,
    "EntityColor": null,
    "LogicalCollectionName": "sample_bankaccounts",
    "ExternalCollectionName": null,
    "CollectionSchemaName": "sample_BankAccounts",
    "EntitySetName": "sample_bankaccounts",
    "IsEnabledForExternalChannels": false,
    "IsPrivate": false,
    "UsesBusinessDataLabelTable": false,
    "IsLogicalEntity": false,
    "HasNotes": false,
    "HasActivities": false,
    "HasFeedback": false,
    "IsSolutionAware": false,
    "CreatedOn": "2022-09-01T16:13:40Z",
    "ModifiedOn": "2022-09-01T16:13:40Z",
    "HasEmailAddresses": false,
    "OwnerId": null,
    "OwnerIdType": 8,
    "OwningBusinessUnit": null,
    "MetadataId": "22cc22cc-dd33-ee44-ff55-66aa66aa66aa",
    "HasChanged": null,
    "Description": {
       "LocalizedLabels": [
          {
          "Label": "A table to store information about customer bank accounts",
          "LanguageCode": 1033,
          "IsManaged": false,
          "MetadataId": "daf026b7-dfde-4b7b-8e52-91f31b098a9d",
          "HasChanged": null
          }
       ],
       "UserLocalizedLabel": {
          "Label": "A table to store information about customer bank accounts",
          "LanguageCode": 1033,
          "IsManaged": false,
          "MetadataId": "daf026b7-dfde-4b7b-8e52-91f31b098a9d",
          "HasChanged": null
       }
    },
    "DisplayCollectionName": {
       "LocalizedLabels": [
          {
          "Label": "Bank Accounts",
          "LanguageCode": 1033,
          "IsManaged": false,
          "MetadataId": "5c598c79-b89d-4679-8a40-9562d0a1e4fb",
          "HasChanged": null
          }
       ],
       "UserLocalizedLabel": {
          "Label": "Bank Accounts",
          "LanguageCode": 1033,
          "IsManaged": false,
          "MetadataId": "5c598c79-b89d-4679-8a40-9562d0a1e4fb",
          "HasChanged": null
       }
    },
    "DisplayName": {
       "LocalizedLabels": [
          {
          "Label": "Bank Account",
          "LanguageCode": 1033,
          "IsManaged": false,
          "MetadataId": "4e4c3fdc-7711-4b43-8eba-9155bb7100c0",
          "HasChanged": null
          }
       ],
       "UserLocalizedLabel": {
          "Label": "Bank Account",
          "LanguageCode": 1033,
          "IsManaged": false,
          "MetadataId": "4e4c3fdc-7711-4b43-8eba-9155bb7100c0",
          "HasChanged": null
       }
    },
    "IsAuditEnabled": {
       "Value": false,
       "CanBeChanged": true,
       "ManagedPropertyLogicalName": "canmodifyauditsettings"
    },
    "IsValidForQueue": {
       "Value": false,
       "CanBeChanged": true,
       "ManagedPropertyLogicalName": "canmodifyqueuesettings"
    },
    "IsConnectionsEnabled": {
       "Value": false,
       "CanBeChanged": true,
       "ManagedPropertyLogicalName": "canmodifyconnectionsettings"
    },
    "IsCustomizable": {
       "Value": true,
       "CanBeChanged": true,
       "ManagedPropertyLogicalName": "iscustomizable"
    },
    "IsRenameable": {
       "Value": true,
       "CanBeChanged": true,
       "ManagedPropertyLogicalName": "isrenameable"
    },
    "IsMappable": {
       "Value": true,
       "CanBeChanged": false,
       "ManagedPropertyLogicalName": "ismappable"
    },
    "IsDuplicateDetectionEnabled": {
       "Value": false,
       "CanBeChanged": true,
       "ManagedPropertyLogicalName": "canmodifyduplicatedetectionsettings"
    },
    "CanCreateAttributes": {
       "Value": true,
       "CanBeChanged": false,
       "ManagedPropertyLogicalName": "cancreateattributes"
    },
    "CanCreateForms": {
       "Value": true,
       "CanBeChanged": true,
       "ManagedPropertyLogicalName": "cancreateforms"
    },
    "CanCreateViews": {
       "Value": true,
       "CanBeChanged": true,
       "ManagedPropertyLogicalName": "cancreateviews"
    },
    "CanCreateCharts": {
       "Value": true,
       "CanBeChanged": true,
       "ManagedPropertyLogicalName": "cancreatecharts"
    },
    "CanBeRelatedEntityInRelationship": {
       "Value": true,
       "CanBeChanged": true,
       "ManagedPropertyLogicalName": "canberelatedentityinrelationship"
    },
    "CanBePrimaryEntityInRelationship": {
       "Value": true,
       "CanBeChanged": true,
       "ManagedPropertyLogicalName": "canbeprimaryentityinrelationship"
    },
    "CanBeInManyToMany": {
       "Value": true,
       "CanBeChanged": true,
       "ManagedPropertyLogicalName": "canbeinmanytomany"
    },
    "CanBeInCustomEntityAssociation": {
       "Value": true,
       "CanBeChanged": true,
       "ManagedPropertyLogicalName": "canbeincustomentityassociation"
    },
    "CanEnableSyncToExternalSearchIndex": {
       "Value": true,
       "CanBeChanged": true,
       "ManagedPropertyLogicalName": "canenablesynctoexternalsearchindex"
    },
    "CanModifyAdditionalSettings": {
       "Value": true,
       "CanBeChanged": true,
       "ManagedPropertyLogicalName": "canmodifyadditionalsettings"
    },
    "CanChangeHierarchicalRelationship": {
       "Value": true,
       "CanBeChanged": true,
       "ManagedPropertyLogicalName": "canchangehierarchicalrelationship"
    },
    "CanChangeTrackingBeEnabled": {
       "Value": true,
       "CanBeChanged": true,
       "ManagedPropertyLogicalName": "canchangetrackingbeenabled"
    },
    "IsMailMergeEnabled": {
       "Value": false,
       "CanBeChanged": true,
       "ManagedPropertyLogicalName": "canmodifymailmergesettings"
    },
    "IsVisibleInMobile": {
       "Value": false,
       "CanBeChanged": true,
       "ManagedPropertyLogicalName": "canmodifymobilevisibility"
    },
    "IsVisibleInMobileClient": {
       "Value": false,
       "CanBeChanged": true,
       "ManagedPropertyLogicalName": "canmodifymobileclientvisibility"
    },
    "IsReadOnlyInMobileClient": {
       "Value": false,
       "CanBeChanged": true,
       "ManagedPropertyLogicalName": "canmodifymobileclientreadonly"
    },
    "IsOfflineInMobileClient": {
       "Value": false,
       "CanBeChanged": true,
       "ManagedPropertyLogicalName": "canmodifymobileclientoffline"
    },
    "Privileges": [
       {
          "CanBeBasic": true,
          "CanBeDeep": true,
          "CanBeGlobal": true,
          "CanBeLocal": true,
          "CanBeEntityReference": false,
          "CanBeParentEntityReference": false,
          "Name": "prvCreatesample_BankAccount",
          "PrivilegeId": "44f00701-716e-4584-8bab-cb0d263c070b",
          "PrivilegeType": "Create"
       },
       {
          "CanBeBasic": true,
          "CanBeDeep": true,
          "CanBeGlobal": true,
          "CanBeLocal": true,
          "CanBeEntityReference": false,
          "CanBeParentEntityReference": false,
          "Name": "prvReadsample_BankAccount",
          "PrivilegeId": "9cad3243-d0fe-467e-a731-c8b3416a6252",
          "PrivilegeType": "Read"
       },
       {
          "CanBeBasic": true,
          "CanBeDeep": true,
          "CanBeGlobal": true,
          "CanBeLocal": true,
          "CanBeEntityReference": false,
          "CanBeParentEntityReference": false,
          "Name": "prvWritesample_BankAccount",
          "PrivilegeId": "dc5465ed-223f-4b13-a272-fff25e5b5270",
          "PrivilegeType": "Write"
       },
       {
          "CanBeBasic": true,
          "CanBeDeep": true,
          "CanBeGlobal": true,
          "CanBeLocal": true,
          "CanBeEntityReference": false,
          "CanBeParentEntityReference": false,
          "Name": "prvDeletesample_BankAccount",
          "PrivilegeId": "9a409df2-ca4a-4ad9-8218-df88424dd7a0",
          "PrivilegeType": "Delete"
       },
       {
          "CanBeBasic": true,
          "CanBeDeep": true,
          "CanBeGlobal": true,
          "CanBeLocal": true,
          "CanBeEntityReference": false,
          "CanBeParentEntityReference": false,
          "Name": "prvAssignsample_BankAccount",
          "PrivilegeId": "73bf7dd3-f532-4468-abfe-84bbf0eae058",
          "PrivilegeType": "Assign"
       },
       {
          "CanBeBasic": true,
          "CanBeDeep": true,
          "CanBeGlobal": true,
          "CanBeLocal": true,
          "CanBeEntityReference": false,
          "CanBeParentEntityReference": false,
          "Name": "prvSharesample_BankAccount",
          "PrivilegeId": "292f6e27-9603-4835-882d-e28c175432ed",
          "PrivilegeType": "Share"
       },
       {
          "CanBeBasic": true,
          "CanBeDeep": true,
          "CanBeGlobal": true,
          "CanBeLocal": true,
          "CanBeEntityReference": false,
          "CanBeParentEntityReference": false,
          "Name": "prvAppendsample_BankAccount",
          "PrivilegeId": "42401aa6-6447-4fdc-9679-bcb89b62bd76",
          "PrivilegeType": "Append"
       },
       {
          "CanBeBasic": true,
          "CanBeDeep": true,
          "CanBeGlobal": true,
          "CanBeLocal": true,
          "CanBeEntityReference": false,
          "CanBeParentEntityReference": false,
          "Name": "prvAppendTosample_BankAccount",
          "PrivilegeId": "847ba62d-2f33-4208-87e6-52532b331f60",
          "PrivilegeType": "AppendTo"
       }
    ],
    "Settings": []
    }
    

    Saída do console:

    O exemplo exibe o JSON recuperado do servidor.

  3. Atualize a tabela sample_BankAccount. Os únicos valores que são alterados são HasActivities e Description, mas você deve enviar toda a definição com PUT.

    Pedir:

    PUT [Organization Uri]/api/data/v9.2/EntityDefinitions(LogicalName='sample_bankaccount') HTTP/1.1
    MSCRM.SolutionUniqueName: examplesolution
    MSCRM.MergeLabels: true
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    If-None-Match: null
    Accept: application/json
    
    {
    "@odata.type": "Microsoft.Dynamics.CRM.EntityMetadata",
    "ActivityTypeMask": 0,
    "AutoCreateAccessTeams": false,
    "AutoRouteToOwnerQueue": false,
    "CanBeInCustomEntityAssociation": {
       "@odata.type": "Microsoft.Dynamics.CRM.BooleanManagedProperty",
       "Value": true,
       "CanBeChanged": true,
       "ManagedPropertyLogicalName": "canbeincustomentityassociation"
    },
    "CanBeInManyToMany": {
       "@odata.type": "Microsoft.Dynamics.CRM.BooleanManagedProperty",
       "Value": true,
       "CanBeChanged": true,
       "ManagedPropertyLogicalName": "canbeinmanytomany"
    },
    "CanBePrimaryEntityInRelationship": {
       "@odata.type": "Microsoft.Dynamics.CRM.BooleanManagedProperty",
       "Value": true,
       "CanBeChanged": true,
       "ManagedPropertyLogicalName": "canbeprimaryentityinrelationship"
    },
    "CanBeRelatedEntityInRelationship": {
       "@odata.type": "Microsoft.Dynamics.CRM.BooleanManagedProperty",
       "Value": true,
       "CanBeChanged": true,
       "ManagedPropertyLogicalName": "canberelatedentityinrelationship"
    },
    "CanChangeHierarchicalRelationship": {
       "@odata.type": "Microsoft.Dynamics.CRM.BooleanManagedProperty",
       "Value": true,
       "CanBeChanged": true,
       "ManagedPropertyLogicalName": "canchangehierarchicalrelationship"
    },
    "CanChangeTrackingBeEnabled": {
       "@odata.type": "Microsoft.Dynamics.CRM.BooleanManagedProperty",
       "Value": true,
       "CanBeChanged": true,
       "ManagedPropertyLogicalName": "canchangetrackingbeenabled"
    },
    "CanCreateAttributes": {
       "@odata.type": "Microsoft.Dynamics.CRM.BooleanManagedProperty",
       "Value": true,
       "CanBeChanged": false,
       "ManagedPropertyLogicalName": "cancreateattributes"
    },
    "CanCreateCharts": {
       "@odata.type": "Microsoft.Dynamics.CRM.BooleanManagedProperty",
       "Value": true,
       "CanBeChanged": true,
       "ManagedPropertyLogicalName": "cancreatecharts"
    },
    "CanCreateForms": {
       "@odata.type": "Microsoft.Dynamics.CRM.BooleanManagedProperty",
       "Value": true,
       "CanBeChanged": true,
       "ManagedPropertyLogicalName": "cancreateforms"
    },
    "CanCreateViews": {
       "@odata.type": "Microsoft.Dynamics.CRM.BooleanManagedProperty",
       "Value": true,
       "CanBeChanged": true,
       "ManagedPropertyLogicalName": "cancreateviews"
    },
    "CanEnableSyncToExternalSearchIndex": {
       "@odata.type": "Microsoft.Dynamics.CRM.BooleanManagedProperty",
       "Value": true,
       "CanBeChanged": true,
       "ManagedPropertyLogicalName": "canenablesynctoexternalsearchindex"
    },
    "CanModifyAdditionalSettings": {
       "@odata.type": "Microsoft.Dynamics.CRM.BooleanManagedProperty",
       "Value": true,
       "CanBeChanged": true,
       "ManagedPropertyLogicalName": "canmodifyadditionalsettings"
    },
    "CanTriggerWorkflow": true,
    "ChangeTrackingEnabled": false,
    "CollectionSchemaName": "sample_BankAccounts",
    "DaysSinceRecordLastModified": 0,
    "Description": {
       "@odata.type": "Microsoft.Dynamics.CRM.Label",
       "LocalizedLabels": [
          {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "Contains information about customer bank accounts",
          "LanguageCode": 1033,
          "IsManaged": false
          }
       ],
       "UserLocalizedLabel": {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "Contains information about customer bank accounts",
          "LanguageCode": 1033,
          "IsManaged": false
       }
    },
    "DisplayCollectionName": {
       "@odata.type": "Microsoft.Dynamics.CRM.Label",
       "LocalizedLabels": [
          {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "Bank Accounts",
          "LanguageCode": 1033,
          "IsManaged": false,
          "MetadataId": "5c598c79-b89d-4679-8a40-9562d0a1e4fb"
          }
       ],
       "UserLocalizedLabel": {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "Bank Accounts",
          "LanguageCode": 1033,
          "IsManaged": false,
          "MetadataId": "5c598c79-b89d-4679-8a40-9562d0a1e4fb"
       }
    },
    "DisplayName": {
       "@odata.type": "Microsoft.Dynamics.CRM.Label",
       "LocalizedLabels": [
          {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "Bank Account",
          "LanguageCode": 1033,
          "IsManaged": false,
          "MetadataId": "4e4c3fdc-7711-4b43-8eba-9155bb7100c0"
          }
       ],
       "UserLocalizedLabel": {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "Bank Account",
          "LanguageCode": 1033,
          "IsManaged": false,
          "MetadataId": "4e4c3fdc-7711-4b43-8eba-9155bb7100c0"
       }
    },
    "EnforceStateTransitions": false,
    "EntityHelpUrlEnabled": false,
    "EntitySetName": "sample_bankaccounts",
    "HasActivities": true,
    "HasFeedback": false,
    "HasNotes": false,
    "IntroducedVersion": "1.0.0.0",
    "IsActivity": false,
    "IsActivityParty": false,
    "IsAIRUpdated": false,
    "IsAuditEnabled": {
       "@odata.type": "Microsoft.Dynamics.CRM.BooleanManagedProperty",
       "Value": false,
       "CanBeChanged": true,
       "ManagedPropertyLogicalName": "canmodifyauditsettings"
    },
    "IsAvailableOffline": false,
    "IsBPFEntity": false,
    "IsBusinessProcessEnabled": false,
    "IsChildEntity": false,
    "IsConnectionsEnabled": {
       "@odata.type": "Microsoft.Dynamics.CRM.BooleanManagedProperty",
       "Value": false,
       "CanBeChanged": true,
       "ManagedPropertyLogicalName": "canmodifyconnectionsettings"
    },
    "IsCustomEntity": true,
    "IsCustomizable": {
       "@odata.type": "Microsoft.Dynamics.CRM.BooleanManagedProperty",
       "Value": true,
       "CanBeChanged": true,
       "ManagedPropertyLogicalName": "iscustomizable"
    },
    "IsDocumentManagementEnabled": false,
    "IsDocumentRecommendationsEnabled": false,
    "IsDuplicateDetectionEnabled": {
       "@odata.type": "Microsoft.Dynamics.CRM.BooleanManagedProperty",
       "Value": false,
       "CanBeChanged": true,
       "ManagedPropertyLogicalName": "canmodifyduplicatedetectionsettings"
    },
    "IsEnabledForCharts": true,
    "IsEnabledForExternalChannels": false,
    "IsEnabledForTrace": false,
    "IsImportable": true,
    "IsInteractionCentricEnabled": false,
    "IsIntersect": false,
    "IsKnowledgeManagementEnabled": false,
    "IsLogicalEntity": false,
    "IsMailMergeEnabled": {
       "@odata.type": "Microsoft.Dynamics.CRM.BooleanManagedProperty",
       "Value": false,
       "CanBeChanged": true,
       "ManagedPropertyLogicalName": "canmodifymailmergesettings"
    },
    "IsManaged": false,
    "IsMappable": {
       "@odata.type": "Microsoft.Dynamics.CRM.BooleanManagedProperty",
       "Value": true,
       "CanBeChanged": false,
       "ManagedPropertyLogicalName": "ismappable"
    },
    "IsMSTeamsIntegrationEnabled": false,
    "IsOfflineInMobileClient": {
       "@odata.type": "Microsoft.Dynamics.CRM.BooleanManagedProperty",
       "Value": false,
       "CanBeChanged": true,
       "ManagedPropertyLogicalName": "canmodifymobileclientoffline"
    },
    "IsOneNoteIntegrationEnabled": false,
    "IsOptimisticConcurrencyEnabled": true,
    "IsPrivate": false,
    "IsQuickCreateEnabled": false,
    "IsReadingPaneEnabled": true,
    "IsReadOnlyInMobileClient": {
       "@odata.type": "Microsoft.Dynamics.CRM.BooleanManagedProperty",
       "Value": false,
       "CanBeChanged": true,
       "ManagedPropertyLogicalName": "canmodifymobileclientreadonly"
    },
    "IsRenameable": {
       "@odata.type": "Microsoft.Dynamics.CRM.BooleanManagedProperty",
       "Value": true,
       "CanBeChanged": true,
       "ManagedPropertyLogicalName": "isrenameable"
    },
    "IsSLAEnabled": false,
    "IsSolutionAware": false,
    "IsStateModelAware": true,
    "IsValidForAdvancedFind": true,
    "IsValidForQueue": {
       "@odata.type": "Microsoft.Dynamics.CRM.BooleanManagedProperty",
       "Value": false,
       "CanBeChanged": true,
       "ManagedPropertyLogicalName": "canmodifyqueuesettings"
    },
    "IsVisibleInMobile": {
       "@odata.type": "Microsoft.Dynamics.CRM.BooleanManagedProperty",
       "Value": false,
       "CanBeChanged": true,
       "ManagedPropertyLogicalName": "canmodifymobilevisibility"
    },
    "IsVisibleInMobileClient": {
       "@odata.type": "Microsoft.Dynamics.CRM.BooleanManagedProperty",
       "Value": false,
       "CanBeChanged": true,
       "ManagedPropertyLogicalName": "canmodifymobileclientvisibility"
    },
    "LogicalCollectionName": "sample_bankaccounts",
    "LogicalName": "sample_bankaccount",
    "MobileOfflineFilters": "",
    "ObjectTypeCode": 10393,
    "OwnershipType": "UserOwned",
    "PrimaryIdAttribute": "sample_bankaccountid",
    "PrimaryNameAttribute": "sample_name",
    "Privileges": [
       {
          "@odata.type": "Microsoft.Dynamics.CRM.SecurityPrivilegeMetadata",
          "CanBeBasic": true,
          "CanBeDeep": true,
          "CanBeGlobal": true,
          "CanBeLocal": true,
          "CanBeEntityReference": false,
          "CanBeParentEntityReference": false,
          "Name": "prvCreatesample_BankAccount",
          "PrivilegeId": "44f00701-716e-4584-8bab-cb0d263c070b",
          "PrivilegeType": "Create"
       },
       {
          "@odata.type": "Microsoft.Dynamics.CRM.SecurityPrivilegeMetadata",
          "CanBeBasic": true,
          "CanBeDeep": true,
          "CanBeGlobal": true,
          "CanBeLocal": true,
          "CanBeEntityReference": false,
          "CanBeParentEntityReference": false,
          "Name": "prvReadsample_BankAccount",
          "PrivilegeId": "9cad3243-d0fe-467e-a731-c8b3416a6252",
          "PrivilegeType": "Read"
       },
       {
          "@odata.type": "Microsoft.Dynamics.CRM.SecurityPrivilegeMetadata",
          "CanBeBasic": true,
          "CanBeDeep": true,
          "CanBeGlobal": true,
          "CanBeLocal": true,
          "CanBeEntityReference": false,
          "CanBeParentEntityReference": false,
          "Name": "prvWritesample_BankAccount",
          "PrivilegeId": "dc5465ed-223f-4b13-a272-fff25e5b5270",
          "PrivilegeType": "Write"
       },
       {
          "@odata.type": "Microsoft.Dynamics.CRM.SecurityPrivilegeMetadata",
          "CanBeBasic": true,
          "CanBeDeep": true,
          "CanBeGlobal": true,
          "CanBeLocal": true,
          "CanBeEntityReference": false,
          "CanBeParentEntityReference": false,
          "Name": "prvDeletesample_BankAccount",
          "PrivilegeId": "9a409df2-ca4a-4ad9-8218-df88424dd7a0",
          "PrivilegeType": "Delete"
       },
       {
          "@odata.type": "Microsoft.Dynamics.CRM.SecurityPrivilegeMetadata",
          "CanBeBasic": true,
          "CanBeDeep": true,
          "CanBeGlobal": true,
          "CanBeLocal": true,
          "CanBeEntityReference": false,
          "CanBeParentEntityReference": false,
          "Name": "prvAssignsample_BankAccount",
          "PrivilegeId": "73bf7dd3-f532-4468-abfe-84bbf0eae058",
          "PrivilegeType": "Assign"
       },
       {
          "@odata.type": "Microsoft.Dynamics.CRM.SecurityPrivilegeMetadata",
          "CanBeBasic": true,
          "CanBeDeep": true,
          "CanBeGlobal": true,
          "CanBeLocal": true,
          "CanBeEntityReference": false,
          "CanBeParentEntityReference": false,
          "Name": "prvSharesample_BankAccount",
          "PrivilegeId": "292f6e27-9603-4835-882d-e28c175432ed",
          "PrivilegeType": "Share"
       },
       {
          "@odata.type": "Microsoft.Dynamics.CRM.SecurityPrivilegeMetadata",
          "CanBeBasic": true,
          "CanBeDeep": true,
          "CanBeGlobal": true,
          "CanBeLocal": true,
          "CanBeEntityReference": false,
          "CanBeParentEntityReference": false,
          "Name": "prvAppendsample_BankAccount",
          "PrivilegeId": "42401aa6-6447-4fdc-9679-bcb89b62bd76",
          "PrivilegeType": "Append"
       },
       {
          "@odata.type": "Microsoft.Dynamics.CRM.SecurityPrivilegeMetadata",
          "CanBeBasic": true,
          "CanBeDeep": true,
          "CanBeGlobal": true,
          "CanBeLocal": true,
          "CanBeEntityReference": false,
          "CanBeParentEntityReference": false,
          "Name": "prvAppendTosample_BankAccount",
          "PrivilegeId": "847ba62d-2f33-4208-87e6-52532b331f60",
          "PrivilegeType": "AppendTo"
       }
    ],
    "ReportViewName": "Filteredsample_BankAccount",
    "SchemaName": "sample_BankAccount",
    "Settings": [],
    "SyncToExternalSearchIndex": false,
    "UsesBusinessDataLabelTable": false,
    "MetadataId": "22cc22cc-dd33-ee44-ff55-66aa66aa66aa"
    }
    

    Resposta:

    HTTP/1.1 204 NoContent
    OData-Version: 4.0
    OData-EntityId: [Organization Uri]/api/data/v9.2/EntityDefinitions(LogicalName='sample_bankaccount')
    

    Saída do console:

    Sending request to update the sample_BankAccount table...
    Updated the Bank Account table
    

Seção 2: Criar, Recuperar e Atualizar Colunas

Esta seção cria e recupera um grupo selecionado de definições de coluna. Cada um desses tipos é derivado do AttributeMetadata EntityType para que eles compartilhem a maioria das mesmas propriedades comuns. No entanto, cada tipo derivado tem algumas propriedades especiais.

Coluna booliana

  1. Crie uma coluna booliana usando BooleanAttributeMetadata EntityType. Apesar do nome, as colunas boolianas têm uma OptionSet propriedade como colunas de escolha. No entanto, eles sempre têm apenas duas opções: TrueOption com o valor 1 e FalseOption com o valor 0.

    Pedir:

    POST [Organization Uri]/api/data/v9.2/EntityDefinitions(LogicalName='sample_bankaccount')/Attributes HTTP/1.1
    MSCRM.SolutionUniqueName: examplesolution
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    If-None-Match: null
    Accept: application/json
    
    {
    "@odata.type": "Microsoft.Dynamics.CRM.BooleanAttributeMetadata",
    "AttributeType": "Boolean",
    "AttributeTypeName": {
       "Value": "BooleanType"
    },
    "DefaultValue": false,
    "OptionSet": {
       "@odata.type": "Microsoft.Dynamics.CRM.BooleanOptionSetMetadata",
       "TrueOption": {
          "Value": 1,
          "Label": {
          "@odata.type": "Microsoft.Dynamics.CRM.Label",
          "LocalizedLabels": [
             {
                "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
                "Label": "True",
                "LanguageCode": 1033,
                "IsManaged": false
             }
          ],
          "UserLocalizedLabel": {
             "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
             "Label": "True",
             "LanguageCode": 1033,
             "IsManaged": false
          }
          }
       },
       "FalseOption": {
          "Value": 0,
          "Label": {
          "@odata.type": "Microsoft.Dynamics.CRM.Label",
          "LocalizedLabels": [
             {
                "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
                "Label": "False",
                "LanguageCode": 1033,
                "IsManaged": false
             }
          ],
          "UserLocalizedLabel": {
             "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
             "Label": "False",
             "LanguageCode": 1033,
             "IsManaged": false
          }
          }
       },
       "OptionSetType": "Boolean"
    },
    "Description": {
       "@odata.type": "Microsoft.Dynamics.CRM.Label",
       "LocalizedLabels": [
          {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "Boolean Attribute",
          "LanguageCode": 1033,
          "IsManaged": false
          }
       ],
       "UserLocalizedLabel": {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "Boolean Attribute",
          "LanguageCode": 1033,
          "IsManaged": false
       }
    },
    "DisplayName": {
       "@odata.type": "Microsoft.Dynamics.CRM.Label",
       "LocalizedLabels": [
          {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "Sample Boolean",
          "LanguageCode": 1033,
          "IsManaged": false
          }
       ],
       "UserLocalizedLabel": {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "Sample Boolean",
          "LanguageCode": 1033,
          "IsManaged": false
       }
    },
    "RequiredLevel": {
       "Value": "None",
       "CanBeChanged": false,
       "ManagedPropertyLogicalName": "canmodifyrequirementlevelsettings"
    },
    "SchemaName": "sample_Boolean"
    }
    

    Resposta:

    HTTP/1.1 204 NoContent
    OData-Version: 4.0
    OData-EntityId: [Organization Uri]/api/data/v9.2/EntityDefinitions(LogicalName='sample_bankaccount')/Attributes(33dd33dd-ee44-ff55-aa66-77bb77bb77bb)
    
  2. Recupere a coluna booliana, incluindo $expand=OptionSet para que as opções possam ser recuperadas.

    Observação

    A URL dessa solicitação inclui /Microsoft.Dynamics.CRM.BooleanAttributeMetadata o qual executa uma operação de conversão necessária para retornar qualquer propriedade que não esteja definida no AttributeMetadata EntityType. Sem isso, a OptionSet expansão não é possível.

    Pedir:

    GET [Organization Uri]/api/data/v9.2/EntityDefinitions(LogicalName='sample_bankaccount')/Attributes(LogicalName='sample_boolean')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$expand=OptionSet HTTP/1.1
    Consistency: Strong
    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#EntityDefinitions('sample_bankaccount')/Attributes/Microsoft.Dynamics.CRM.BooleanAttributeMetadata(OptionSet())/$entity",
    "MetadataId": "33dd33dd-ee44-ff55-aa66-77bb77bb77bb",
    "HasChanged": null,
    "AttributeOf": null,
    "AttributeType": "Boolean",
    "ColumnNumber": 35,
    "DeprecatedVersion": null,
    "IntroducedVersion": "1.0.0.0",
    "EntityLogicalName": "sample_bankaccount",
    "IsCustomAttribute": true,
    "IsPrimaryId": false,
    "IsValidODataAttribute": true,
    "IsPrimaryName": false,
    "IsValidForCreate": true,
    "IsValidForRead": true,
    "IsValidForUpdate": true,
    "CanBeSecuredForRead": true,
    "CanBeSecuredForCreate": true,
    "CanBeSecuredForUpdate": true,
    "IsSecured": false,
    "IsRetrievable": false,
    "IsFilterable": false,
    "IsSearchable": false,
    "IsManaged": false,
    "LinkedAttributeId": null,
    "LogicalName": "sample_boolean",
    "IsValidForForm": true,
    "IsRequiredForForm": false,
    "IsValidForGrid": true,
    "SchemaName": "sample_Boolean",
    "ExternalName": null,
    "IsLogical": false,
    "IsDataSourceSecret": false,
    "InheritsFrom": null,
    "CreatedOn": "2022-09-01T16:15:08Z",
    "ModifiedOn": "2022-09-01T16:15:08Z",
    "SourceType": 0,
    "AutoNumberFormat": null,
    "DefaultValue": false,
    "FormulaDefinition": "",
    "SourceTypeMask": 0,
    "AttributeTypeName": {
       "Value": "BooleanType"
    },
    "Description": {
       "LocalizedLabels": [
          {
          "Label": "Boolean Attribute",
          "LanguageCode": 1033,
          "IsManaged": false,
          "MetadataId": "ea50b52d-53e4-4f8d-82ce-8f74a7554800",
          "HasChanged": null
          }
       ],
       "UserLocalizedLabel": {
          "Label": "Boolean Attribute",
          "LanguageCode": 1033,
          "IsManaged": false,
          "MetadataId": "ea50b52d-53e4-4f8d-82ce-8f74a7554800",
          "HasChanged": null
       }
    },
    "DisplayName": {
       "LocalizedLabels": [
          {
          "Label": "Sample Boolean",
          "LanguageCode": 1033,
          "IsManaged": false,
          "MetadataId": "9e4daa21-8774-4de9-b467-d046389459dc",
          "HasChanged": null
          }
       ],
       "UserLocalizedLabel": {
          "Label": "Sample Boolean",
          "LanguageCode": 1033,
          "IsManaged": false,
          "MetadataId": "9e4daa21-8774-4de9-b467-d046389459dc",
          "HasChanged": null
       }
    },
    "IsAuditEnabled": {
       "Value": true,
       "CanBeChanged": true,
       "ManagedPropertyLogicalName": "canmodifyauditsettings"
    },
    "IsGlobalFilterEnabled": {
       "Value": false,
       "CanBeChanged": true,
       "ManagedPropertyLogicalName": "canmodifyglobalfiltersettings"
    },
    "IsSortableEnabled": {
       "Value": false,
       "CanBeChanged": true,
       "ManagedPropertyLogicalName": "canmodifyissortablesettings"
    },
    "IsCustomizable": {
       "Value": true,
       "CanBeChanged": true,
       "ManagedPropertyLogicalName": "iscustomizable"
    },
    "IsRenameable": {
       "Value": true,
       "CanBeChanged": true,
       "ManagedPropertyLogicalName": "isrenameable"
    },
    "IsValidForAdvancedFind": {
       "Value": true,
       "CanBeChanged": true,
       "ManagedPropertyLogicalName": "canmodifysearchsettings"
    },
    "RequiredLevel": {
       "Value": "None",
       "CanBeChanged": false,
       "ManagedPropertyLogicalName": "canmodifyrequirementlevelsettings"
    },
    "CanModifyAdditionalSettings": {
       "Value": true,
       "CanBeChanged": true,
       "ManagedPropertyLogicalName": "canmodifyadditionalsettings"
    },
    "Settings": [],
    "OptionSet": {
       "MetadataId": "74f33b3d-112a-ed11-9db1-00224804f8e2",
       "HasChanged": null,
       "IsCustomOptionSet": true,
       "IsGlobal": false,
       "IsManaged": false,
       "Name": "sample_bankaccount_sample_boolean",
       "ExternalTypeName": null,
       "OptionSetType": "Boolean",
       "IntroducedVersion": "1.0.0.0",
       "Description": {
          "LocalizedLabels": [
          {
             "Label": "Boolean Attribute",
             "LanguageCode": 1033,
             "IsManaged": false,
             "MetadataId": "76f33b3d-112a-ed11-9db1-00224804f8e2",
             "HasChanged": null
          }
          ],
          "UserLocalizedLabel": {
          "Label": "Boolean Attribute",
          "LanguageCode": 1033,
          "IsManaged": false,
          "MetadataId": "76f33b3d-112a-ed11-9db1-00224804f8e2",
          "HasChanged": null
          }
       },
       "DisplayName": {
          "LocalizedLabels": [
          {
             "Label": "Sample Boolean",
             "LanguageCode": 1033,
             "IsManaged": false,
             "MetadataId": "75f33b3d-112a-ed11-9db1-00224804f8e2",
             "HasChanged": null
          }
          ],
          "UserLocalizedLabel": {
          "Label": "Sample Boolean",
          "LanguageCode": 1033,
          "IsManaged": false,
          "MetadataId": "75f33b3d-112a-ed11-9db1-00224804f8e2",
          "HasChanged": null
          }
       },
       "IsCustomizable": {
          "Value": true,
          "CanBeChanged": true,
          "ManagedPropertyLogicalName": "iscustomizable"
       },
       "TrueOption": {
          "Value": 1,
          "Color": null,
          "IsManaged": false,
          "ExternalValue": "",
          "ParentValues": [],
          "MetadataId": null,
          "HasChanged": null,
          "Label": {
          "LocalizedLabels": [
             {
                "Label": "True",
                "LanguageCode": 1033,
                "IsManaged": false,
                "MetadataId": "12049c5f-e99d-453f-8315-3933512539a1",
                "HasChanged": null
             }
          ],
          "UserLocalizedLabel": {
             "Label": "True",
             "LanguageCode": 1033,
             "IsManaged": false,
             "MetadataId": "12049c5f-e99d-453f-8315-3933512539a1",
             "HasChanged": null
          }
          },
          "Description": {
          "LocalizedLabels": [],
          "UserLocalizedLabel": null
          }
       },
       "FalseOption": {
          "Value": 0,
          "Color": null,
          "IsManaged": false,
          "ExternalValue": "",
          "ParentValues": [],
          "MetadataId": null,
          "HasChanged": null,
          "Label": {
          "LocalizedLabels": [
             {
                "Label": "False",
                "LanguageCode": 1033,
                "IsManaged": false,
                "MetadataId": "e3d4c2b1-ad54-4d3a-8e01-f759da0e476f",
                "HasChanged": null
             }
          ],
          "UserLocalizedLabel": {
             "Label": "False",
             "LanguageCode": 1033,
             "IsManaged": false,
             "MetadataId": "e3d4c2b1-ad54-4d3a-8e01-f759da0e476f",
             "HasChanged": null
          }
          },
          "Description": {
          "LocalizedLabels": [],
          "UserLocalizedLabel": null
          }
       }
    }
    }
    

    Saída do console:

    Original Option Labels:
    True Option Label:'True' Value: 1
    False Option Label:'False' Value: 0
    
  3. Atualize a coluna booliana. As únicas alterações são nas propriedades DisplayName, Description e RequiredLevel, mas toda a definição é incluída porque PUT é usada.

    Observação

    Mesmo que a OptionSet propriedade esteja incluída nesse payload, alterações nas opções não seriam aplicadas porque elas não são consideradas parte da definição da coluna. Eles devem ser atualizados separadamente e este exemplo mostra como nas etapas a seguir.

    Pedir:

    PUT [Organization Uri]/api/data/v9.2/EntityDefinitions(LogicalName='sample_bankaccount')/Attributes(LogicalName='sample_boolean') HTTP/1.1
    MSCRM.SolutionUniqueName: examplesolution
    MSCRM.MergeLabels: true
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    If-None-Match: null
    Accept: application/json
    
    {
    "@odata.type": "Microsoft.Dynamics.CRM.BooleanAttributeMetadata",
    "AttributeType": "Boolean",
    "AttributeTypeName": {
       "Value": "BooleanType"
    },
    "DefaultValue": false,
    "FormulaDefinition": "",
    "SourceTypeMask": 0,
    "OptionSet": {
       "@odata.type": "Microsoft.Dynamics.CRM.BooleanOptionSetMetadata",
       "TrueOption": {
          "Value": 1,
          "Label": {
          "@odata.type": "Microsoft.Dynamics.CRM.Label",
          "LocalizedLabels": [
             {
                "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
                "Label": "True",
                "LanguageCode": 1033,
                "IsManaged": false,
                "MetadataId": "12049c5f-e99d-453f-8315-3933512539a1"
             }
          ],
          "UserLocalizedLabel": {
             "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
             "Label": "True",
             "LanguageCode": 1033,
             "IsManaged": false,
             "MetadataId": "12049c5f-e99d-453f-8315-3933512539a1"
          }
          },
          "Description": {
          "@odata.type": "Microsoft.Dynamics.CRM.Label",
          "LocalizedLabels": [],
          "UserLocalizedLabel": {
             "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
             "LanguageCode": 0,
             "IsManaged": false
          }
          },
          "IsManaged": false,
          "ExternalValue": ""
       },
       "FalseOption": {
          "Value": 0,
          "Label": {
          "@odata.type": "Microsoft.Dynamics.CRM.Label",
          "LocalizedLabels": [
             {
                "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
                "Label": "False",
                "LanguageCode": 1033,
                "IsManaged": false,
                "MetadataId": "e3d4c2b1-ad54-4d3a-8e01-f759da0e476f"
             }
          ],
          "UserLocalizedLabel": {
             "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
             "Label": "False",
             "LanguageCode": 1033,
             "IsManaged": false,
             "MetadataId": "e3d4c2b1-ad54-4d3a-8e01-f759da0e476f"
          }
          },
          "Description": {
          "@odata.type": "Microsoft.Dynamics.CRM.Label",
          "LocalizedLabels": [],
          "UserLocalizedLabel": {
             "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
             "LanguageCode": 0,
             "IsManaged": false
          }
          },
          "IsManaged": false,
          "ExternalValue": ""
       },
       "OptionSetType": "Boolean",
       "Description": {
          "@odata.type": "Microsoft.Dynamics.CRM.Label",
          "LocalizedLabels": [
          {
             "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
             "Label": "Boolean Attribute",
             "LanguageCode": 1033,
             "IsManaged": false,
             "MetadataId": "76f33b3d-112a-ed11-9db1-00224804f8e2"
          }
          ],
          "UserLocalizedLabel": {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "Boolean Attribute",
          "LanguageCode": 1033,
          "IsManaged": false,
          "MetadataId": "76f33b3d-112a-ed11-9db1-00224804f8e2"
          }
       },
       "DisplayName": {
          "@odata.type": "Microsoft.Dynamics.CRM.Label",
          "LocalizedLabels": [
          {
             "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
             "Label": "Sample Boolean",
             "LanguageCode": 1033,
             "IsManaged": false,
             "MetadataId": "75f33b3d-112a-ed11-9db1-00224804f8e2"
          }
          ],
          "UserLocalizedLabel": {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "Sample Boolean",
          "LanguageCode": 1033,
          "IsManaged": false,
          "MetadataId": "75f33b3d-112a-ed11-9db1-00224804f8e2"
          }
       },
       "IntroducedVersion": "1.0.0.0",
       "IsCustomizable": {
          "@odata.type": "Microsoft.Dynamics.CRM.BooleanManagedProperty",
          "Value": true,
          "CanBeChanged": true,
          "ManagedPropertyLogicalName": "iscustomizable"
       },
       "IsCustomOptionSet": true,
       "IsGlobal": false,
       "IsManaged": false,
       "Name": "sample_bankaccount_sample_boolean",
       "MetadataId": "74f33b3d-112a-ed11-9db1-00224804f8e2"
    },
    "CanBeSecuredForCreate": true,
    "CanBeSecuredForRead": true,
    "CanBeSecuredForUpdate": true,
    "CanModifyAdditionalSettings": {
       "@odata.type": "Microsoft.Dynamics.CRM.BooleanManagedProperty",
       "Value": true,
       "CanBeChanged": true,
       "ManagedPropertyLogicalName": "canmodifyadditionalsettings"
    },
    "ColumnNumber": 35,
    "Description": {
       "@odata.type": "Microsoft.Dynamics.CRM.Label",
       "LocalizedLabels": [
          {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "Boolean Attribute Updated",
          "LanguageCode": 1033,
          "IsManaged": false
          }
       ],
       "UserLocalizedLabel": {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "Boolean Attribute Updated",
          "LanguageCode": 1033,
          "IsManaged": false
       }
    },
    "DisplayName": {
       "@odata.type": "Microsoft.Dynamics.CRM.Label",
       "LocalizedLabels": [
          {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "Sample Boolean Updated",
          "LanguageCode": 1033,
          "IsManaged": false
          }
       ],
       "UserLocalizedLabel": {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "Sample Boolean Updated",
          "LanguageCode": 1033,
          "IsManaged": false
       }
    },
    "EntityLogicalName": "sample_bankaccount",
    "IntroducedVersion": "1.0.0.0",
    "IsAuditEnabled": {
       "@odata.type": "Microsoft.Dynamics.CRM.BooleanManagedProperty",
       "Value": true,
       "CanBeChanged": true,
       "ManagedPropertyLogicalName": "canmodifyauditsettings"
    },
    "IsCustomAttribute": true,
    "IsCustomizable": {
       "@odata.type": "Microsoft.Dynamics.CRM.BooleanManagedProperty",
       "Value": true,
       "CanBeChanged": true,
       "ManagedPropertyLogicalName": "iscustomizable"
    },
    "IsDataSourceSecret": false,
    "IsFilterable": false,
    "IsGlobalFilterEnabled": {
       "@odata.type": "Microsoft.Dynamics.CRM.BooleanManagedProperty",
       "Value": false,
       "CanBeChanged": true,
       "ManagedPropertyLogicalName": "canmodifyglobalfiltersettings"
    },
    "IsLogical": false,
    "IsManaged": false,
    "IsPrimaryId": false,
    "IsPrimaryName": false,
    "IsRenameable": {
       "@odata.type": "Microsoft.Dynamics.CRM.BooleanManagedProperty",
       "Value": true,
       "CanBeChanged": true,
       "ManagedPropertyLogicalName": "isrenameable"
    },
    "IsRequiredForForm": false,
    "IsRetrievable": false,
    "IsSearchable": false,
    "IsSecured": false,
    "IsSortableEnabled": {
       "@odata.type": "Microsoft.Dynamics.CRM.BooleanManagedProperty",
       "Value": false,
       "CanBeChanged": true,
       "ManagedPropertyLogicalName": "canmodifyissortablesettings"
    },
    "IsValidForAdvancedFind": {
       "@odata.type": "Microsoft.Dynamics.CRM.BooleanManagedProperty",
       "Value": true,
       "CanBeChanged": true,
       "ManagedPropertyLogicalName": "canmodifysearchsettings"
    },
    "IsValidForCreate": true,
    "IsValidForForm": true,
    "IsValidForGrid": true,
    "IsValidForRead": true,
    "IsValidForUpdate": true,
    "LogicalName": "sample_boolean",
    "RequiredLevel": {
       "Value": "ApplicationRequired",
       "CanBeChanged": false,
       "ManagedPropertyLogicalName": "canmodifyrequirementlevelsettings"
    },
    "SchemaName": "sample_Boolean",
    "SourceType": 0,
    "MetadataId": "33dd33dd-ee44-ff55-aa66-77bb77bb77bb"
    }
    

    Resposta:

    HTTP/1.1 204 NoContent
    OData-Version: 4.0
    OData-EntityId: [Organization Uri]/api/data/v9.2/EntityDefinitions(LogicalName='sample_bankaccount')/Attributes(LogicalName='sample_boolean')
    

    Saída do console:

    Updated Boolean Column properties
    

Atualizar valores de opção

Atualizar cada uma das opções boolianas usando a Ação UpdateOptionValue

Observação

Aqui, estamos aplicando alterações às opções em um atributo booliano, mas você usa UpdateOptionValue para opções em qualquer tipo de coluna que as use, exceto status colunas, em que você deve usar a Ação UpdateStateValue.

  1. Altere o rótulo do valor de TrueOption para 'Para Cima'.

    Pedir:

    POST [Organization Uri]/api/data/v9.2/UpdateOptionValue HTTP/1.1
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    If-None-Match: null
    Accept: application/json
    
    {
    "AttributeLogicalName": "sample_boolean",
    "EntityLogicalName": "sample_bankaccount",
    "Value": 1,
    "Label": {
       "@odata.type": "Microsoft.Dynamics.CRM.Label",
       "LocalizedLabels": [
          {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "Up",
          "LanguageCode": 1033,
          "IsManaged": false
          }
       ],
       "UserLocalizedLabel": {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "Up",
          "LanguageCode": 1033,
          "IsManaged": false
       }
    },
    "MergeLabels": true
    }
    

    Resposta:

    HTTP/1.1 204 NoContent
    OData-Version: 4.0
    
  2. Altere o rótulo do valor FalseOption para 'Down'.

    Pedir:

    POST [Organization Uri]/api/data/v9.2/UpdateOptionValue HTTP/1.1
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    If-None-Match: null
    Accept: application/json
    
    {
    "AttributeLogicalName": "sample_boolean",
    "EntityLogicalName": "sample_bankaccount",
    "Value": 0,
    "Label": {
       "@odata.type": "Microsoft.Dynamics.CRM.Label",
       "LocalizedLabels": [
          {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "Down",
          "LanguageCode": 1033,
          "IsManaged": false
          }
       ],
       "UserLocalizedLabel": {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "Down",
          "LanguageCode": 1033,
          "IsManaged": false
       }
    },
    "MergeLabels": true
    }
    

    Resposta:

    HTTP/1.1 204 NoContent
    OData-Version: 4.0
    

    Saída do console:

    Updated option labels
    
  3. Recupere os valores de opção modificados para a coluna booliana usando a mesma consulta de antes:

    Saída do console:

    Updated Option Labels:
    Updated True Option Label:'Up' Value: 1
    Updated False Option Label:'Down' Value: 0
    

Coluna de datetime

  1. Crie uma coluna DateTime usando DateTimeAttributeMetadata EntityType.

    Pedir:

    POST [Organization Uri]/api/data/v9.2/EntityDefinitions(LogicalName='sample_bankaccount')/Attributes HTTP/1.1
    MSCRM.SolutionUniqueName: examplesolution
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    If-None-Match: null
    Accept: application/json
    
    {
    "@odata.type": "Microsoft.Dynamics.CRM.DateTimeAttributeMetadata",
    "AttributeType": "DateTime",
    "AttributeTypeName": {
       "Value": "DateTimeType"
    },
    "Format": "DateOnly",
    "ImeMode": "Disabled",
    "DateTimeBehavior": {
       "Value": "DateOnly"
    },
    "Description": {
       "@odata.type": "Microsoft.Dynamics.CRM.Label",
       "LocalizedLabels": [
          {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "DateTime Attribute",
          "LanguageCode": 1033,
          "IsManaged": false
          }
       ],
       "UserLocalizedLabel": {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "DateTime Attribute",
          "LanguageCode": 1033,
          "IsManaged": false
       }
    },
    "DisplayName": {
       "@odata.type": "Microsoft.Dynamics.CRM.Label",
       "LocalizedLabels": [
          {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "Sample DateTime",
          "LanguageCode": 1033,
          "IsManaged": false
          }
       ],
       "UserLocalizedLabel": {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "Sample DateTime",
          "LanguageCode": 1033,
          "IsManaged": false
       }
    },
    "RequiredLevel": {
       "Value": "None",
       "CanBeChanged": false,
       "ManagedPropertyLogicalName": "canmodifyrequirementlevelsettings"
    },
    "SchemaName": "sample_DateTime"
    }
    

    Resposta:

    HTTP/1.1 204 NoContent
    OData-Version: 4.0
    OData-EntityId: [Organization Uri]/api/data/v9.2/EntityDefinitions(LogicalName='sample_bankaccount')/Attributes(44ee44ee-ff55-aa66-bb77-88cc88cc88cc)
    

    Saída do console:

    Created DateTime column with id:44ee44ee-ff55-aa66-bb77-88cc88cc88cc
    
  2. Recupere os valores selecionados da coluna DateTime.

    Pedir:

    GET [Organization Uri]/api/data/v9.2/EntityDefinitions(LogicalName='sample_bankaccount')/Attributes(LogicalName='sample_datetime')/Microsoft.Dynamics.CRM.DateTimeAttributeMetadata?$select=SchemaName,Format,DateTimeBehavior HTTP/1.1
    Consistency: Strong
    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#EntityDefinitions('sample_bankaccount')/Attributes/Microsoft.Dynamics.CRM.DateTimeAttributeMetadata(SchemaName,Format,DateTimeBehavior)/$entity",
    "SchemaName": "sample_DateTime",
    "Format": "DateOnly",
    "MetadataId": "44ee44ee-ff55-aa66-bb77-88cc88cc88cc",
    "DateTimeBehavior": {
       "Value": "DateOnly"
     }
    }
    

    Saída do console:

    Retrieved Datetime column properties:
          DateTime Format:'DateOnly'
          DateTime DateTimeBehavior:'DateOnly'
    

Coluna decimal

  1. Crie uma coluna decimal usando DecimalAttributeMetadata EntityType.

    Pedir:

    POST [Organization Uri]/api/data/v9.2/EntityDefinitions(LogicalName='sample_bankaccount')/Attributes HTTP/1.1
    MSCRM.SolutionUniqueName: examplesolution
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    If-None-Match: null
    Accept: application/json
    
    {
    "@odata.type": "Microsoft.Dynamics.CRM.DecimalAttributeMetadata",
    "AttributeType": "Decimal",
    "AttributeTypeName": {
       "Value": "DecimalType"
    },
    "MaxValue": 100.0,
    "MinValue": 0.0,
    "Precision": 1,
    "Description": {
       "@odata.type": "Microsoft.Dynamics.CRM.Label",
       "LocalizedLabels": [
          {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "Decimal Attribute",
          "LanguageCode": 1033,
          "IsManaged": false
          }
       ],
       "UserLocalizedLabel": {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "Decimal Attribute",
          "LanguageCode": 1033,
          "IsManaged": false
       }
    },
    "DisplayName": {
       "@odata.type": "Microsoft.Dynamics.CRM.Label",
       "LocalizedLabels": [
          {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "Sample Decimal",
          "LanguageCode": 1033,
          "IsManaged": false
          }
       ],
       "UserLocalizedLabel": {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "Sample Decimal",
          "LanguageCode": 1033,
          "IsManaged": false
       }
    },
    "RequiredLevel": {
       "Value": "None",
       "CanBeChanged": false,
       "ManagedPropertyLogicalName": "canmodifyrequirementlevelsettings"
    },
    "SchemaName": "sample_Decimal"
    }
    

    Resposta:

    HTTP/1.1 204 NoContent
    OData-Version: 4.0
    OData-EntityId: [Organization Uri]/api/data/v9.2/EntityDefinitions(LogicalName='sample_bankaccount')/Attributes(55ff55ff-aa66-bb77-cc88-99dd99dd99dd)
    

    Saída do console:

    Created Decimal column with id:55ff55ff-aa66-bb77-cc88-99dd99dd99dd
    
  2. Recupere os valores selecionados da coluna Decimal.

    Pedir:

    GET [Organization Uri]/api/data/v9.2/EntityDefinitions(LogicalName='sample_bankaccount')/Attributes(LogicalName='sample_decimal')/Microsoft.Dynamics.CRM.DecimalAttributeMetadata?$select=SchemaName,MaxValue,MinValue,Precision HTTP/1.1
    Consistency: Strong
    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#EntityDefinitions('sample_bankaccount')/Attributes/Microsoft.Dynamics.CRM.DecimalAttributeMetadata(SchemaName,MaxValue,MinValue,Precision)/$entity",
    "SchemaName": "sample_Decimal",
    "MaxValue": 100,
    "MinValue": 0,
    "Precision": 1,
    "MetadataId": "55ff55ff-aa66-bb77-cc88-99dd99dd99dd"
    }
    

    Saída do console:

    Retrieved Decimal column properties:
    Decimal MaxValue:100
    Decimal MinValue:0
    Decimal Precision:1
    

Coluna Inteira

  1. Crie uma coluna Integer usando IntegerAttributeMetadata EntityType.

    Pedir:

    POST [Organization Uri]/api/data/v9.2/EntityDefinitions(LogicalName='sample_bankaccount')/Attributes HTTP/1.1
    MSCRM.SolutionUniqueName: examplesolution
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    If-None-Match: null
    Accept: application/json
    
    {
    "@odata.type": "Microsoft.Dynamics.CRM.IntegerAttributeMetadata",
    "AttributeType": "Integer",
    "AttributeTypeName": {
       "Value": "IntegerType"
    },
    "MaxValue": 100,
    "MinValue": 0,
    "Format": "None",
    "SourceTypeMask": 0,
    "Description": {
       "@odata.type": "Microsoft.Dynamics.CRM.Label",
       "LocalizedLabels": [
          {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "Integer Attribute",
          "LanguageCode": 1033,
          "IsManaged": false
          }
       ],
       "UserLocalizedLabel": {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "Integer Attribute",
          "LanguageCode": 1033,
          "IsManaged": false
       }
    },
    "DisplayName": {
       "@odata.type": "Microsoft.Dynamics.CRM.Label",
       "LocalizedLabels": [
          {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "Sample Integer",
          "LanguageCode": 1033,
          "IsManaged": false
          }
       ],
       "UserLocalizedLabel": {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "Sample Integer",
          "LanguageCode": 1033,
          "IsManaged": false
       }
    },
    "RequiredLevel": {
       "Value": "None",
       "CanBeChanged": false,
       "ManagedPropertyLogicalName": "canmodifyrequirementlevelsettings"
    },
    "SchemaName": "sample_Integer"
    }
    

    Resposta:

    HTTP/1.1 204 NoContent
    OData-Version: 4.0
    OData-EntityId: [Organization Uri]/api/data/v9.2/EntityDefinitions(LogicalName='sample_bankaccount')/Attributes(66aa66aa-bb77-cc88-dd99-00ee00ee00ee)
    

    Saída do console:

    Created Integer column with id:66aa66aa-bb77-cc88-dd99-00ee00ee00ee
    
  2. Recupere os valores selecionados da coluna Integer.

    Pedir:

    GET [Organization Uri]/api/data/v9.2/EntityDefinitions(LogicalName='sample_bankaccount')/Attributes(LogicalName='sample_integer')/Microsoft.Dynamics.CRM.IntegerAttributeMetadata?$select=SchemaName,MaxValue,MinValue,Format HTTP/1.1
    Consistency: Strong
    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#EntityDefinitions('sample_bankaccount')/Attributes/Microsoft.Dynamics.CRM.IntegerAttributeMetadata(SchemaName,MaxValue,MinValue,Format)/$entity",
    "SchemaName": "sample_Integer",
    "MaxValue": 100,
    "MinValue": 0,
    "Format": "None",
    "MetadataId": "66aa66aa-bb77-cc88-dd99-00ee00ee00ee"
    }
    

    Saída do console:

    Retrieved Integer column properties:
    Integer MaxValue:100
    Integer MinValue:0
    Integer Format:None
    

Coluna Memorando

  1. Crie uma coluna de memorando usando MemoAttributeMetadata EntityType.

    Pedir:

    POST [Organization Uri]/api/data/v9.2/EntityDefinitions(LogicalName='sample_bankaccount')/Attributes HTTP/1.1
    MSCRM.SolutionUniqueName: examplesolution
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    If-None-Match: null
    Accept: application/json
    
    {
    "@odata.type": "Microsoft.Dynamics.CRM.MemoAttributeMetadata",
    "AttributeType": "Memo",
    "AttributeTypeName": {
       "Value": "MemoType"
    },
    "Format": "TextArea",
    "ImeMode": "Disabled",
    "MaxLength": 500,
    "IsLocalizable": false,
    "Description": {
       "@odata.type": "Microsoft.Dynamics.CRM.Label",
       "LocalizedLabels": [
          {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "Memo Attribute",
          "LanguageCode": 1033,
          "IsManaged": false
          }
       ],
       "UserLocalizedLabel": {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "Memo Attribute",
          "LanguageCode": 1033,
          "IsManaged": false
       }
    },
    "DisplayName": {
       "@odata.type": "Microsoft.Dynamics.CRM.Label",
       "LocalizedLabels": [
          {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "Sample Memo",
          "LanguageCode": 1033,
          "IsManaged": false
          }
       ],
       "UserLocalizedLabel": {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "Sample Memo",
          "LanguageCode": 1033,
          "IsManaged": false
       }
    },
    "RequiredLevel": {
       "Value": "None",
       "CanBeChanged": false,
       "ManagedPropertyLogicalName": "canmodifyrequirementlevelsettings"
    },
    "SchemaName": "sample_Memo"
    }
    

    Resposta:

    HTTP/1.1 204 NoContent
    OData-Version: 4.0
    OData-EntityId: [Organization Uri]/api/data/v9.2/EntityDefinitions(LogicalName='sample_bankaccount')/Attributes(00aa00aa-bb11-cc22-dd33-44ee44ee44ee)
    

    Saída do console:

    Created Memo column with id:00aa00aa-bb11-cc22-dd33-44ee44ee44ee
    
  2. Recupere os valores selecionados da Coluna Memo.

    Pedir:

    GET [Organization Uri]/api/data/v9.2/EntityDefinitions(LogicalName='sample_bankaccount')/Attributes(LogicalName='sample_memo')/Microsoft.Dynamics.CRM.MemoAttributeMetadata?$select=SchemaName,Format,ImeMode,MaxLength HTTP/1.1
    Consistency: Strong
    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#EntityDefinitions('sample_bankaccount')/Attributes/Microsoft.Dynamics.CRM.MemoAttributeMetadata(SchemaName,Format,ImeMode,MaxLength)/$entity",
    "SchemaName": "sample_Memo",
    "Format": "TextArea",
    "ImeMode": "Disabled",
    "MaxLength": 500,
    "MetadataId": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee"
    }
    

    Saída do console:

    Retrieved Memo column properties:
    Memo Format:TextArea
    Memo ImeMode:Disabled
    Memo MaxLength:500
    

Coluna Money

  1. Crie uma coluna money usando MoneyAttributeMetadata EntityType.

    Pedir:

    POST [Organization Uri]/api/data/v9.2/EntityDefinitions(LogicalName='sample_bankaccount')/Attributes HTTP/1.1
    MSCRM.SolutionUniqueName: examplesolution
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    If-None-Match: null
    Accept: application/json
    
    {
    "@odata.type": "Microsoft.Dynamics.CRM.MoneyAttributeMetadata",
    "AttributeType": "Money",
    "AttributeTypeName": {
       "Value": "MoneyType"
    },
    "ImeMode": "Disabled",
    "MaxValue": 1000.0,
    "MinValue": 0.0,
    "Precision": 1,
    "PrecisionSource": 1,
    "SourceTypeMask": 0,
    "IsBaseCurrency": false,
    "Description": {
       "@odata.type": "Microsoft.Dynamics.CRM.Label",
       "LocalizedLabels": [
          {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "Money Attribute",
          "LanguageCode": 1033,
          "IsManaged": false
          }
       ],
       "UserLocalizedLabel": {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "Money Attribute",
          "LanguageCode": 1033,
          "IsManaged": false
       }
    },
    "DisplayName": {
       "@odata.type": "Microsoft.Dynamics.CRM.Label",
       "LocalizedLabels": [
          {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "Sample Money",
          "LanguageCode": 1033,
          "IsManaged": false
          }
       ],
       "UserLocalizedLabel": {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "Sample Money",
          "LanguageCode": 1033,
          "IsManaged": false
       }
    },
    "RequiredLevel": {
       "Value": "None",
       "CanBeChanged": false,
       "ManagedPropertyLogicalName": "canmodifyrequirementlevelsettings"
    },
    "SchemaName": "sample_Money"
    }
    

    Resposta:

    HTTP/1.1 204 NoContent
    OData-Version: 4.0
    OData-EntityId: [Organization Uri]/api/data/v9.2/EntityDefinitions(LogicalName='sample_bankaccount')/Attributes(11bb11bb-cc22-dd33-ee44-55ff55ff55ff)
    

    Saída do console:

    Created Money column with id:11bb11bb-cc22-dd33-ee44-55ff55ff55ff
    
  2. Recupere os valores selecionados da Coluna do Dinheiro.

    Pedir:

    GET [Organization Uri]/api/data/v9.2/EntityDefinitions(LogicalName='sample_bankaccount')/Attributes(LogicalName='sample_money')/Microsoft.Dynamics.CRM.MoneyAttributeMetadata?$select=SchemaName,MaxValue,MinValue,Precision,PrecisionSource,ImeMode HTTP/1.1
    Consistency: Strong
    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#EntityDefinitions('sample_bankaccount')/Attributes/Microsoft.Dynamics.CRM.MoneyAttributeMetadata(SchemaName,MaxValue,MinValue,Precision,PrecisionSource,ImeMode)/$entity",
    "SchemaName": "sample_Money",
    "MaxValue": 1000.0,
    "MinValue": 0.0,
    "Precision": 1,
    "PrecisionSource": 1,
    "ImeMode": "Disabled",
    "MetadataId": "11bb11bb-cc22-dd33-ee44-55ff55ff55ff"
    }
    

    Saída do console:

    Retrieved Money column properties:
    Money MaxValue:1000
    Money MinValue:0
    Money Precision:1
    Money PrecisionSource:1
    Money ImeMode:Disabled
    

Coluna de Picklist

  1. Crie uma coluna de escolha (lista de seleção) usando PicklistAttributeMetadata EntityType com um conjunto de opções local.

    Pedir:

    POST [Organization Uri]/api/data/v9.2/EntityDefinitions(LogicalName='sample_bankaccount')/Attributes HTTP/1.1
    MSCRM.SolutionUniqueName: examplesolution
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    If-None-Match: null
    Accept: application/json
    
    {
    "@odata.type": "Microsoft.Dynamics.CRM.PicklistAttributeMetadata",
    "AttributeType": "Picklist",
    "AttributeTypeName": {
       "Value": "PicklistType"
    },
    "SourceTypeMask": 0,
    "OptionSet": {
       "@odata.type": "Microsoft.Dynamics.CRM.OptionSetMetadata",
       "Options": [
          {
          "Value": 727000000,
          "Label": {
             "@odata.type": "Microsoft.Dynamics.CRM.Label",
             "LocalizedLabels": [
                {
                "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
                "Label": "Bravo",
                "LanguageCode": 1033,
                "IsManaged": false
                }
             ],
             "UserLocalizedLabel": {
                "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
                "Label": "Bravo",
                "LanguageCode": 1033,
                "IsManaged": false
             }
          }
          },
          {
          "Value": 727000001,
          "Label": {
             "@odata.type": "Microsoft.Dynamics.CRM.Label",
             "LocalizedLabels": [
                {
                "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
                "Label": "Delta",
                "LanguageCode": 1033,
                "IsManaged": false
                }
             ],
             "UserLocalizedLabel": {
                "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
                "Label": "Delta",
                "LanguageCode": 1033,
                "IsManaged": false
             }
          }
          },
          {
          "Value": 727000002,
          "Label": {
             "@odata.type": "Microsoft.Dynamics.CRM.Label",
             "LocalizedLabels": [
                {
                "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
                "Label": "Alpha",
                "LanguageCode": 1033,
                "IsManaged": false
                }
             ],
             "UserLocalizedLabel": {
                "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
                "Label": "Alpha",
                "LanguageCode": 1033,
                "IsManaged": false
             }
          }
          },
          {
          "Value": 727000003,
          "Label": {
             "@odata.type": "Microsoft.Dynamics.CRM.Label",
             "LocalizedLabels": [
                {
                "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
                "Label": "Charlie",
                "LanguageCode": 1033,
                "IsManaged": false
                }
             ],
             "UserLocalizedLabel": {
                "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
                "Label": "Charlie",
                "LanguageCode": 1033,
                "IsManaged": false
             }
          }
          },
          {
          "Value": 727000004,
          "Label": {
             "@odata.type": "Microsoft.Dynamics.CRM.Label",
             "LocalizedLabels": [
                {
                "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
                "Label": "Foxtrot",
                "LanguageCode": 1033,
                "IsManaged": false
                }
             ],
             "UserLocalizedLabel": {
                "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
                "Label": "Foxtrot",
                "LanguageCode": 1033,
                "IsManaged": false
             }
          }
          }
       ],
       "IsGlobal": false,
       "OptionSetType": "Picklist"
    },
    "Description": {
       "@odata.type": "Microsoft.Dynamics.CRM.Label",
       "LocalizedLabels": [
          {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "Choice Attribute",
          "LanguageCode": 1033,
          "IsManaged": false
          }
       ],
       "UserLocalizedLabel": {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "Choice Attribute",
          "LanguageCode": 1033,
          "IsManaged": false
       }
    },
    "DisplayName": {
       "@odata.type": "Microsoft.Dynamics.CRM.Label",
       "LocalizedLabels": [
          {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "Sample Choice",
          "LanguageCode": 1033,
          "IsManaged": false
          }
       ],
       "UserLocalizedLabel": {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "Sample Choice",
          "LanguageCode": 1033,
          "IsManaged": false
       }
    },
    "RequiredLevel": {
       "Value": "None",
       "CanBeChanged": false,
       "ManagedPropertyLogicalName": "canmodifyrequirementlevelsettings"
    },
    "SchemaName": "sample_Choice"
    }
    

    Resposta:

    HTTP/1.1 204 NoContent
    OData-Version: 4.0
    OData-EntityId: [Organization Uri]/api/data/v9.2/EntityDefinitions(LogicalName='sample_bankaccount')/Attributes(22cc22cc-dd33-ee44-ff55-66aa66aa66aa)
    

    Saída do console:

    Created Choice column with id:22cc22cc-dd33-ee44-ff55-66aa66aa66aa
    
  2. Recuperar opções da coluna de escolha usando $select=SchemaName&$expand=OptionSet.

    Pedir:

    GET [Organization Uri]/api/data/v9.2/EntityDefinitions(LogicalName='sample_bankaccount')/Attributes(LogicalName='sample_choice')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?$select=SchemaName&$expand=OptionSet HTTP/1.1
    Consistency: Strong
    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#EntityDefinitions('sample_bankaccount')/Attributes/Microsoft.Dynamics.CRM.PicklistAttributeMetadata(SchemaName,OptionSet())/$entity",
    "SchemaName": "sample_Choice",
    "MetadataId": "22cc22cc-dd33-ee44-ff55-66aa66aa66aa",
    "OptionSet": {
       "MetadataId": "4b154e49-112a-ed11-9db1-00224804f8e2",
       "HasChanged": null,
       "IsCustomOptionSet": true,
       "IsGlobal": false,
       "IsManaged": false,
       "Name": "sample_bankaccount_sample_choice",
       "ExternalTypeName": null,
       "OptionSetType": "Picklist",
       "IntroducedVersion": "1.0.0.0",
       "ParentOptionSetName": null,
       "Description": {
          "LocalizedLabels": [
          {
             "Label": "Choice Attribute",
             "LanguageCode": 1033,
             "IsManaged": false,
             "MetadataId": "4d154e49-112a-ed11-9db1-00224804f8e2",
             "HasChanged": null
          }
          ],
          "UserLocalizedLabel": {
          "Label": "Choice Attribute",
          "LanguageCode": 1033,
          "IsManaged": false,
          "MetadataId": "4d154e49-112a-ed11-9db1-00224804f8e2",
          "HasChanged": null
          }
       },
       "DisplayName": {
          "LocalizedLabels": [
          {
             "Label": "Sample Choice",
             "LanguageCode": 1033,
             "IsManaged": false,
             "MetadataId": "4c154e49-112a-ed11-9db1-00224804f8e2",
             "HasChanged": null
          }
          ],
          "UserLocalizedLabel": {
          "Label": "Sample Choice",
          "LanguageCode": 1033,
          "IsManaged": false,
          "MetadataId": "4c154e49-112a-ed11-9db1-00224804f8e2",
          "HasChanged": null
          }
       },
       "IsCustomizable": {
          "Value": true,
          "CanBeChanged": true,
          "ManagedPropertyLogicalName": "iscustomizable"
       },
       "Options": [
          {
          "Value": 727000000,
          "Color": null,
          "IsManaged": false,
          "ExternalValue": "",
          "ParentValues": [],
          "MetadataId": null,
          "HasChanged": null,
          "Label": {
             "LocalizedLabels": [
                {
                "Label": "Bravo",
                "LanguageCode": 1033,
                "IsManaged": false,
                "MetadataId": "bc8d1815-75b7-4c13-b618-7959aaf4abb6",
                "HasChanged": null
                }
             ],
             "UserLocalizedLabel": {
                "Label": "Bravo",
                "LanguageCode": 1033,
                "IsManaged": false,
                "MetadataId": "bc8d1815-75b7-4c13-b618-7959aaf4abb6",
                "HasChanged": null
             }
          },
          "Description": {
             "LocalizedLabels": [],
             "UserLocalizedLabel": null
          }
          },
          {
          "Value": 727000001,
          "Color": null,
          "IsManaged": false,
          "ExternalValue": "",
          "ParentValues": [],
          "MetadataId": null,
          "HasChanged": null,
          "Label": {
             "LocalizedLabels": [
                {
                "Label": "Delta",
                "LanguageCode": 1033,
                "IsManaged": false,
                "MetadataId": "c3613791-85a0-41ac-8575-91aca4bb91e8",
                "HasChanged": null
                }
             ],
             "UserLocalizedLabel": {
                "Label": "Delta",
                "LanguageCode": 1033,
                "IsManaged": false,
                "MetadataId": "c3613791-85a0-41ac-8575-91aca4bb91e8",
                "HasChanged": null
             }
          },
          "Description": {
             "LocalizedLabels": [],
             "UserLocalizedLabel": null
          }
          },
          {
          "Value": 727000002,
          "Color": null,
          "IsManaged": false,
          "ExternalValue": "",
          "ParentValues": [],
          "MetadataId": null,
          "HasChanged": null,
          "Label": {
             "LocalizedLabels": [
                {
                "Label": "Alpha",
                "LanguageCode": 1033,
                "IsManaged": false,
                "MetadataId": "8db04562-9ec3-4014-a170-0482bbb94e44",
                "HasChanged": null
                }
             ],
             "UserLocalizedLabel": {
                "Label": "Alpha",
                "LanguageCode": 1033,
                "IsManaged": false,
                "MetadataId": "8db04562-9ec3-4014-a170-0482bbb94e44",
                "HasChanged": null
             }
          },
          "Description": {
             "LocalizedLabels": [],
             "UserLocalizedLabel": null
          }
          },
          {
          "Value": 727000003,
          "Color": null,
          "IsManaged": false,
          "ExternalValue": "",
          "ParentValues": [],
          "MetadataId": null,
          "HasChanged": null,
          "Label": {
             "LocalizedLabels": [
                {
                "Label": "Charlie",
                "LanguageCode": 1033,
                "IsManaged": false,
                "MetadataId": "d00dc11e-ed91-478b-ac78-86b6784326ad",
                "HasChanged": null
                }
             ],
             "UserLocalizedLabel": {
                "Label": "Charlie",
                "LanguageCode": 1033,
                "IsManaged": false,
                "MetadataId": "d00dc11e-ed91-478b-ac78-86b6784326ad",
                "HasChanged": null
             }
          },
          "Description": {
             "LocalizedLabels": [],
             "UserLocalizedLabel": null
          }
          },
          {
          "Value": 727000004,
          "Color": null,
          "IsManaged": false,
          "ExternalValue": "",
          "ParentValues": [],
          "MetadataId": null,
          "HasChanged": null,
          "Label": {
             "LocalizedLabels": [
                {
                "Label": "Foxtrot",
                "LanguageCode": 1033,
                "IsManaged": false,
                "MetadataId": "36a565b7-cd21-4505-812b-5567c28eec23",
                "HasChanged": null
                }
             ],
             "UserLocalizedLabel": {
                "Label": "Foxtrot",
                "LanguageCode": 1033,
                "IsManaged": false,
                "MetadataId": "36a565b7-cd21-4505-812b-5567c28eec23",
                "HasChanged": null
             }
          },
          "Description": {
             "LocalizedLabels": [],
             "UserLocalizedLabel": null
          }
          }
       ]
    }
    }
    

    Saída do console:

    Retrieved Choice column options:
         Value:727000000 Label:Bravo
         Value:727000001 Label:Delta
         Value:727000002 Label:Alpha
         Value:727000003 Label:Charlie
         Value:727000004 Label:Foxtrot
    

Adicionar uma opção ao conjunto de opções local

  1. Adicione uma opção à coluna de escolha usando a Ação InsertOptionValue.

    Observação

    InsertOptionValue e as ações a seguir para trabalhar com as opções possuem um parâmetro SolutionUniqueName que permite definir o nome exclusivo da solução ao invés de usar o cabeçalho de solicitação MSCRM.SolutionUniqueName.

    Pedir:

    POST [Organization Uri]/api/data/v9.2/InsertOptionValue HTTP/1.1
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    If-None-Match: null
    Accept: application/json
    
    {
    "AttributeLogicalName": "sample_choice",
    "EntityLogicalName": "sample_bankaccount",
    "Value": 727000005,
    "Label": {
       "@odata.type": "Microsoft.Dynamics.CRM.Label",
       "LocalizedLabels": [
          {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "Echo",
          "LanguageCode": 1033,
          "IsManaged": false
          }
       ],
       "UserLocalizedLabel": {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "Echo",
          "LanguageCode": 1033,
          "IsManaged": false
       }
    },
    "SolutionUniqueName": "examplesolution"
    }
    

    Resposta:

    HTTP/1.1 200 OK
    OData-Version: 4.0
    
    {
    "@odata.context": "[Organization Uri]/api/data/v9.2/$metadata#Microsoft.Dynamics.CRM.InsertOptionValueResponse",
    "NewOptionValue": 727000005
    }
    

    Saída do console:

    Added new option with label 'Echo'
    
  2. Recupere as opções de coluna de escolha novamente usando a mesma consulta de antes:

    Saída do console:

    The option values for the picklist:
          Value: 727000000, Label:Bravo
          Value: 727000001, Label:Delta
          Value: 727000002, Label:Alpha
          Value: 727000003, Label:Charlie
          Value: 727000004, Label:Foxtrot
          Value: 727000005, Label:Echo
    

Reordenar opções da coluna de escolha

  1. Reorganize as opções da coluna Escolha usando a Ação OrderOption.

    Pedir:

    POST [Organization Uri]/api/data/v9.2/OrderOption HTTP/1.1
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    If-None-Match: null
    Accept: application/json
    
    {
    "EntityLogicalName": "sample_bankaccount",
    "AttributeLogicalName": "sample_choice",
    "Values": [
       727000002,
       727000000,
       727000003,
       727000001,
       727000005,
       727000004
    ],
    "SolutionUniqueName": "examplesolution"
    }
    

    Resposta:

    HTTP/1.1 204 NoContent
    OData-Version: 4.0
    

    Saída do console:

    Options re-ordered.
    
  2. Recupere as opções de coluna Escolha novamente usando a mesma consulta de antes para ver as opções na nova ordem.

    Saída do console:

    The option values for the picklist in the new order:
         Value: 727000002, Label:Alpha
         Value: 727000000, Label:Bravo
         Value: 727000003, Label:Charlie
         Value: 727000001, Label:Delta
         Value: 727000005, Label:Echo
         Value: 727000004, Label:Foxtrot
    

Excluir valor da opção local

  1. Excluir uma opção usando a ação DeleteOptionValue.

    Pedir:

    POST [Organization Uri]/api/data/v9.2/DeleteOptionValue HTTP/1.1
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    If-None-Match: null
    Accept: application/json
    
    {
    "AttributeLogicalName": "sample_choice",
    "EntityLogicalName": "sample_bankaccount",
    "Value": 727000004
    }
    

    Resposta:

    HTTP/1.1 204 NoContent
    OData-Version: 4.0
    

    Saída do console:

    Deleting a local option value...
    Local OptionSet option value deleted.
    

Coluna de lista de seleção múltipla

  1. Crie uma coluna de escolha de várias seleções usando MultiSelectPicklistAttributeMetadata EntityType.

    Pedir:

    POST [Organization Uri]/api/data/v9.2/EntityDefinitions(LogicalName='sample_bankaccount')/Attributes HTTP/1.1
    MSCRM.SolutionUniqueName: examplesolution
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    If-None-Match: null
    Accept: application/json
    
    {
    "@odata.type": "Microsoft.Dynamics.CRM.MultiSelectPicklistAttributeMetadata",
    "AttributeType": "Virtual",
    "AttributeTypeName": {
       "Value": "MultiSelectPicklistType"
    },
    "SourceTypeMask": 0,
    "OptionSet": {
       "@odata.type": "Microsoft.Dynamics.CRM.OptionSetMetadata",
       "Options": [
          {
          "Value": 727000000,
          "Label": {
             "@odata.type": "Microsoft.Dynamics.CRM.Label",
             "LocalizedLabels": [
                {
                "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
                "Label": "Appetizer",
                "LanguageCode": 1033,
                "IsManaged": false
                }
             ],
             "UserLocalizedLabel": {
                "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
                "Label": "Appetizer",
                "LanguageCode": 1033,
                "IsManaged": false
             }
          }
          },
          {
          "Value": 727000001,
          "Label": {
             "@odata.type": "Microsoft.Dynamics.CRM.Label",
             "LocalizedLabels": [
                {
                "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
                "Label": "Entree",
                "LanguageCode": 1033,
                "IsManaged": false
                }
             ],
             "UserLocalizedLabel": {
                "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
                "Label": "Entree",
                "LanguageCode": 1033,
                "IsManaged": false
             }
          }
          },
          {
          "Value": 727000002,
          "Label": {
             "@odata.type": "Microsoft.Dynamics.CRM.Label",
             "LocalizedLabels": [
                {
                "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
                "Label": "Dessert",
                "LanguageCode": 1033,
                "IsManaged": false
                }
             ],
             "UserLocalizedLabel": {
                "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
                "Label": "Dessert",
                "LanguageCode": 1033,
                "IsManaged": false
             }
          }
          }
       ],
       "IsGlobal": false,
       "OptionSetType": "Picklist"
    },
    "Description": {
       "@odata.type": "Microsoft.Dynamics.CRM.Label",
       "LocalizedLabels": [
          {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "MultiSelect Choice Attribute",
          "LanguageCode": 1033,
          "IsManaged": false
          }
       ],
       "UserLocalizedLabel": {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "MultiSelect Choice Attribute",
          "LanguageCode": 1033,
          "IsManaged": false
       }
    },
    "DisplayName": {
       "@odata.type": "Microsoft.Dynamics.CRM.Label",
       "LocalizedLabels": [
          {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "Sample MultiSelect Choice",
          "LanguageCode": 1033,
          "IsManaged": false
          }
       ],
       "UserLocalizedLabel": {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "Sample MultiSelect Choice",
          "LanguageCode": 1033,
          "IsManaged": false
       }
    },
    "RequiredLevel": {
       "Value": "None",
       "CanBeChanged": false,
       "ManagedPropertyLogicalName": "canmodifyrequirementlevelsettings"
    },
    "SchemaName": "sample_MultiSelectChoice"
    }
    

    Resposta:

    HTTP/1.1 204 NoContent
    OData-Version: 4.0
    OData-EntityId: [Organization Uri]/api/data/v9.2/EntityDefinitions(LogicalName='sample_bankaccount')/Attributes(33dd33dd-ee44-ff55-aa66-77bb77bb77bb)
    

    Saída do console:

    Creating a MultiSelect Choice column...
    Created MultiSelect Choice column with id:33dd33dd-ee44-ff55-aa66-77bb77bb77bb
    
  2. Recuperar as opções da coluna de seleção múltipla usando GET EntityDefinitions(LogicalName='sample_bankaccount')/Attributes(LogicalName='sample_multiselectchoice')/Microsoft.Dynamics.CRM.MultiSelectPicklistAttributeMetadata?$select=SchemaName&$expand=OptionSet

    Saída do console:

    The option values for the multi-select choice column:
          Value: 727000000, Label:Appetizer
          Value: 727000001, Label:Entree
          Value: 727000002, Label:Dessert
    

Inserir valor de status

Use InsertStatusValue Action para adicionar uma nova opção a uma statuscode coluna. Você deve especificar para qual StateCode é válido.

Observação

Observe que o valor retornado aplica o valor do publicador customizationoptionvalueprefix (72700) automaticamente.

Pedir:

POST [Organization Uri]/api/data/v9.2/InsertStatusValue HTTP/1.1
OData-MaxVersion: 4.0
OData-Version: 4.0
If-None-Match: null
Accept: application/json

{
  "AttributeLogicalName": "statuscode",
  "EntityLogicalName": "sample_bankaccount",
  "Label": {
    "@odata.type": "Microsoft.Dynamics.CRM.Label",
    "LocalizedLabels": [
      {
        "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
        "Label": "Frozen",
        "LanguageCode": 1033,
        "IsManaged": false
      }
    ],
    "UserLocalizedLabel": {
      "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
      "Label": "Frozen",
      "LanguageCode": 1033,
      "IsManaged": false
    }
  },
  "StateCode": 1,
  "SolutionUniqueName": "examplesolution"
}

Resposta:

HTTP/1.1 200 OK
OData-Version: 4.0

{
  "@odata.context": "[Organization Uri]/api/data/v9.2/$metadata#Microsoft.Dynamics.CRM.InsertStatusValueResponse",
  "NewOptionValue": 727000000
}

Saída do console:

Created new Status value:727000000

Seção 3: Criar e usar o Global OptionSet

  1. Crie uma opção global (conjunto de opções). Esse conjunto de opções é nomeado sample_colors e contém opções para Vermelho, Amarelo e Verde.

    Observação

    A solicitação especifica os valores de opção usando o publicador customizationoptionvalueprefix.

    Pedir:

    POST [Organization Uri]/api/data/v9.2/GlobalOptionSetDefinitions HTTP/1.1
    MSCRM.SolutionUniqueName: examplesolution
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    If-None-Match: null
    Accept: application/json
    
    {
    "@odata.type": "Microsoft.Dynamics.CRM.OptionSetMetadata",
    "Options": [
       {
          "Value": 727000000,
          "Label": {
          "@odata.type": "Microsoft.Dynamics.CRM.Label",
          "LocalizedLabels": [
             {
                "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
                "Label": "Red",
                "LanguageCode": 1033,
                "IsManaged": false
             }
          ],
          "UserLocalizedLabel": {
             "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
             "Label": "Red",
             "LanguageCode": 1033,
             "IsManaged": false
          }
          }
       },
       {
          "Value": 727000001,
          "Label": {
          "@odata.type": "Microsoft.Dynamics.CRM.Label",
          "LocalizedLabels": [
             {
                "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
                "Label": "Yellow",
                "LanguageCode": 1033,
                "IsManaged": false
             }
          ],
          "UserLocalizedLabel": {
             "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
             "Label": "Yellow",
             "LanguageCode": 1033,
             "IsManaged": false
          }
          }
       },
       {
          "Value": 727000002,
          "Label": {
          "@odata.type": "Microsoft.Dynamics.CRM.Label",
          "LocalizedLabels": [
             {
                "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
                "Label": "Green",
                "LanguageCode": 1033,
                "IsManaged": false
             }
          ],
          "UserLocalizedLabel": {
             "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
             "Label": "Green",
             "LanguageCode": 1033,
             "IsManaged": false
          }
          }
       }
    ],
    "Description": {
       "@odata.type": "Microsoft.Dynamics.CRM.Label",
       "LocalizedLabels": [
          {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "Color Choice",
          "LanguageCode": 1033,
          "IsManaged": false
          }
       ],
       "UserLocalizedLabel": {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "Color Choice",
          "LanguageCode": 1033,
          "IsManaged": false
       }
    },
    "DisplayName": {
       "@odata.type": "Microsoft.Dynamics.CRM.Label",
       "LocalizedLabels": [
          {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "Colors",
          "LanguageCode": 1033,
          "IsManaged": false
          }
       ],
       "UserLocalizedLabel": {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "Colors",
          "LanguageCode": 1033,
          "IsManaged": false
       }
    },
    "Name": "sample_colors",
    "OptionSetType": "Picklist"
    }
    

    Resposta:

    HTTP/1.1 204 NoContent
    OData-Version: 4.0
    OData-EntityId: [Organization Uri]/api/data/v9.2/GlobalOptionSetDefinitions(44ee44ee-ff55-aa66-bb77-88cc88cc88cc)
    

    Saída do console:

    Created a new global option set with id:44ee44ee-ff55-aa66-bb77-88cc88cc88cc
    
  2. Recupere as opções globais de escolha.

    Pedir:

    GET [Organization Uri]/api/data/v9.2/GlobalOptionSetDefinitions(44ee44ee-ff55-aa66-bb77-88cc88cc88cc)/Microsoft.Dynamics.CRM.OptionSetMetadata HTTP/1.1
    Consistency: Strong
    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#GlobalOptionSetDefinitions/Microsoft.Dynamics.CRM.OptionSetMetadata/$entity",
    "ParentOptionSetName": null,
    "IsCustomOptionSet": true,
    "IsGlobal": true,
    "IsManaged": false,
    "Name": "sample_colors",
    "ExternalTypeName": null,
    "OptionSetType": "Picklist",
    "IntroducedVersion": "1.0.0.0",
    "MetadataId": "44ee44ee-ff55-aa66-bb77-88cc88cc88cc",
    "HasChanged": null,
    "Options": [
       {
          "Value": 727000000,
          "Color": null,
          "IsManaged": false,
          "ExternalValue": "",
          "ParentValues": [],
          "MetadataId": null,
          "HasChanged": null,
          "Label": {
          "LocalizedLabels": [
             {
                "Label": "Red",
                "LanguageCode": 1033,
                "IsManaged": false,
                "MetadataId": "2c1fa94f-3714-4615-995b-690158d0d989",
                "HasChanged": null
             }
          ],
          "UserLocalizedLabel": {
             "Label": "Red",
             "LanguageCode": 1033,
             "IsManaged": false,
             "MetadataId": "2c1fa94f-3714-4615-995b-690158d0d989",
             "HasChanged": null
          }
          },
          "Description": {
          "LocalizedLabels": [],
          "UserLocalizedLabel": null
          }
       },
       {
          "Value": 727000001,
          "Color": null,
          "IsManaged": false,
          "ExternalValue": "",
          "ParentValues": [],
          "MetadataId": null,
          "HasChanged": null,
          "Label": {
          "LocalizedLabels": [
             {
                "Label": "Yellow",
                "LanguageCode": 1033,
                "IsManaged": false,
                "MetadataId": "a499c2fe-c13a-4c1e-b190-db8ae74396f5",
                "HasChanged": null
             }
          ],
          "UserLocalizedLabel": {
             "Label": "Yellow",
             "LanguageCode": 1033,
             "IsManaged": false,
             "MetadataId": "a499c2fe-c13a-4c1e-b190-db8ae74396f5",
             "HasChanged": null
          }
          },
          "Description": {
          "LocalizedLabels": [],
          "UserLocalizedLabel": null
          }
       },
       {
          "Value": 727000002,
          "Color": null,
          "IsManaged": false,
          "ExternalValue": "",
          "ParentValues": [],
          "MetadataId": null,
          "HasChanged": null,
          "Label": {
          "LocalizedLabels": [
             {
                "Label": "Green",
                "LanguageCode": 1033,
                "IsManaged": false,
                "MetadataId": "8378af2c-4b68-4ea4-ad37-e676f696e1ba",
                "HasChanged": null
             }
          ],
          "UserLocalizedLabel": {
             "Label": "Green",
             "LanguageCode": 1033,
             "IsManaged": false,
             "MetadataId": "8378af2c-4b68-4ea4-ad37-e676f696e1ba",
             "HasChanged": null
          }
          },
          "Description": {
          "LocalizedLabels": [],
          "UserLocalizedLabel": null
          }
       }
    ],
    "Description": {
       "LocalizedLabels": [
          {
          "Label": "Color Choice",
          "LanguageCode": 1033,
          "IsManaged": false,
          "MetadataId": "7efd8c56-112a-ed11-9db1-00224804f8e2",
          "HasChanged": null
          }
       ],
       "UserLocalizedLabel": {
          "Label": "Color Choice",
          "LanguageCode": 1033,
          "IsManaged": false,
          "MetadataId": "7efd8c56-112a-ed11-9db1-00224804f8e2",
          "HasChanged": null
       }
    },
    "DisplayName": {
       "LocalizedLabels": [
          {
          "Label": "Colors",
          "LanguageCode": 1033,
          "IsManaged": false,
          "MetadataId": "7dfd8c56-112a-ed11-9db1-00224804f8e2",
          "HasChanged": null
          }
       ],
       "UserLocalizedLabel": {
          "Label": "Colors",
          "LanguageCode": 1033,
          "IsManaged": false,
          "MetadataId": "7dfd8c56-112a-ed11-9db1-00224804f8e2",
          "HasChanged": null
       }
    },
    "IsCustomizable": {
       "Value": true,
       "CanBeChanged": true,
       "ManagedPropertyLogicalName": "iscustomizable"
    }
    }
    

    Saída do console:

    List the retrieved options for the colors global option set:
    Value: 727000000 Label:Red
    Value: 727000001 Label:Yellow
    Value: 727000002 Label:Green
    
  3. Crie uma coluna de escolha que use o conjunto de opções global. Associe a definição de coluna ao conjunto de opções global usando: "GlobalOptionSet@odata.bind": "/GlobalOptionSetDefinitions(44ee44ee-ff55-aa66-bb77-88cc88cc88cc)".

    Pedir:

    POST [Organization Uri]/api/data/v9.2/EntityDefinitions(LogicalName='sample_bankaccount')/Attributes HTTP/1.1
    MSCRM.SolutionUniqueName: examplesolution
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    If-None-Match: null
    Accept: application/json
    
    {
    "@odata.type": "Microsoft.Dynamics.CRM.PicklistAttributeMetadata",
    "AttributeType": "Picklist",
    "AttributeTypeName": {
       "Value": "PicklistType"
    },
    "SourceTypeMask": 0,
    "GlobalOptionSet@odata.bind": "/GlobalOptionSetDefinitions(44ee44ee-ff55-aa66-bb77-88cc88cc88cc)",
    "Description": {
       "@odata.type": "Microsoft.Dynamics.CRM.Label",
       "LocalizedLabels": [
          {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "Colors Global Picklist Attribute",
          "LanguageCode": 1033,
          "IsManaged": false
          }
       ],
       "UserLocalizedLabel": {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "Colors Global Picklist Attribute",
          "LanguageCode": 1033,
          "IsManaged": false
       }
    },
    "DisplayName": {
       "@odata.type": "Microsoft.Dynamics.CRM.Label",
       "LocalizedLabels": [
          {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "Sample Colors",
          "LanguageCode": 1033,
          "IsManaged": false
          }
       ],
       "UserLocalizedLabel": {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "Sample Colors",
          "LanguageCode": 1033,
          "IsManaged": false
       }
    },
    "RequiredLevel": {
       "Value": "None",
       "CanBeChanged": false,
       "ManagedPropertyLogicalName": "canmodifyrequirementlevelsettings"
    },
    "SchemaName": "sample_Colors"
    }
    

    Resposta:

    HTTP/1.1 204 NoContent
    OData-Version: 4.0
    OData-EntityId: [Organization Uri]/api/data/v9.2/EntityDefinitions(LogicalName='sample_bankaccount')/Attributes(55ff55ff-aa66-bb77-cc88-99dd99dd99dd)
    

    Saída do console:

    Created Choice column with id:55ff55ff-aa66-bb77-cc88-99dd99dd99dd using colors global optionset.
    

Seção 4: Criar relação com o cliente

  1. Use a Ação CreateCustomerRelationships para criar uma relação de cliente. Essa ação adiciona uma coluna de pesquisa à tabela sample_BankAccount que permite definir um registro account ou contact.

    CreateCustomerRelationshipstem um Lookup parâmetro ComplexLookupAttributeMetadata ComplexType e um OneToManyRelationships parâmetro que contém um par de relações definidas usando ComplexOneToManyRelationshipMetadata ComplexType.

    Pedir:

    POST [Organization Uri]/api/data/v9.2/CreateCustomerRelationships HTTP/1.1
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    If-None-Match: null
    Accept: application/json
    
    {
    "Lookup": {
       "@odata.type": "Microsoft.Dynamics.CRM.ComplexLookupAttributeMetadata",
       "AttributeType": "Lookup",
       "AttributeTypeName": {
          "Value": "LookupType"
       },
       "Format": "None",      
       "Targets": [
          "account",
          "contact"
       ],
       "ColumnNumber": 0,
       "Description": {
          "@odata.type": "Microsoft.Dynamics.CRM.Label",
          "LocalizedLabels": [
          {
             "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
             "Label": "The owner of the bank account",
             "LanguageCode": 1033,
             "IsManaged": false
          }
          ],
          "UserLocalizedLabel": {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "The owner of the bank account",
          "LanguageCode": 1033,
          "IsManaged": false
          }
       },
       "DisplayName": {
          "@odata.type": "Microsoft.Dynamics.CRM.Label",
          "LocalizedLabels": [
          {
             "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
             "Label": "Bank Account owner",
             "LanguageCode": 1033,
             "IsManaged": false
          }
          ],
          "UserLocalizedLabel": {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "Bank Account owner",
          "LanguageCode": 1033,
          "IsManaged": false
          }
       },
       "RequiredLevel": {
          "Value": "ApplicationRequired",
          "CanBeChanged": false,
          "ManagedPropertyLogicalName": "canmodifyrequirementlevelsettings"
       },
       "SchemaName": "sample_CustomerId",
       "SourceType": 0
    },
    "OneToManyRelationships": [
       {
          "@odata.type": "Microsoft.Dynamics.CRM.ComplexOneToManyRelationshipMetadata",
          "ReferencedEntity": "account",
          "ReferencingEntity": "sample_bankaccount",
          "RelationshipBehavior": 0,
          "RelationshipType": "OneToManyRelationship",
          "SchemaName": "sample_BankAccount_Customer_Account",
          "SecurityTypes": "None"
       },
       {
          "@odata.type": "Microsoft.Dynamics.CRM.ComplexOneToManyRelationshipMetadata",
          "ReferencedEntity": "contact",
          "ReferencingEntity": "sample_bankaccount",
          "RelationshipBehavior": 0,
          "RelationshipType": "OneToManyRelationship",
          "SchemaName": "sample_BankAccount_Customer_Contact",
          "SecurityTypes": "None"
       }
    ],
    "SolutionUniqueName": "examplesolution"
    }
    

    Resposta:

    HTTP/1.1 200 OK
    OData-Version: 4.0
    
    {
    "@odata.context": "[Organization Uri]/api/data/v9.2/$metadata#Microsoft.Dynamics.CRM.CreateCustomerRelationshipsResponse",
    "RelationshipIds": [
       "84fd8c56-112a-ed11-9db1-00224804f8e2",
       "8dfd8c56-112a-ed11-9db1-00224804f8e2"
    ],
    "AttributeId": "59478264-16af-4bcc-8baa-b154df0d6767"
    }
    
  2. Use CreateCustomerRelationshipsResponse. AttributeId valor necessário para recuperar a propriedade da coluna de consulta Targets na relação com o cliente.

    Pedir:

    GET [Organization Uri]/api/data/v9.2/EntityDefinitions(LogicalName='sample_bankaccount')/Attributes(LogicalName='sample_customerid')/Microsoft.Dynamics.CRM.LookupAttributeMetadata?$select=Targets HTTP/1.1
    Consistency: Strong
    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#EntityDefinitions('sample_bankaccount')/Attributes/Microsoft.Dynamics.CRM.LookupAttributeMetadata(Targets)/$entity",
    "Targets": [
       "account",
       "contact"
    ],
    "MetadataId": "59478264-16af-4bcc-8baa-b154df0d6767"
    }
    

    Saída do console:

    The Target values of the Lookup column created:
          account
          contact
    
  3. Use o CreateCustomerRelationshipsResponse. RelationshipIds valores para recuperar as relações da coluna do cliente.

    Primeiramente para a relação com account:

    Pedir:

    GET [Organization Uri]/api/data/v9.2/RelationshipDefinitions(84fd8c56-112a-ed11-9db1-00224804f8e2)/Microsoft.Dynamics.CRM.OneToManyRelationshipMetadata HTTP/1.1
    Consistency: Strong
    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#RelationshipDefinitions/Microsoft.Dynamics.CRM.OneToManyRelationshipMetadata/$entity",
    "ReferencedAttribute": "accountid",
    "ReferencedEntity": "account",
    "ReferencingAttribute": "sample_customerid",
    "ReferencingEntity": "sample_bankaccount",
    "IsHierarchical": false,
    "EntityKey": null,
    "IsRelationshipAttributeDenormalized": false,
    "ReferencedEntityNavigationPropertyName": "sample_BankAccount_Customer_Account",
    "ReferencingEntityNavigationPropertyName": "sample_CustomerId_account",
    "RelationshipBehavior": 1,
    "IsDenormalizedLookup": null,
    "DenormalizedAttributeName": null,
    "IsCustomRelationship": true,
    "IsValidForAdvancedFind": true,
    "SchemaName": "sample_BankAccount_Customer_Account",
    "SecurityTypes": "Append",
    "IsManaged": false,
    "RelationshipType": "OneToManyRelationship",
    "IntroducedVersion": "1.0.0.0",
    "MetadataId": "84fd8c56-112a-ed11-9db1-00224804f8e2",
    "HasChanged": null,
    "AssociatedMenuConfiguration": {
       "Behavior": "UseCollectionName",
       "Group": "Details",
       "Order": 10000,
       "IsCustomizable": true,
       "Icon": null,
       "ViewId": "00000000-0000-0000-0000-000000000000",
       "AvailableOffline": true,
       "MenuId": null,
       "QueryApi": null,
       "Label": {
          "LocalizedLabels": [],
          "UserLocalizedLabel": null
       }
    },
    "CascadeConfiguration": {
       "Assign": "NoCascade",
       "Delete": "RemoveLink",
       "Archive": "RemoveLink",
       "Merge": "Cascade",
       "Reparent": "NoCascade",
       "Share": "NoCascade",
       "Unshare": "NoCascade",
       "RollupView": "NoCascade"
    },
    "RelationshipAttributes": [],
    "IsCustomizable": {
       "Value": true,
       "CanBeChanged": true,
       "ManagedPropertyLogicalName": "iscustomizable"
    }
    }
    

    Em seguida, para relacionar a contact:

    Pedir:

    GET [Organization Uri]/api/data/v9.2/RelationshipDefinitions(8dfd8c56-112a-ed11-9db1-00224804f8e2)/Microsoft.Dynamics.CRM.OneToManyRelationshipMetadata HTTP/1.1
    Consistency: Strong
    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#RelationshipDefinitions/Microsoft.Dynamics.CRM.OneToManyRelationshipMetadata/$entity",
    "ReferencedAttribute": "contactid",
    "ReferencedEntity": "contact",
    "ReferencingAttribute": "sample_customerid",
    "ReferencingEntity": "sample_bankaccount",
    "IsHierarchical": false,
    "EntityKey": null,
    "IsRelationshipAttributeDenormalized": false,
    "ReferencedEntityNavigationPropertyName": "sample_BankAccount_Customer_Contact",
    "ReferencingEntityNavigationPropertyName": "sample_CustomerId_contact",
    "RelationshipBehavior": 1,
    "IsDenormalizedLookup": null,
    "DenormalizedAttributeName": null,
    "IsCustomRelationship": true,
    "IsValidForAdvancedFind": true,
    "SchemaName": "sample_BankAccount_Customer_Contact",
    "SecurityTypes": "Append",
    "IsManaged": false,
    "RelationshipType": "OneToManyRelationship",
    "IntroducedVersion": "1.0.0.0",
    "MetadataId": "8dfd8c56-112a-ed11-9db1-00224804f8e2",
    "HasChanged": null,
    "AssociatedMenuConfiguration": {
       "Behavior": "UseCollectionName",
       "Group": "Details",
       "Order": 10000,
       "IsCustomizable": true,
       "Icon": null,
       "ViewId": "00000000-0000-0000-0000-000000000000",
       "AvailableOffline": true,
       "MenuId": null,
       "QueryApi": null,
       "Label": {
          "LocalizedLabels": [],
          "UserLocalizedLabel": null
       }
    },
    "CascadeConfiguration": {
       "Assign": "NoCascade",
       "Delete": "RemoveLink",
       "Archive": "RemoveLink",
       "Merge": "Cascade",
       "Reparent": "NoCascade",
       "Share": "NoCascade",
       "Unshare": "NoCascade",
       "RollupView": "NoCascade"
    },
    "RelationshipAttributes": [],
    "IsCustomizable": {
       "Value": true,
       "CanBeChanged": true,
       "ManagedPropertyLogicalName": "iscustomizable"
    }
    }
    

    Saída do console:

    The Schema Names of the relationships created:
          sample_BankAccount_Customer_Account
          sample_BankAccount_Customer_Contact
    

Seção 5: Criar e recuperar uma relação um-para-muitos

Antes de criar uma relação usando código, você deve confirmar se a relação é válida. Os designers no Power Apps usam funções especiais para mostrar quais combinações são válidas. Você pode usar as mesmas funções em seu código para detectar se uma relação específica pode ser criada ou não.

Validar a elegibilidade da relação 1:N

  1. A Função CanBeReferenced informa se uma tabela é a tabela primária (uma) em uma relação um-para-muitos.

    Pedir:

    POST [Organization Uri]/api/data/v9.2/CanBeReferenced HTTP/1.1
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    If-None-Match: null
    Accept: application/json
    
    {
    "EntityName": "sample_bankaccount"
    }
    

    Resposta:

    HTTP/1.1 200 OK
    OData-Version: 4.0
    
    {
    "@odata.context": "[Organization Uri]/api/data/v9.2/$metadata#Microsoft.Dynamics.CRM.CanBeReferencedResponse",
    "CanBeReferenced": true
    }
    

    Saída do console:

    The sample_BankAccount table is eligible to be a primary table in a one-to-many relationship.
    
  2. A Função CanBeReferencing informa se uma tabela pode ser a tabela de referência em uma relação um-para-muitos. A tabela de referência é a tabela que tem uma coluna Lookup adicionada a ela para ser a "muitos" na relação um-para-muitos.

    Pedir:

    POST [Organization Uri]/api/data/v9.2/CanBeReferencing HTTP/1.1
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    If-None-Match: null
    Accept: application/json
    
    {
    "EntityName": "contact"
    }
    

    Resposta:

    HTTP/1.1 200 OK
    OData-Version: 4.0
    
    {
    "@odata.context": "[Organization Uri]/api/data/v9.2/$metadata#Microsoft.Dynamics.CRM.CanBeReferencingResponse",
    "CanBeReferencing": true
    }
    

    Saída do console:

    The contact table is eligible to be a related table in a one-to-many relationship.
    

Identificar possíveis entidades de referência

No contexto de uma tabela específica que pode ser a tabela parmária em uma relação um-para-muitos, use a Função GetValidReferencingEntities para identificar quais outras tabelas podem ser relacionadas a ela.

Pedir:

GET [Organization Uri]/api/data/v9.2/GetValidReferencingEntities(ReferencedEntityName='sample_bankaccount') 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.GetValidReferencingEntitiesResponse",
  "EntityNames": [
    "msdyn_slakpi",
    "workflowbinary",
    "apisettings",
    "flowsession",
    "knowledgearticle",
    "socialprofile",
    "goal",
    "metric",
    "goalrollupquery",
    "mailbox",
    "position",
    "channelaccessprofile",
    "externalparty",
    "channelaccessprofilerule",
    "channelaccessprofileruleitem",
    "sample_bankaccount",
    "privilegesremovalsetting",
    "knowledgebaserecord",
    "msdyn_insightsstorevirtualentity",
    "aaduser",
    "sharepointdocument",
    "msfp_unsubscribedrecipient",
    "msdyn_dataflow",
    "flowmachineimage",
    "queueitem",
    "appointment",
    "msdyn_federatedarticleincident",
    "msfp_surveyresponse",
    "msdyn_dataflowrefreshhistory",
    "mailmergetemplate",
    "contact",
    "organizationdatasyncstate",
    "bot",
    "knowledgearticleviews",
    "slaitem",
    "msfp_question",
    "category",
    "connection",
    "newprocess",
    "msfp_survey",
    "emailserverprofile",
    "appnotification",
    "feedback",
    "activityfileattachment",
    "organizationdatasyncsubscriptionentity",
    "msdyn_nonrelationalds",
    "expiredprocess",
    "msfp_surveyinvite",
    "msfp_alert",
    "businessunit",
    "msfp_alertrule",
    "slakpiinstance",
    "email",
    "datasyncstate",
    "msdyn_entityrefreshhistory",
    "msdyn_componentlayerdatasource",
    "account",
    "kbarticle",
    "systemuser",
    "task",
    "letter",
    "reportcategory",
    "phonecall",
    "actioncard",
    "msdyn_kmfederatedsearchconfig",
    "featurecontrolsetting",
    "translationprocess",
    "recurringappointmentmaster",
    "externalpartyitem",
    "msdyn_aibdatasetfile",
    "socialactivity",
    "flowmachineimageversion",
    "fax",
    "msdyn_kbattachment",
    "serviceplanmapping",
    "msdyn_knowledgearticletemplate",
    "msfp_emailtemplate",
    "conversationtranscript",
    "sharepointsite",
    "processstage",
    "msfp_localizedemailtemplate",
    "queue",
    "msdyn_richtextfile",
    "msdyn_serviceconfiguration",
    "team",
    "sharedlinksetting",
    "territory",
    "msdyn_federatedarticle",
    "msdyn_knowledgepersonalfilter",
    "sharepointdocumentlocation",
    "chat",
    "msfp_fileresponse",
    "msfp_satisfactionmetric",
    "msdyn_aibfeedbackloop",
    "msdyn_customcontrolextendedsettings",
    "msfp_surveyreminder",
    "msfp_questionresponse",
    "msfp_project"
  ]
}

Saída do console:

The contact table is in the list of potential referencing entities for sample_BankAccount.

Criar relação 1:N

A solicitação a seguir cria uma relação um-para-muitos entre a tabela sample_BankAccount e a tabela de contato, com uma coluna de pesquisa adicionada à tabela contact.

Pedir:

POST [Organization Uri]/api/data/v9.2/RelationshipDefinitions HTTP/1.1
MSCRM.SolutionUniqueName: examplesolution
OData-MaxVersion: 4.0
OData-Version: 4.0
If-None-Match: null
Accept: application/json

{
  "@odata.type": "Microsoft.Dynamics.CRM.OneToManyRelationshipMetadata",
  "AssociatedMenuConfiguration": {
    "Behavior": "UseLabel",
    "Group": "Details",
    "Label": {
      "@odata.type": "Microsoft.Dynamics.CRM.Label",
      "LocalizedLabels": [
        {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "Cardholders",
          "LanguageCode": 1033,
          "IsManaged": false
        }
      ],
      "UserLocalizedLabel": {
        "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
        "Label": "Cardholders",
        "LanguageCode": 1033,
        "IsManaged": false
      }
    },
    "Order": 10000,
    "ViewId": "00000000-0000-0000-0000-000000000000"
  },
  "CascadeConfiguration": {
    "Assign": "NoCascade",
    "Delete": "RemoveLink",
    "Merge": "Cascade",
    "Reparent": "NoCascade",
    "Share": "NoCascade",
    "Unshare": "NoCascade",
    "RollupView": "NoCascade"
  },
  "IsHierarchical": false,
  "ReferencedAttribute": "sample_bankaccountid",
  "ReferencedEntity": "sample_bankaccount",
  "ReferencingEntity": "contact",
  "Lookup": {
    "@odata.type": "Microsoft.Dynamics.CRM.LookupAttributeMetadata",
    "AttributeType": "Lookup",
    "AttributeTypeName": {
      "Value": "LookupType"
    },
    "Format": "None",
    "Description": {
      "@odata.type": "Microsoft.Dynamics.CRM.Label",
      "LocalizedLabels": [
        {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "The bank account this contact has access to.",
          "LanguageCode": 1033,
          "IsManaged": false
        }
      ],
      "UserLocalizedLabel": {
        "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
        "Label": "The bank account this contact has access to.",
        "LanguageCode": 1033,
        "IsManaged": false
      }
    },
    "DisplayName": {
      "@odata.type": "Microsoft.Dynamics.CRM.Label",
      "LocalizedLabels": [
        {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "Bank Account",
          "LanguageCode": 1033,
          "IsManaged": false
        }
      ],
      "UserLocalizedLabel": {
        "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
        "Label": "Bank Account",
        "LanguageCode": 1033,
        "IsManaged": false
      }
    },
    "SchemaName": "sample_BankAccountId"
  },
  "IsCustomRelationship": false,
  "IsManaged": false,
  "IsValidForAdvancedFind": false,
  "RelationshipType": "OneToManyRelationship",
  "SchemaName": "sample_BankAccount_Contacts",
  "SecurityTypes": "None"
}

Resposta:

HTTP/1.1 204 NoContent
OData-Version: 4.0
OData-EntityId: [Organization Uri]/api/data/v9.2/RelationshipDefinitions(66aa66aa-bb77-cc88-dd99-00ee00ee00ee)

Saída do console:

Creating a one-to-many relationship...
Created one-to-many relationship: RelationshipDefinitions(66aa66aa-bb77-cc88-dd99-00ee00ee00ee)

Recuperar relação 1:N

A solicitação a seguir recupera a relação criada pela solicitação anterior.

Observação

Como RelationshipDefinitions contém definições de relações um para muitos e muitos para muitos, você deve usar a seguinte expressão de conversão na URL para converter para o tipo que você deseja recuperar: /Microsoft.Dynamics.CRM.OneToManyRelationshipMetadata. Caso contrário, o valor retornado é o EntityType RelationshipMetadataBase e não inclui as propriedades específicas para o EntityType OneToManyRelationshipMetadata.

Pedir:

GET [Organization Uri]/api/data/v9.2/RelationshipDefinitions(66aa66aa-bb77-cc88-dd99-00ee00ee00ee)/Microsoft.Dynamics.CRM.OneToManyRelationshipMetadata HTTP/1.1
Consistency: Strong
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#RelationshipDefinitions/Microsoft.Dynamics.CRM.OneToManyRelationshipMetadata/$entity",
  "ReferencedAttribute": "sample_bankaccountid",
  "ReferencedEntity": "sample_bankaccount",
  "ReferencingAttribute": "sample_bankaccountid",
  "ReferencingEntity": "contact",
  "IsHierarchical": false,
  "EntityKey": null,
  "IsRelationshipAttributeDenormalized": false,
  "ReferencedEntityNavigationPropertyName": "sample_BankAccount_Contacts",
  "ReferencingEntityNavigationPropertyName": "sample_BankAccountId",
  "RelationshipBehavior": 1,
  "IsDenormalizedLookup": null,
  "DenormalizedAttributeName": null,
  "IsCustomRelationship": true,
  "IsValidForAdvancedFind": false,
  "SchemaName": "sample_BankAccount_Contacts",
  "SecurityTypes": "Append",
  "IsManaged": false,
  "RelationshipType": "OneToManyRelationship",
  "IntroducedVersion": "1.0.0.0",
  "MetadataId": "66aa66aa-bb77-cc88-dd99-00ee00ee00ee",
  "HasChanged": null,
  "AssociatedMenuConfiguration": {
    "Behavior": "UseLabel",
    "Group": "Details",
    "Order": 10000,
    "IsCustomizable": true,
    "Icon": null,
    "ViewId": "00000000-0000-0000-0000-000000000000",
    "AvailableOffline": true,
    "MenuId": null,
    "QueryApi": null,
    "Label": {
      "LocalizedLabels": [
        {
          "Label": "Cardholders",
          "LanguageCode": 1033,
          "IsManaged": false,
          "MetadataId": "a99a420f-6778-4f2f-b42b-64bc84b2c2d2",
          "HasChanged": null
        }
      ],
      "UserLocalizedLabel": {
        "Label": "Cardholders",
        "LanguageCode": 1033,
        "IsManaged": false,
        "MetadataId": "a99a420f-6778-4f2f-b42b-64bc84b2c2d2",
        "HasChanged": null
      }
    }
  },
  "CascadeConfiguration": {
    "Assign": "NoCascade",
    "Delete": "RemoveLink",
    "Archive": "RemoveLink",
    "Merge": "NoCascade",
    "Reparent": "NoCascade",
    "Share": "NoCascade",
    "Unshare": "NoCascade",
    "RollupView": "NoCascade"
  },
  "RelationshipAttributes": [],
  "IsCustomizable": {
    "Value": true,
    "CanBeChanged": true,
    "ManagedPropertyLogicalName": "iscustomizable"
  }
}

Saída do console:

Retrieved relationship: sample_BankAccount_Contacts

Seção 6: Criar e recuperar um relacionamento muitos-para-um

Uma relação muitos-para-um é uma relação um-para-muitos vista de outra perspectiva. Os exemplos a seguir criam uma coluna de pesquisa denominada sample_relatedaccountid na tabela sample_BankAccount que faz referência a uma linha na tabela account.

Criar relação N:1

Pedir:

POST [Organization Uri]/api/data/v9.2/RelationshipDefinitions HTTP/1.1
MSCRM.SolutionUniqueName: examplesolution
OData-MaxVersion: 4.0
OData-Version: 4.0
If-None-Match: null
Accept: application/json

{
  "@odata.type": "Microsoft.Dynamics.CRM.OneToManyRelationshipMetadata",
  "AssociatedMenuConfiguration": {
    "Behavior": "UseLabel",
    "Group": "Details",
    "Label": {
      "@odata.type": "Microsoft.Dynamics.CRM.Label",
      "LocalizedLabels": [
        {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "Related Bank Accounts",
          "LanguageCode": 1033,
          "IsManaged": false
        }
      ],
      "UserLocalizedLabel": {
        "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
        "Label": "Related Bank Accounts",
        "LanguageCode": 1033,
        "IsManaged": false
      }
    },
    "Order": 10000,
    "ViewId": "00000000-0000-0000-0000-000000000000"
  },
  "CascadeConfiguration": {
    "Assign": "NoCascade",
    "Delete": "RemoveLink",
    "Merge": "Cascade",
    "Reparent": "NoCascade",
    "Share": "NoCascade",
    "Unshare": "NoCascade",
    "RollupView": "NoCascade"
  },
  "IsHierarchical": false,
  "ReferencedAttribute": "accountid",
  "ReferencedEntity": "account",
  "ReferencingEntity": "sample_bankaccount",
  "Lookup": {
    "@odata.type": "Microsoft.Dynamics.CRM.LookupAttributeMetadata",
    "AttributeType": "Lookup",
    "AttributeTypeName": {
      "Value": "LookupType"
    },
    "Format": "None",
    "Description": {
      "@odata.type": "Microsoft.Dynamics.CRM.Label",
      "LocalizedLabels": [
        {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "An Account related to the bank account.",
          "LanguageCode": 1033,
          "IsManaged": false
        }
      ],
      "UserLocalizedLabel": {
        "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
        "Label": "An Account related to the bank account.",
        "LanguageCode": 1033,
        "IsManaged": false
      }
    },
    "DisplayName": {
      "@odata.type": "Microsoft.Dynamics.CRM.Label",
      "LocalizedLabels": [
        {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "Related Account",
          "LanguageCode": 1033,
          "IsManaged": false
        }
      ],
      "UserLocalizedLabel": {
        "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
        "Label": "Related Account",
        "LanguageCode": 1033,
        "IsManaged": false
      }
    },
    "SchemaName": "sample_RelatedAccountId"
  },
  "IsCustomRelationship": false,
  "IsManaged": false,
  "IsValidForAdvancedFind": false,
  "RelationshipType": "OneToManyRelationship",
  "SchemaName": "sample_Account_BankAccounts",
  "SecurityTypes": "None"
}

Resposta:

HTTP/1.1 204 NoContent
OData-Version: 4.0
OData-EntityId: [Organization Uri]/api/data/v9.2/RelationshipDefinitions(00aa00aa-bb11-cc22-dd33-44ee44ee44ee)

Saída do console:

Created many-to-one relationship: RelationshipDefinitions(00aa00aa-bb11-cc22-dd33-44ee44ee44ee)

Recuperar relação N:1

Pedir:

GET [Organization Uri]/api/data/v9.2/RelationshipDefinitions(00aa00aa-bb11-cc22-dd33-44ee44ee44ee)/Microsoft.Dynamics.CRM.OneToManyRelationshipMetadata HTTP/1.1
Consistency: Strong
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#RelationshipDefinitions/Microsoft.Dynamics.CRM.OneToManyRelationshipMetadata/$entity",
  "ReferencedAttribute": "accountid",
  "ReferencedEntity": "account",
  "ReferencingAttribute": "sample_relatedaccountid",
  "ReferencingEntity": "sample_bankaccount",
  "IsHierarchical": false,
  "EntityKey": null,
  "IsRelationshipAttributeDenormalized": false,
  "ReferencedEntityNavigationPropertyName": "sample_Account_BankAccounts",
  "ReferencingEntityNavigationPropertyName": "sample_RelatedAccountId",
  "RelationshipBehavior": 1,
  "IsDenormalizedLookup": null,
  "DenormalizedAttributeName": null,
  "IsCustomRelationship": true,
  "IsValidForAdvancedFind": false,
  "SchemaName": "sample_Account_BankAccounts",
  "SecurityTypes": "Append",
  "IsManaged": false,
  "RelationshipType": "OneToManyRelationship",
  "IntroducedVersion": "1.0.0.0",
  "MetadataId": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
  "HasChanged": null,
  "AssociatedMenuConfiguration": {
    "Behavior": "UseLabel",
    "Group": "Details",
    "Order": 10000,
    "IsCustomizable": true,
    "Icon": null,
    "ViewId": "00000000-0000-0000-0000-000000000000",
    "AvailableOffline": true,
    "MenuId": null,
    "QueryApi": null,
    "Label": {
      "LocalizedLabels": [
        {
          "Label": "Related Bank Accounts",
          "LanguageCode": 1033,
          "IsManaged": false,
          "MetadataId": "b2ad2cce-5c7c-46aa-8bbf-7903d33ef019",
          "HasChanged": null
        }
      ],
      "UserLocalizedLabel": {
        "Label": "Related Bank Accounts",
        "LanguageCode": 1033,
        "IsManaged": false,
        "MetadataId": "b2ad2cce-5c7c-46aa-8bbf-7903d33ef019",
        "HasChanged": null
      }
    }
  },
  "CascadeConfiguration": {
    "Assign": "NoCascade",
    "Delete": "RemoveLink",
    "Archive": "RemoveLink",
    "Merge": "Cascade",
    "Reparent": "NoCascade",
    "Share": "NoCascade",
    "Unshare": "NoCascade",
    "RollupView": "NoCascade"
  },
  "RelationshipAttributes": [],
  "IsCustomizable": {
    "Value": true,
    "CanBeChanged": true,
    "ManagedPropertyLogicalName": "iscustomizable"
  }
}

Saída do console:

Retrieved relationship: sample_Account_BankAccounts

Seção 7: Criar e recuperar uma relação muitos para muitos

Como as relações de um para muitos, existem funções especiais que são usadas pelos designers no Power Apps para impedir combinações inválidas ao criar relações de muitos para muitos.

Validar a elegibilidade da relação N:N

  1. A Função CanManyToMany indica se uma tabela pode participar de um relacionamento muitos-para-muitos. Portanto, essa solicitação testa a contact tabela.

    Pedir:

    POST [Organization Uri]/api/data/v9.2/CanManyToMany HTTP/1.1
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    If-None-Match: null
    Accept: application/json
    
    {
    "EntityName": "contact"
    }
    

    Resposta:

    HTTP/1.1 200 OK
    OData-Version: 4.0
    
    {
    "@odata.context": "[Organization Uri]/api/data/v9.2/$metadata#Microsoft.Dynamics.CRM.CanManyToManyResponse",
    "CanManyToMany": true
    }
    

    Saída do console:

    The contact table can participate in many-to-many relationships.
    
  2. Essa solicitação executa o mesmo teste na sample_bankaccount tabela.

    Pedir:

    POST [Organization Uri]/api/data/v9.2/CanManyToMany HTTP/1.1
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    If-None-Match: null
    Accept: application/json
    
    {
    "EntityName": "sample_bankaccount"
    }
    

    Resposta:

    HTTP/1.1 200 OK
    OData-Version: 4.0
    
    {
    "@odata.context": "[Organization Uri]/api/data/v9.2/$metadata#Microsoft.Dynamics.CRM.CanManyToManyResponse",
    "CanManyToMany": true
    }
    

    Saída do console:

    The sample_bankaccount table can participate in many-to-many relationships.
    

Identificar entidades potenciais para relações N:N

Use a função GetValidManyToMany para obter uma lista de tabelas que podem participar de relações muitos para muitos.

Pedir:

GET [Organization Uri]/api/data/v9.2/GetValidManyToMany 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.GetValidManyToManyResponse",
  "EntityNames": [
    "msdyn_slakpi",
    "workflowbinary",
    "apisettings",
    "flowsession",
    "theme",
    "knowledgearticle",
    "socialprofile",
    "goal",
    "position",
    "externalparty",
    "channelaccessprofileruleitem",
    "routingruleitem",
    "sample_bankaccount",
    "synapselinkexternaltablestate",
    "synapsedatabase",
    "msdyn_aimodel",
    "aaduser",
    "applicationuser",
    "msfp_unsubscribedrecipient",
    "msdyn_aiconfiguration",
    "msdyn_dataflow",
    "flowmachineimage",
    "queueitem",
    "synapselinkschedule",
    "msdyn_federatedarticleincident",
    "flowmachine",
    "synapselinkprofile",
    "msdyn_dataflowrefreshhistory",
    "solutioncomponentrelationshipconfiguration",
    "contact",
    "organizationdatasyncstate",
    "botcomponent",
    "bot",
    "msdyn_componentlayer",
    "msdyn_odatav4ds",
    "msfp_question",
    "msdyn_aibfile",
    "msdyn_solutionhistorydatasource",
    "msdyn_solutionhealthruleset",
    "newprocess",
    "connectionreference",
    "msdyn_knowledgemanagementsetting",
    "msdyn_pmrecording",
    "msfp_survey",
    "msdyn_aibdatasetscontainer",
    "package",
    "msdyn_solutioncomponentsummary",
    "msdyn_helppage",
    "appnotification",
    "organizationdatasyncsubscriptionentity",
    "msdyn_aiodtrainingboundingbox",
    "msdyn_nonrelationalds",
    "expiredprocess",
    "msdyn_analysisresultdetail",
    "msfp_alertrule",
    "msdyn_solutioncomponentcountsummary",
    "msdyn_kalanguagesetting",
    "transactioncurrency",
    "exportsolutionupload",
    "msdyn_pmprocessusersettings",
    "datasyncstate",
    "msdyn_entityrefreshhistory",
    "msdyn_analysisresult",
    "msdyn_componentlayerdatasource",
    "account",
    "kbarticle",
    "systemuser",
    "task",
    "msdyn_analysisjob",
    "solutioncomponentconfiguration",
    "msdyn_knowledgesearchfilter",
    "stagesolutionupload",
    "msdyn_pmtemplate",
    "phonecall",
    "msdyn_solutioncomponentdatasource",
    "environmentvariablevalue",
    "msdyn_aitemplate",
    "userrating",
    "synapselinkprofileentity",
    "featurecontrolsetting",
    "translationprocess",
    "msdyn_pminferredtask",
    "customapirequestparameter",
    "externalpartyitem",
    "msdyn_aibdatasetfile",
    "flowmachinegroup",
    "flowmachineimageversion",
    "msdyn_aibdatasetrecord",
    "msdyn_kbattachment",
    "msdyn_aifptrainingdocument",
    "customapiresponseproperty",
    "msdyn_knowledgearticletemplate",
    "msdyn_aiodimage",
    "msdyn_knowledgesearchinsight",
    "msfp_emailtemplate",
    "catalog",
    "msdyn_knowledgeinteractioninsight",
    "conversationtranscript",
    "msdyn_pmanalysishistory",
    "msdyn_datalakeds",
    "canvasappextendedmetadata",
    "msfp_localizedemailtemplate",
    "msdynce_botcontent",
    "queue",
    "msdyn_solutionhealthruleargument",
    "msdyn_aibfileattacheddata",
    "msdyn_richtextfile",
    "msdyn_kmpersonalizationsetting",
    "msdyn_aiodtrainingimage",
    "msdyn_serviceconfiguration",
    "msdyn_knowledgearticleimage",
    "team",
    "territory",
    "msdyn_solutioncomponentcountdatasource",
    "catalogassignment",
    "msdyn_federatedarticle",
    "msdyn_solutionhealthrule",
    "msdyn_solutionhistory",
    "msdyn_knowledgepersonalfilter",
    "organizationdatasyncsubscription",
    "solutioncomponentbatchconfiguration",
    "connector",
    "solutioncomponentattributeconfiguration",
    "synapselinkprofileentitystate",
    "msdyn_aiodlabel",
    "customapi",
    "msdyn_aibdataset",
    "msfp_fileresponse",
    "environmentvariabledefinition",
    "msdyn_analysiscomponent",
    "msfp_satisfactionmetric",
    "msdyn_tour",
    "msdyn_customcontrolextendedsettings",
    "msfp_surveyreminder",
    "virtualentitymetadata",
    "msfp_questionresponse",
    "msfp_project"
  ]
}

Saída do console:

Contact is in the list of potential tables for N:N.
sample_BankAccount is in the list of potential tables for N:N.

Criar relação N:N

Essa solicitação cria uma relação muitos para muitos entre as tabelas sample_BankAccount e Contact.

Pedir:

POST [Organization Uri]/api/data/v9.2/RelationshipDefinitions HTTP/1.1
MSCRM.SolutionUniqueName: examplesolution
OData-MaxVersion: 4.0
OData-Version: 4.0
If-None-Match: null
Accept: application/json

{
  "@odata.type": "Microsoft.Dynamics.CRM.ManyToManyRelationshipMetadata",
  "Entity1AssociatedMenuConfiguration": {
    "Behavior": "UseLabel",
    "Group": "Details",
    "Label": {
      "@odata.type": "Microsoft.Dynamics.CRM.Label",
      "LocalizedLabels": [
        {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "Bank Accounts",
          "LanguageCode": 1033,
          "IsManaged": false
        }
      ],
      "UserLocalizedLabel": {
        "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
        "Label": "Bank Accounts",
        "LanguageCode": 1033,
        "IsManaged": false
      }
    },
    "Order": 10000,
    "ViewId": "00000000-0000-0000-0000-000000000000"
  },
  "Entity1LogicalName": "sample_bankaccount",
  "Entity2AssociatedMenuConfiguration": {
    "Behavior": "UseLabel",
    "Group": "Details",
    "Label": {
      "@odata.type": "Microsoft.Dynamics.CRM.Label",
      "LocalizedLabels": [
        {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "Contacts",
          "LanguageCode": 1033,
          "IsManaged": false
        }
      ],
      "UserLocalizedLabel": {
        "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
        "Label": "Contacts",
        "LanguageCode": 1033,
        "IsManaged": false
      }
    },
    "Order": 10000,
    "ViewId": "00000000-0000-0000-0000-000000000000"
  },
  "Entity2LogicalName": "contact",
  "IntersectEntityName": "sample_sample_BankAccounts_Contacts",
  "IsCustomRelationship": false,
  "IsManaged": false,
  "IsValidForAdvancedFind": false,
  "RelationshipType": "OneToManyRelationship",
  "SchemaName": "sample_sample_BankAccounts_Contacts",
  "SecurityTypes": "None"
}

Resposta:

HTTP/1.1 204 NoContent
OData-Version: 4.0
OData-EntityId: [Organization Uri]/api/data/v9.2/RelationshipDefinitions(11bb11bb-cc22-dd33-ee44-55ff55ff55ff)

Saída do console:

Created Many-to-Many relationship at: RelationshipDefinitions(11bb11bb-cc22-dd33-ee44-55ff55ff55ff)

Recuperar relação N:N

Essa solicitação recupera a relação muitos para muitos criada pela solicitação anterior.

Observação

Conforme mencionado antes, como RelationshipDefinitions contém definições de relação um para muitos e muitos para muitos, você deve incluir a seguinte expressão de conversão na URL para converter no tipo que você deseja recuperar: /Microsoft.Dynamics.CRM.ManyToManyRelationshipMetadata. Caso contrário, o valor retornado é o EntityType RelationshipMetadataBase e não inclui as propriedades específicas do EntityType ManyToManyRelationshipMetadata.

Pedir:

GET [Organization Uri]/api/data/v9.2/RelationshipDefinitions(11bb11bb-cc22-dd33-ee44-55ff55ff55ff)/Microsoft.Dynamics.CRM.ManyToManyRelationshipMetadata HTTP/1.1
Consistency: Strong
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#RelationshipDefinitions/Microsoft.Dynamics.CRM.ManyToManyRelationshipMetadata/$entity",
  "Entity1LogicalName": "sample_bankaccount",
  "Entity2LogicalName": "contact",
  "IntersectEntityName": "sample_sample_bankaccounts_contacts",
  "Entity1IntersectAttribute": "sample_bankaccountid",
  "Entity2IntersectAttribute": "contactid",
  "Entity1NavigationPropertyName": "sample_sample_BankAccounts_Contacts",
  "Entity2NavigationPropertyName": "sample_sample_BankAccounts_Contacts",
  "IsCustomRelationship": true,
  "IsValidForAdvancedFind": false,
  "SchemaName": "sample_sample_BankAccounts_Contacts",
  "SecurityTypes": "None",
  "IsManaged": false,
  "RelationshipType": "ManyToManyRelationship",
  "IntroducedVersion": "1.0.0.0",
  "MetadataId": "11bb11bb-cc22-dd33-ee44-55ff55ff55ff",
  "HasChanged": null,
  "Entity1AssociatedMenuConfiguration": {
    "Behavior": "UseLabel",
    "Group": "Details",
    "Order": 10000,
    "IsCustomizable": true,
    "Icon": null,
    "ViewId": "00000000-0000-0000-0000-000000000000",
    "AvailableOffline": true,
    "MenuId": null,
    "QueryApi": null,
    "Label": {
      "LocalizedLabels": [
        {
          "Label": "Bank Accounts",
          "LanguageCode": 1033,
          "IsManaged": false,
          "MetadataId": "271999d1-6fd9-4413-b027-f2a1b231e0a4",
          "HasChanged": null
        }
      ],
      "UserLocalizedLabel": {
        "Label": "Bank Accounts",
        "LanguageCode": 1033,
        "IsManaged": false,
        "MetadataId": "271999d1-6fd9-4413-b027-f2a1b231e0a4",
        "HasChanged": null
      }
    }
  },
  "Entity2AssociatedMenuConfiguration": {
    "Behavior": "UseLabel",
    "Group": "Details",
    "Order": 10000,
    "IsCustomizable": true,
    "Icon": null,
    "ViewId": "00000000-0000-0000-0000-000000000000",
    "AvailableOffline": true,
    "MenuId": null,
    "QueryApi": null,
    "Label": {
      "LocalizedLabels": [
        {
          "Label": "Contacts",
          "LanguageCode": 1033,
          "IsManaged": false,
          "MetadataId": "1fcff441-9a41-42b1-a0d9-e92daa47230f",
          "HasChanged": null
        }
      ],
      "UserLocalizedLabel": {
        "Label": "Contacts",
        "LanguageCode": 1033,
        "IsManaged": false,
        "MetadataId": "1fcff441-9a41-42b1-a0d9-e92daa47230f",
        "HasChanged": null
      }
    }
  },
  "IsCustomizable": {
    "Value": true,
    "CanBeChanged": true,
    "ManagedPropertyLogicalName": "iscustomizable"
  }
}

Saída do console:

Retrieved Many-to-Many relationship:sample_sample_BankAccounts_Contacts

Seção 8: Exportar solução gerenciada

Usar o ExportSolution Action para exportar a solução como uma solução gerenciada. Essa ação inclui muitos comutadores que você pode usar para incluir informações adicionais como parte da solução, mas, nesse caso, todas essas opções estão desativadas. Mais informações: Trabalhar com soluções

Pedir:

POST [Organization Uri]/api/data/v9.2/ExportSolution HTTP/1.1
OData-MaxVersion: 4.0
OData-Version: 4.0
If-None-Match: null
Accept: application/json

{
  "SolutionName": "examplesolution",
  "Managed": true,
  "ExportAutoNumberingSettings": false,
  "ExportCalendarSettings": false,
  "ExportCustomizationSettings": false,
  "ExportEmailTrackingSettings": false,
  "ExportGeneralSettings": false,
  "ExportMarketingSettings": false,
  "ExportOutlookSynchronizationSettings": false,
  "ExportRelationshipRoles": false,
  "ExportIsvConfig": false,
  "ExportSales": false,
  "ExportExternalApplications": false
}

Resposta:

HTTP/1.1 200 OK
OData-Version: 4.0

{
  "@odata.context": "[Organization Uri]/api/data/v9.2/$metadata#Microsoft.Dynamics.CRM.ExportSolutionResponse",
  "ExportSolutionFile": "[ Binary content removed for brevity]"
}

Saída do console:

Solution Exported to E:\GitHub\PowerApps-Samples\dataverse\webapi\C#-NETx\MetadataOperations\bin\Debug\net6.0\examplesolution.zip

Seção 9: Excluir registros de exemplo

Referências a todos os registros criados neste exemplo foram adicionadas a uma lista. Nesta seção, todos os registros criados são excluídos usando uma $batch operação.

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_d6cb9873-6b53-490d-942d-0bea79b8ba9a
Content-Type: application/http
Content-Transfer-Encoding: binary
Content-Length: 136

DELETE /api/data/v9.2/RelationshipDefinitions(66aa66aa-bb77-cc88-dd99-00ee00ee00ee) HTTP/1.1


--batch_d6cb9873-6b53-490d-942d-0bea79b8ba9a
Content-Type: application/http
Content-Transfer-Encoding: binary
Content-Length: 130

DELETE /api/data/v9.2/EntityDefinitions(22cc22cc-dd33-ee44-ff55-66aa66aa66aa) HTTP/1.1


--batch_d6cb9873-6b53-490d-942d-0bea79b8ba9a
Content-Type: application/http
Content-Transfer-Encoding: binary
Content-Length: 122

DELETE /api/data/v9.2/solutions(11bb11bb-cc22-dd33-ee44-55ff55ff55ff) HTTP/1.1


--batch_d6cb9873-6b53-490d-942d-0bea79b8ba9a
Content-Type: application/http
Content-Transfer-Encoding: binary
Content-Length: 123

DELETE /api/data/v9.2/publishers(00aa00aa-bb11-cc22-dd33-44ee44ee44ee) HTTP/1.1


--batch_d6cb9873-6b53-490d-942d-0bea79b8ba9a
Content-Type: application/http
Content-Transfer-Encoding: binary
Content-Length: 139

DELETE /api/data/v9.2/GlobalOptionSetDefinitions(44ee44ee-ff55-aa66-bb77-88cc88cc88cc) HTTP/1.1


--batch_d6cb9873-6b53-490d-942d-0bea79b8ba9a--

Resposta:

HTTP/1.1 200 OK
OData-Version: 4.0

--batchresponse_9fa66f62-38d1-4890-91ce-4185fd556745
Content-Type: application/http
Content-Transfer-Encoding: binary

HTTP/1.1 204 No Content
OData-Version: 4.0


--batchresponse_9fa66f62-38d1-4890-91ce-4185fd556745
Content-Type: application/http
Content-Transfer-Encoding: binary

HTTP/1.1 204 No Content
OData-Version: 4.0


--batchresponse_9fa66f62-38d1-4890-91ce-4185fd556745
Content-Type: application/http
Content-Transfer-Encoding: binary

HTTP/1.1 204 No Content
OData-Version: 4.0


--batchresponse_9fa66f62-38d1-4890-91ce-4185fd556745
Content-Type: application/http
Content-Transfer-Encoding: binary

HTTP/1.1 204 No Content
OData-Version: 4.0


--batchresponse_9fa66f62-38d1-4890-91ce-4185fd556745
Content-Type: application/http
Content-Transfer-Encoding: binary

HTTP/1.1 204 No Content
OData-Version: 4.0


--batchresponse_9fa66f62-38d1-4890-91ce-4185fd556745--

Saída do console:

Deleting created records...

Seção 10: Importar e excluir solução gerenciada

  1. Esta etapa importa a solução gerenciada exportada na Seção 8: exportar solução gerenciada usando a Ação ImportSolution.

    Pedir:

    POST [Organization Uri]/api/data/v9.2/ImportSolution HTTP/1.1
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    If-None-Match: null
    Accept: application/json
    
    {
    "OverwriteUnmanagedCustomizations": false,
    "PublishWorkflows": false,
    "CustomizationFile": "[ Binary content removed for brevity]",
    "ImportJobId": "00000000-0000-0000-0000-000000000000"
    }
    

    Resposta:

    HTTP/1.1 204 NoContent
    OData-Version: 4.0
    

    Saída do console:

    Sending request to import the examplesolution solution...
    Solution imported as a managed solution.
    
  2. Obtenha a solutionid da solução gerenciada por uniquename para que você possa excluí-la.

    Pedir:

    GET [Organization Uri]/api/data/v9.2/solutions?$select=solutionid&$filter=uniquename%20eq%20'examplesolution' 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#solutions(solutionid)",
    "value": [
       {
          "@odata.etag": "W/\"13291034\"",
          "solutionid": "07439497-6992-4e30-81e0-628a91984af5"
       }
    ]
    }
    

Excluir solução gerenciada

Esta etapa final exclui a solução gerenciada importada para retornar o sistema ao estado original.

Pedir:

DELETE [Organization Uri]/api/data/v9.2/solutions(07439497-6992-4e30-81e0-628a91984af5) HTTP/1.1
OData-MaxVersion: 4.0
OData-Version: 4.0
If-None-Match: null
Accept: application/json

Resposta:

HTTP/1.1 204 NoContent
OData-Version: 4.0

Saída do console:

Sending request to delete the examplesolution solution...
Managed solution deleted.
--Metadata Operations sample completed--

Consulte também

Utilizar a API Web do Dataverse
Usar a API Web com definições de tabela
Consultar definições de tabela usando a API Web
Criar e atualizar definições de tabela usando a API Web
Criar e atualizar relações de tabela usando a API Web
Criar e atualizar opções (conjuntos de opções) usando a API Web
Exemplo de operações de esquema de tabela de API Web (C#)