Create and update entity definitions using the Web API

Dynamics CRM 2016
 

Updated: November 29, 2016

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.

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

System_CAPS_noteNote

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

System_CAPS_noteNote

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

MaxLength

100

FormatName

Text

System_CAPS_noteNote

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

System_CAPS_noteNote

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)

System_CAPS_importantImportant

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.

System_CAPS_importantImportant

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

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.

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)

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

System_CAPS_noteNote

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)

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

System_CAPS_noteNote

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)

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"
}

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.

Microsoft Dynamics 365

© 2016 Microsoft. All rights reserved. Copyright

Show: