Create and update entity definitions using the Web API
Applies To: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online
You can perform all the same operations on model entities that you can with the organization service. This topic focuses on working with metadata entities using the Web API. To find details about the entity metadata properties, see Customize entity metadata and EntityMetadata EntityType.
In this topic
Create entities
Update entities
Create attributes
Create entities
To create an entity, POST the JSON representation of the entity data to the EntityDefinitions entity set path. The entity must include the definition for the primary name attribute for the entity. You don’t need to set values for all the properties. The items on this list except for Description are required, although setting a description is a recommended best practice. Property values you do not specify will be set to default values. To understand the default values, look at the example in the Update entities section. The example in this topic uses the following entity properties.
Entity property |
Value |
---|---|
SchemaName |
new_BankAccount Note You should include the customization prefix that matches the solution publisher. Here the default value “new_” is used, but you should choose the prefix that works for your solution. |
DisplayName |
Bank Account |
DisplayCollectionName |
Bank Accounts |
Description |
An entity to store information about customer bank accounts. |
OwnershipType |
UserOwned Note For the values you can set here, see OwnershipTypes EnumType. |
IsActivity |
false |
HasActivities |
false |
HasNotes |
false |
In addition to the properties listed previously, the EntityMetadataAttributes property must contain an array that includes one StringAttributeMetadata EntityType to represent the primary name attribute for the entity. The attribute IsPrimaryName property must be true. The following table describes the properties set in the example.
Primary Attribute property |
Value |
---|---|
SchemaName |
new_AccountName |
RequiredLevel |
None Note For the values you can set here, see AttributeRequiredLevelManagedProperty ComplexType and AttributeRequiredLevel EnumType. |
MaxLength |
100 |
FormatName |
Text Note The primary name attribute must use Text format. For format options available for other string attributes, see StringAttributeMetadata formats. |
DisplayName |
Account Name |
Description |
Type the name of the bank account. |
IsPrimaryName |
true |
Note
When you create or update labels using the Label ComplexType, you only need to set the LocalizedLabels property. The UserLocalizedLabel value returned is based on the user’s language preference and is read-only.
The following example shows the creation of a custom entity with the properties set. The language is English using the locale ID (LCID) of 1033. Valid locale ID values can be found at Locale ID (LCID) Chart.
Request
POST [Organization URI]/api/data/v8.2/EntityDefinitions HTTP/1.1 Accept: application/json Content-Type: application/json; charset=utf-8 OData-MaxVersion: 4.0 OData-Version: 4.0 { "@odata.type": "Microsoft.Dynamics.CRM.EntityMetadata", "Attributes": [ { "AttributeType": "String", "AttributeTypeName": { "Value": "StringType" }, "Description": { "@odata.type": "Microsoft.Dynamics.CRM.Label", "LocalizedLabels": [ { "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel", "Label": "Type the name of the bank account", "LanguageCode": 1033 } ] }, "DisplayName": { "@odata.type": "Microsoft.Dynamics.CRM.Label", "LocalizedLabels": [ { "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel", "Label": "Account Name", "LanguageCode": 1033 } ] }, "IsPrimaryName": true, "RequiredLevel": { "Value": "None", "CanBeChanged": true, "ManagedPropertyLogicalName": "canmodifyrequirementlevelsettings" }, "SchemaName": "new_AccountName", "@odata.type": "Microsoft.Dynamics.CRM.StringAttributeMetadata", "FormatName": { "Value": "Text" }, "MaxLength": 100 } ], "Description": { "@odata.type": "Microsoft.Dynamics.CRM.Label", "LocalizedLabels": [ { "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel", "Label": "An entity to store information about customer bank accounts", "LanguageCode": 1033 } ] }, "DisplayCollectionName": { "@odata.type": "Microsoft.Dynamics.CRM.Label", "LocalizedLabels": [ { "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel", "Label": "Bank Accounts", "LanguageCode": 1033 } ] }, "DisplayName": { "@odata.type": "Microsoft.Dynamics.CRM.Label", "LocalizedLabels": [ { "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel", "Label": "Bank Account", "LanguageCode": 1033 } ] }, "HasActivities": false, "HasNotes": false, "IsActivity": false, "OwnershipType": "UserOwned", "SchemaName": "new_BankAccount" }
Response
HTTP/1.1 204 No Content OData-Version: 4.0 OData-EntityId: [Organization URI]/api/data/v8.2/EntityDefinitions(417129e1-207c-e511-80d2-00155d2a68d2)
Update entities
Important
You can’t use the HTTP PATCH method to update model entities. The metadata entities have parity with the organization service UpdateEntityRequest that replaces the entity definition with the one included. Therefore, you must use the HTTP PUT method when updating model entities and be careful to include all the existing properties that you don’t intend to change. You can’t update individual properties.
When you update metadata entities with labels, you should include a custom MSCRM.MergeLabels header to control how any labels in the update should be handled. If a label for an item already has labels for other languages and you update it with a label that contains only one label for a specific language, the MSCRM.MergeLabels header controls whether to overwrite the existing labels or merge your new label with any existing language labels. With MSCRM.MergeLabels set to true, any new labels defined will only overwrite existing labels when the language code matches. If you want to overwrite the existing labels to include only the labels you include, set MSCRM.MergeLabels to false.
Important
If you don’t include a MSCRM.MergeLabels header, the default behavior is as if the value were false and any localized labels not included in your update will be lost.
When you update an entity or attribute, you must use the PublishXml Action or PublishAllXml Action before the changes you make will be applied to the application. More information: Publish customizations
Typically, you will retrieve the JSON definition of the attribute and modify the properties before you send it back. The following example contains all the metadata properties of the entity created in the Create entities example, but with the DisplayName changed to “Bank Business Name.” It may be useful to note that the JSON here provides the default values for properties not set in the Create entities example.
Request
PUT [Organization URI]/api/data/v8.2/EntityDefinitions(417129e1-207c-e511-80d2-00155d2a68d2) HTTP/1.1 Accept: application/json Content-Type: application/json; charset=utf-8 OData-MaxVersion: 4.0 OData-Version: 4.0 MSCRM.MergeLabels: true { "@odata.context": "[Organization URI]/api/data/v8.2/$metadata#EntityDefinitions/$entity", "ActivityTypeMask": 0, "AutoRouteToOwnerQueue": false, "CanTriggerWorkflow": true, "Description": { "LocalizedLabels": [ { "Label": "An entity to store information about customer bank accounts", "LanguageCode": 1033, "IsManaged": false, "MetadataId": "edc3abd7-c5ae-4822-a3ed-51734fdd0469", "HasChanged": null } ] }, "DisplayCollectionName": { "LocalizedLabels": [ { "Label": "Bank Accounts", "LanguageCode": 1033, "IsManaged": false, "MetadataId": "7c758e0c-e9cf-4947-93b0-50ec30b20f60", "HasChanged": null } ] }, "DisplayName": { "@odata.type": "Microsoft.Dynamics.CRM.Label", "LocalizedLabels": [ { "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel", "Label": "Bank Business Name", "LanguageCode": 1033 } ] }, "EntityHelpUrlEnabled": false, "EntityHelpUrl": null, "IsDocumentManagementEnabled": false, "IsOneNoteIntegrationEnabled": false, "IsInteractionCentricEnabled": false, "IsKnowledgeManagementEnabled": false, "AutoCreateAccessTeams": false, "IsActivity": false, "IsActivityParty": false, "IsAuditEnabled": { "Value": false, "CanBeChanged": true, "ManagedPropertyLogicalName": "canmodifyauditsettings" }, "IsAvailableOffline": false, "IsChildEntity": false, "IsAIRUpdated": false, "IsValidForQueue": { "Value": false, "CanBeChanged": true, "ManagedPropertyLogicalName": "canmodifyqueuesettings" }, "IsConnectionsEnabled": { "Value": false, "CanBeChanged": true, "ManagedPropertyLogicalName": "canmodifyconnectionsettings" }, "IconLargeName": null, "IconMediumName": null, "IconSmallName": null, "IsCustomEntity": true, "IsBusinessProcessEnabled": false, "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" }, "CanEnableSyncToExternalSearchIndex": { "Value": true, "CanBeChanged": true, "ManagedPropertyLogicalName": "canenablesynctoexternalsearchindex" }, "SyncToExternalSearchIndex": false, "CanModifyAdditionalSettings": { "Value": true, "CanBeChanged": true, "ManagedPropertyLogicalName": "canmodifyadditionalsettings" }, "CanChangeHierarchicalRelationship": { "Value": true, "CanBeChanged": true, "ManagedPropertyLogicalName": "canchangehierarchicalrelationship" }, "IsOptimisticConcurrencyEnabled": true, "ChangeTrackingEnabled": false, "IsImportable": true, "IsIntersect": false, "IsMailMergeEnabled": { "Value": true, "CanBeChanged": true, "ManagedPropertyLogicalName": "canmodifymailmergesettings" }, "IsManaged": false, "IsEnabledForCharts": true, "IsEnabledForTrace": false, "IsValidForAdvancedFind": true, "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" }, "DaysSinceRecordLastModified": 0, "IsReadingPaneEnabled": true, "IsQuickCreateEnabled": false, "LogicalName": "new_bankaccount", "ObjectTypeCode": 10009, "OwnershipType": "UserOwned", "PrimaryNameAttribute": "new_accountname", "PrimaryImageAttribute": null, "PrimaryIdAttribute": "new_bankaccountid", "Privileges": [ { "CanBeBasic": true, "CanBeDeep": true, "CanBeGlobal": true, "CanBeLocal": true, "CanBeEntityReference": false, "CanBeParentEntityReference": false, "Name": "prvCreatenew_BankAccount", "PrivilegeId": "d1a8de4b-27df-42e1-bc5c-b863e002b37f", "PrivilegeType": "Create" }, { "CanBeBasic": true, "CanBeDeep": true, "CanBeGlobal": true, "CanBeLocal": true, "CanBeEntityReference": false, "CanBeParentEntityReference": false, "Name": "prvReadnew_BankAccount", "PrivilegeId": "726043b1-de2c-487e-9d6d-5629fca2bf22", "PrivilegeType": "Read" }, { "CanBeBasic": true, "CanBeDeep": true, "CanBeGlobal": true, "CanBeLocal": true, "CanBeEntityReference": false, "CanBeParentEntityReference": false, "Name": "prvWritenew_BankAccount", "PrivilegeId": "fa50c539-b6c7-4eaf-bd49-fd8224bc51b6", "PrivilegeType": "Write" }, { "CanBeBasic": true, "CanBeDeep": true, "CanBeGlobal": true, "CanBeLocal": true, "CanBeEntityReference": false, "CanBeParentEntityReference": false, "Name": "prvDeletenew_BankAccount", "PrivilegeId": "17c1fd6e-f856-45e7-b563-796f53108b85", "PrivilegeType": "Delete" }, { "CanBeBasic": true, "CanBeDeep": true, "CanBeGlobal": true, "CanBeLocal": true, "CanBeEntityReference": false, "CanBeParentEntityReference": false, "Name": "prvAssignnew_BankAccount", "PrivilegeId": "133ca81d-668e-4c19-a71e-10c6dfe099cd", "PrivilegeType": "Assign" }, { "CanBeBasic": true, "CanBeDeep": true, "CanBeGlobal": true, "CanBeLocal": true, "CanBeEntityReference": false, "CanBeParentEntityReference": false, "Name": "prvSharenew_BankAccount", "PrivilegeId": "15f27df4-9c67-47c9-b1f1-274e1c44f24a", "PrivilegeType": "Share" }, { "CanBeBasic": true, "CanBeDeep": true, "CanBeGlobal": true, "CanBeLocal": true, "CanBeEntityReference": false, "CanBeParentEntityReference": false, "Name": "prvAppendnew_BankAccount", "PrivilegeId": "ac8b1920-8f93-4e9d-94e3-c680e2a2f228", "PrivilegeType": "Append" }, { "CanBeBasic": true, "CanBeDeep": true, "CanBeGlobal": true, "CanBeLocal": true, "CanBeEntityReference": false, "CanBeParentEntityReference": false, "Name": "prvAppendTonew_BankAccount", "PrivilegeId": "f63a5f46-3bc7-4eac-81d0-7f77f566ef46", "PrivilegeType": "AppendTo" } ], "RecurrenceBaseEntityLogicalName": null, "ReportViewName": "Filterednew_BankAccount", "SchemaName": "new_BankAccount", "IntroducedVersion": "1.0", "IsStateModelAware": true, "EnforceStateTransitions": false, "EntityColor": null, "LogicalCollectionName": "new_bankaccounts", "CollectionSchemaName": "new_BankAccounts", "EntitySetName": "new_bankaccounts", "IsEnabledForExternalChannels": false, "IsPrivate": false, "MetadataId": "417129e1-207c-e511-80d2-00155d2a68d2", "HasChanged": null }
Response
HTTP/1.1 204 No Content OData-Version: 4.0
Create attributes
You can create attributes at the same time you create the entity by including the JSON definition of the attributes in the Attributes array for the entity you post in addition to the string attribute that serves as the primary name attribute. If you want to add attributes to an entity that is already created, you can send a POST request including the JSON definition of them to the entity Attributes collection-valued navigation property.
Create a string attribute
The following example will use these properties to create a string attribute.
String attribute properties |
Values |
---|---|
SchemaName |
new_BankName |
DisplayName |
Bank Name |
Description |
Type the name of the bank. |
RequiredLevel |
None |
MaxLength |
100 |
FormatName |
Text |
The following example creates a string attribute using the properties and adds it to the entity with the MetadataId value of 402fa40f-287c-e511-80d2-00155d2a68d2. The URI for the attribute is returned in the response.
Request
POST [Organization URI]/api/data/v8.2/EntityDefinitions(402fa40f-287c-e511-80d2-00155d2a68d2)/Attributes HTTP/1.1 Accept: application/json Content-Type: application/json; charset=utf-8 OData-MaxVersion: 4.0 OData-Version: 4.0 { "AttributeType": "String", "AttributeTypeName": { "Value": "StringType" }, "Description": { "@odata.type": "Microsoft.Dynamics.CRM.Label", "LocalizedLabels": [ { "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel", "Label": "Type the name of the bank", "LanguageCode": 1033 } ] }, "DisplayName": { "@odata.type": "Microsoft.Dynamics.CRM.Label", "LocalizedLabels": [ { "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel", "Label": "Bank Name", "LanguageCode": 1033 } ] }, "RequiredLevel": { "Value": "None", "CanBeChanged": true, "ManagedPropertyLogicalName": "canmodifyrequirementlevelsettings" }, "SchemaName": "new_BankName", "@odata.type": "Microsoft.Dynamics.CRM.StringAttributeMetadata", "FormatName": { "Value": "Text" }, "MaxLength": 100 }
Response
HTTP/1.1 204 No Content OData-Version: 4.0 OData-EntityId: [Organization URI]/api/data/v8.2/EntityDefinitions(402fa40f-287c-e511-80d2-00155d2a68d2)/Attributes(f01bef16-287c-e511-80d2-00155d2a68d2)
Create a Money attribute
The following example will use these properties to create a money attribute.
Money attribute properties |
Values |
---|---|
SchemaName |
new_Balance |
DisplayName |
Balance |
Description |
Enter the balance amount. |
RequiredLevel |
None |
PrecisionSource |
2 Note For information on the valid values for PrecisionSource, see Quantity data attributes. The value 2 means that the level of decimal precision will match TransactionCurrency.CurrencyPrecision that is associated with the current record. |
The following example creates a money attribute using the properties and adds it to the entity with the MetadataId value of 402fa40f-287c-e511-80d2-00155d2a68d2. The URI for the attribute is returned in the response.
Request
POST [Organization URI]/api/data/v8.2/EntityDefinitions(402fa40f-287c-e511-80d2-00155d2a68d2)/Attributes HTTP/1.1 Accept: application/json Content-Type: application/json; charset=utf-8 OData-MaxVersion: 4.0 OData-Version: 4.0 { "AttributeType": "Money", "AttributeTypeName": { "Value": "MoneyType" }, "Description": { "@odata.type": "Microsoft.Dynamics.CRM.Label", "LocalizedLabels": [ { "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel", "Label": "Enter the balance amount", "LanguageCode": 1033 } ] }, "DisplayName": { "@odata.type": "Microsoft.Dynamics.CRM.Label", "LocalizedLabels": [ { "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel", "Label": "Balance", "LanguageCode": 1033 } ] }, "RequiredLevel": { "Value": "None", "CanBeChanged": true, "ManagedPropertyLogicalName": "canmodifyrequirementlevelsettings" }, "SchemaName": "new_Balance", "@odata.type": "Microsoft.Dynamics.CRM.MoneyAttributeMetadata", "PrecisionSource": 2 }
Response
HTTP/1.1 204 No Content OData-Version: 4.0 OData-EntityId: [Organization URI]/api/data/v8.2/EntityDefinitions(402fa40f-287c-e511-80d2-00155d2a68d2)/Attributes(f11bef16-287c-e511-80d2-00155d2a68d2)
Create a datetime attribute
The following example will use these properties to create a datetime attribute.
Datetime attribute properties |
Values |
---|---|
SchemaName |
new_Checkeddate |
DisplayName |
Date |
Description |
The date the account balance was last confirmed. |
RequiredLevel |
None |
Format |
DateOnly Note For the valid options for this property, see DateTimeFormat EnumType. |
The following example creates a datetime attribute using the properties and adds it to the entity with the MetadataId value of 402fa40f-287c-e511-80d2-00155d2a68d2. The URI for the attribute is returned in the response.
Request
POST [Organization URI]/api/data/v8.2/EntityDefinitions(402fa40f-287c-e511-80d2-00155d2a68d2)/Attributes HTTP/1.1 Accept: application/json Content-Type: application/json; charset=utf-8 OData-MaxVersion: 4.0 OData-Version: 4.0 { "AttributeType": "DateTime", "AttributeTypeName": { "Value": "DateTimeType" }, "Description": { "@odata.type": "Microsoft.Dynamics.CRM.Label", "LocalizedLabels": [ { "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel", "Label": "The date the account balance was last confirmed", "LanguageCode": 1033 } ] }, "DisplayName": { "@odata.type": "Microsoft.Dynamics.CRM.Label", "LocalizedLabels": [ { "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel", "Label": "Date", "LanguageCode": 1033 } ] }, "RequiredLevel": { "Value": "None", "CanBeChanged": true, "ManagedPropertyLogicalName": "canmodifyrequirementlevelsettings" }, "SchemaName": "new_Checkeddate", "@odata.type": "Microsoft.Dynamics.CRM.DateTimeAttributeMetadata", "Format": "DateOnly" }
Response
HTTP/1.1 204 No Content OData-Version: 4.0 OData-EntityId: [Organization URI]/api/data/v8.2/EntityDefinitions(402fa40f-287c-e511-80d2-00155d2a68d2)/Attributes(fe1bef16-287c-e511-80d2-00155d2a68d2)
Create a customer lookup attribute
Unlike other attributes, a customer lookup attribute is created using the CreateCustomerRelationships Action. The parameters for this action require the definition of the lookup attribute and a pair of one-to-many relationships. A customer lookup attribute has two one-to-many relationships: one to the account entity and the other one to contact entity.
The following example will use these properties to create a customer lookup attribute.
Customer lookup attribute properties |
Values |
---|---|
SchemaName |
new_CustomerId |
DisplayName |
Customer |
Description |
Sample Customer Lookup Attribute |
The example creates a customer lookup attribute, new_CustomerId, and adds it to the custom entity: new_bankaccount. The response is a CreateCustomerRelationshipsResponse Complex Type.
Request
POST [Organization URI]/api/data/v8.2/CreateCustomerRelationships HTTP/1.1 OData-MaxVersion: 4.0 OData-Version: 4.0 Accept: application/json Content-Type: application/json; charset=utf-8 { "OneToManyRelationships": [{ "SchemaName": "new_bankaccount_customer_account", "ReferencedEntity": "account", "ReferencingEntity": "new_bankaccount" }, { "SchemaName": "new_bankaccount_customer_contact", "ReferencedEntity": "contact", "ReferencingEntity": "new_bankaccount" }], "Lookup": { "AttributeType": "Lookup", "AttributeTypeName": { "Value": "LookupType" }, "Description": { "@odata.type": "Microsoft.Dynamics.CRM.Label", "LocalizedLabels": [{ "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel", "Label": "Sample Customer Lookup Attribute", "LanguageCode": 1033 }], "UserLocalizedLabel": { "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel", "Label": "Sample Customer Lookup Attribute", "LanguageCode": 1033 } }, "DisplayName": { "@odata.type": "Microsoft.Dynamics.CRM.Label", "LocalizedLabels": [{ "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel", "Label": "Customer", "LanguageCode": 1033 }], "UserLocalizedLabel": { "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel", "Label": "Customer", "LanguageCode": 1033 } }, "SchemaName": "new_CustomerId", "@odata.type": "Microsoft.Dynamics.CRM.ComplexLookupAttributeMetadata" } }
Response
HTTP/1.1 200 OK Content-Type: application/json; odata.metadata=minimal OData-Version: 4.0 { "@odata.context": "[Organization URI]/api/data/v8.2/$metadata#Microsoft.Dynamics.CRM.CreateCustomerRelationshipsResponse", "RelationshipIds": [ "a7d261bc-3580-e611-80d7-00155d2a68de", "aed261bc-3580-e611-80d7-00155d2a68de" ], "AttributeId": "39a5d94c-e8a2-4a41-acc0-8487242d455e" }
Update an attribute
As mentioned in Update entities, model entities are updated using the HTTP PUT method with the entire JSON definition of the current item. This applies to attributes as well as entities. Just like with entities, you have the option to overwrite labels using the MSCRM.MergeLabels header with the value set to false, and you must publish customizations before they are active in the system.
See Also
Use the Web API with Dynamics 365 metadata
Query metadata using the Web API
Retrieve metadata by name or MetadataId
Create and update entity relationships using the Web API
Use the Organization service with Dynamics 365 metadata
Customize entity attribute metadata
Microsoft Dynamics 365
© 2016 Microsoft. All rights reserved. Copyright