I am writing a Web API client that is calling the RetrieveMetadataChanges() function and it's getting back results.

When I attempt to parse the JSON, I am finding EntityMetaData > Attributes > "odata.type" key, like this snippet:

{ "EntityMetadata": [ { "Attributes": [ { "@odata.type": "#Microsoft.Dynamics.CRM.ComplexStateAttributeMetadata", ...

When the element occurs, it is a string that refers to various ComplexType-s from the XML theorg.crm.dynamics.com/.../$metadata endpoint.

The problem I'm running into is that not all these types appear to be described at the $metadata endpoint.

The following (apparently ComplexType-s) ARE NOT DEFINED at $metadata :

  • #Microsoft.Dynamics.CRM.ComplexPicklistAttributeMetadata
  • #Microsoft.Dynamics.CRM.ComplexStatusAttributeMetadata
  • #Microsoft.Dynamics.CRM.ComplexEntityNameAttributeMetadata
  • #Microsoft.Dynamics.CRM.ComplexStateAttributeMetadata

The following ComplexType-s ARE DEFINED at $metadata :

  • #Microsoft.Dynamics.CRM.ComplexStringAttributeMetadata
  • #Microsoft.Dynamics.CRM.ComplexLookupAttributeMetadata
  • #Microsoft.Dynamics.CRM.ComplexBigIntAttributeMetadata
  • etc...

So my question is : where are the missing types declared?  Is there a different endpoint that I'm missing?