Consultar definiciones de tabla con la API web
Dado que Microsoft Dataverse es una aplicación basada en metadatos, los desarrolladores pueden necesitar consultar las definiciones del sistema en tiempo de ejecución para adaptarse a cómo se ha configurado una organización. Esta funcionalidad usa un estilo de RESTful de la consulta.
Nota
También puede generar una consulta con un estilo basado en objetos usando EntityQueryExpression ComplexType con RetrieveMetadataChanges Function. Esta función permite capturar cambios en las definiciones de la tabla entre dos períodos de tiempo, así como devolver un conjunto limitado de definiciones descritas por una consulta que especifique. Más información: Definiciones de esquema de consulta
Consultar el tipo de entidad EntityMetadata
Utilizará las mismas técnicas descritas en Consultar datos mediante la API web cuando consulte EntityMetadata, con algunas variaciones. Use la ruta del conjunto de entidades EntityDefinitions
para recuperar información acerca del EntityMetadata EntityType. Las entidades de EntityMetadata contienen muchos datos por lo que deberá tener cuidado de recuperar solo los datos necesarios. El siguiente ejemplo muestra los datos devueltos solo para las propiedades DisplayName
, IsKnowledgeManagementEnabled
y EntitySetName
de la definición para la entidad Account
. El valor de la propiedad MetadataId
siempre se devuelve.
Solicitud:
GET [Organization URI]/api/data/v9.2/EntityDefinitions(LogicalName='account')?$select=DisplayName,IsKnowledgeManagementEnabled,EntitySetName HTTP/1.1
Accept: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
Respuesta:
HTTP/1.1 200 OK
Content-Type: application/json; odata.metadata=minimal
OData-Version: 4.0
{
"@odata.context": "[Organization URI]/api/data/v9.2/$metadata#EntityDefinitions(DisplayName,IsKnowledgeManagementEnabled,EntitySetName)",
"value": [
{
"DisplayName": {
"LocalizedLabels": [
{
"Label": "Account",
"LanguageCode": 1033,
"IsManaged": true,
"MetadataId": "2a4901bf-2241-db11-898a-0007e9e17ebd",
"HasChanged": null
}
],
"UserLocalizedLabel": {
"Label": "Account",
"LanguageCode": 1033,
"IsManaged": true,
"MetadataId": "2a4901bf-2241-db11-898a-0007e9e17ebd",
"HasChanged": null
}
},
"IsKnowledgeManagementEnabled": false,
"EntitySetName": "accounts",
"MetadataId": "70816501-edb9-4740-a16c-6a5efbc05d84"
}
]
}
Puede usar cualquiera de las propiedades EntityMetadata
con opciones de consulta del sistema $select
y puede usar $filter
en cualquier propiedad que use valores primitivos o de enumeración.
No tiene hay límites en el número al número de entidades de metadatos que serán devueltas en una consulta. No hay paginación. Se devolverán todos los recursos que coincidan en la primera respuesta.
Límite de idiomas devueltos
Cuando un entorno tiene muchos idiomas aprovisionados, la cantidad de datos devueltos puede crecer mucho. Para obtener el mejor rendimiento, limite las etiquetas de idioma devueltas mediante el parámetro LabelLanguages
con el valor LCID del idioma que desea devolver.
Los códigos de idioma son identificadores de configuración regional de cuatro o cinco dígitos. Los valores de identificadores de configuración regional válidos pueden encontrarse en el gráfico de identificadores de configuración regional (LCID).
Por ejemplo, agregar lo siguiente limitará las etiquetas de idioma localizadas al inglés: &LabelLanguages=1033
.
Use tipos de enumeración en operaciones $filter
Cuando necesite filtrar entidades de metadatos basadas en el valor de una propiedad que use una enumeración, debe incluir el espacio de nombres de la enumeración delante del valor de cadena. Los tipos de enumeración se utilizan como valores de propiedad solo en entidades de metadatos y tipos complejos. Por ejemplo, si necesita filtrar entidades en función de la propiedad OwnershipType
, que usa OwnershipTypes Enumtype, puede usar el siguiente $filter
para devolver únicamente las entidades que son UserOwned
.
GET [Organization URI]/api/data/v9.2/EntityDefinitions?$select=LogicalName&$filter=OwnershipType eq Microsoft.Dynamics.CRM.OwnershipTypes'UserOwned'
Use tipos complejos en operaciones $filter
Cuando necesite filtrar entidades de metadatos basadas en el valor de una propiedad que use un tipo complejo, debe incluir la ruta al tipo primitivo subyacente. Los tipos complejos se utilizan como valores de propiedad solo en entidades de metadatos. Por ejemplo, si necesita filtrar entidades en función de la propiedad CanCreateAttributes
, que usa el BooleanManagedProperty ComplexType, puede usar el siguiente $filter
para devolver únicamente las entidades que tengan un Value
de true
.
GET [Organization URI]/api/data/v9.2/EntityDefinitions?$select=LogicalName&$filter=CanCreateAttributes/Value eq true
Este modelo funciona con BooleanManagedProperty ComplexType porque el valor primitivo a comprobar tiene un nivel de profundidad. Sin embargo, esto no funciona en las propiedades de Label ComplexType.
Consultar atributos EntityMetadata
Puede ver atributos de entidad en el contexto de una entidad expandiendo la propiedad de navegación valorada como colección Attributes
, pero esto solo incluirá las propiedades comunes disponibles en el AttributeMetadata EntityType que todos los atributos comparten. Por ejemplo, la siguiente consulta devolverá el LogicalName
de la entidad y todos los atributos expandidos que tengan un valor de AttributeType
igual al valor de AttributeTypeCode EnumType de Picklist
.
GET [Organization URI]/api/data/v9.2/EntityDefinitions(LogicalName='account')?$select=LogicalName&$expand=Attributes($select=LogicalName;$filter=AttributeType eq Microsoft.Dynamics.CRM.AttributeTypeCode'Picklist')
Pero no puede incluir las propiedades navegación valoradas como colección OptionSet
o GlobalOptionSet
que los atributos PicklistAttributeMetadata EntityType tienen en el filtro $select
de esta consulta.
Para recuperar las propiedades de un tipo específico de atributo debe convertir la propiedad de navegación valorada como colección Attributes
al tipo que desee. La siguiente consulta devolverá solo los atributos PicklistAttributeMetadata EntityType e incluirá además los LogicalName
y también expandirá las propiedades de navegación valoradas como colección de OptionSet
y GlobalOptionSet
.
GET [Organization URI]/api/data/v9.2/EntityDefinitions(LogicalName='account')/Attributes/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?$select=LogicalName&$expand=OptionSet,GlobalOptionSet
Nota
A pesar de que las propiedades de navegación valoradas como colección OptionSet
y GlobalOptionSet
se definen en EnumAttributeMetadata EntityType, no puede convertir los atributos a este tipo. Esto significa que si desea filtrar por otros tipos que también hereden estas propiedades (consulte Tipos de entidades que heredan de EnumAttributeMetadata ), debe realizar consultas aparte para filtrar por cada tipo.
Otro ejemplo de esto es acceder a la propiedad Precision
disponible en los atributos MoneyAttributeMetadata EntityType y DecimalAttributeMetadata EntityType. Para acceder a esta propiedad, debe convertir la colección de atributos como MoneyAttributeMetadata EntityType o DecimalAttributeMetadata EntityType. Un ejemplo que muestra la conversión a MoneyAttributeMetadata
se muestra a continuación.
GET [Organization URI]/api/data/v9.2/EntityDefinitions(LogicalName='account')/Attributes/Microsoft.Dynamics.CRM.MoneyAttributeMetadata?$select=LogicalName,Precision
Filtrar por nivel requerido
La propiedad RequiredLevel
de AttributeMetadata EntityType utiliza un AttributeRequiredLevelManagedProperty ComplexType donde la propiedad Value
es un AttributeRequiredLevel EnumType. En este caso, debe combinar patrones de Utilizar tipos complejos en operaciones $filter y Utilizar tipos de enumeración en operaciones $filter para filtrar por esta propiedad única. La siguiente consulta filtrará esos atributos en la entidad de cuenta que sean ApplicationRequired.
GET [Organization URI]/api/data/v9.2/EntityDefinitions(LogicalName='account')/Attributes?$select=SchemaName&$filter=RequiredLevel/Value eq Microsoft.Dynamics.CRM.AttributeRequiredLevel'ApplicationRequired'
Recuperar atributos
Si conoce el MetadataId
para EntityMetadata
y AttributeMetadata
, o el valor LogicalName
de cualquiera de ellos, puede recuperar un atributo individual y acceder a los valores de las propiedades mediante una consulta como la siguiente. Esta consulta recupera la propiedad LogicalName
del atributo además de expandir la propiedad de navegación valorada como colección OptionSet
. Debe convertir el atributo como Microsoft.Dynamics.CRM.PicklistAttributeMetadata
para acceder a la propiedad de navegación valorada como colección OptionSet
.
Solicitud:
GET [Organization URI]/api/data/v9.2/EntityDefinitions(LogicalName='account')/Attributes(5967e7cc-afbb-4c10-bf7e-e7ef430c52be)/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?$select=LogicalName&$expand=OptionSet HTTP/1.1
Accept: application/json
Content-Type: application/json; charset=utf-8
OData-MaxVersion: 4.0
OData-Version: 4.0
Respuesta:
HTTP/1.1 200 OK
Content-Type: application/json; odata.metadata=minimal
OData-Version: 4.0
{
"@odata.context": "[Organization URI]/api/data/v9.2/$metadata#EntityDefinitions(70816501-edb9-4740-a16c-6a5efbc05d84)/Attributes/Microsoft.Dynamics.CRM.PicklistAttributeMetadata(LogicalName,OptionSet)/$entity",
"LogicalName": "preferredappointmentdaycode",
"MetadataId": "5967e7cc-afbb-4c10-bf7e-e7ef430c52be",
"OptionSet@odata.context": "[Organization URI]/api/data/v9.2/$metadata#EntityDefinitions(70816501-edb9-4740-a16c-6a5efbc05d84)/Attributes(5967e7cc-afbb-4c10-bf7e-e7ef430c52be)/Microsoft.Dynamics.CRM.PicklistAttributeMetadata/OptionSet/$entity",
"OptionSet": {
"Options": [
{
"Value": 0,
"Label": {
"LocalizedLabels": [
{
"Label": "Sunday",
"LanguageCode": 1033,
"IsManaged": true,
"MetadataId": "21d6a218-2341-db11-898a-0007e9e17ebd",
"HasChanged": null
}
],
"UserLocalizedLabel": {
"Label": "Sunday",
"LanguageCode": 1033,
"IsManaged": true,
"MetadataId": "21d6a218-2341-db11-898a-0007e9e17ebd",
"HasChanged": null
}
},
"Description": {
"LocalizedLabels": [],
"UserLocalizedLabel": null
},
"Color": null,
"IsManaged": true,
"MetadataId": null,
"HasChanged": null
}
Additional options removed for brevity
],
"Description": {
"LocalizedLabels": [
{
"Label": "Day of the week that the account prefers for scheduling service activities.",
"LanguageCode": 1033,
"IsManaged": true,
"MetadataId": "1b67144d-ece0-4e83-a38b-b4d48e3f35d5",
"HasChanged": null
}
],
"UserLocalizedLabel": {
"Label": "Day of the week that the account prefers for scheduling service activities.",
"LanguageCode": 1033,
"IsManaged": true,
"MetadataId": "1b67144d-ece0-4e83-a38b-b4d48e3f35d5",
"HasChanged": null
}
},
"DisplayName": {
"LocalizedLabels": [
{
"Label": "Preferred Day",
"LanguageCode": 1033,
"IsManaged": true,
"MetadataId": "ebb7e979-f9e3-40cd-a86d-50b479b1c5a4",
"HasChanged": null
}
],
"UserLocalizedLabel": {
"Label": "Preferred Day",
"LanguageCode": 1033,
"IsManaged": true,
"MetadataId": "ebb7e979-f9e3-40cd-a86d-50b479b1c5a4",
"HasChanged": null
}
},
"IsCustomOptionSet": false,
"IsGlobal": false,
"IsManaged": true,
"IsCustomizable": {
"Value": true,
"CanBeChanged": false,
"ManagedPropertyLogicalName": "iscustomizable"
},
"Name": "account_preferredappointmentdaycode",
"OptionSetType": "Picklist",
"IntroducedVersion": null,
"MetadataId": "53f9933c-18a0-40a6-b4a5-b9610a101735",
"HasChanged": null
}
}
Si no requiere ninguna propiedad del atributo y solo desea los valores de una propiedad de navegación valorada como colección como OptionsSet
, puede incluir esto en la URL y limitar las propiedades con una opción de consulta del sistema $select
para una consulta más eficaz. En el siguiente ejemplo solo la propiedad Options
del OptionSet
está incluida.
Solicitud:
GET [Organization URI]/api/data/v9.2/EntityDefinitions(LogicalName='account')/Attributes(5967e7cc-afbb-4c10-bf7e-e7ef430c52be)/Microsoft.Dynamics.CRM.PicklistAttributeMetadata/OptionSet?$select=Options HTTP/1.1
Accept: application/json
Content-Type: application/json; charset=utf-8
OData-MaxVersion: 4.0
OData-Version: 4.0
Respuesta:
HTTP/1.1 200 OK
Content-Type: application/json; odata.metadata=minimal
OData-Version: 4.0
{
"@odata.context": "[Organization URI]/api/data/v9.2/$metadata#EntityDefinitions('account')/Attributes(5967e7cc-afbb-4c10-bf7e-e7ef430c52be)/Microsoft.Dynamics.CRM.PicklistAttributeMetadata/OptionSet(Options)/$entity",
"Options": [{
"Value": 0,
"Label": {
"LocalizedLabels": [{
"Label": "Sunday",
"LanguageCode": 1033,
"IsManaged": true,
"MetadataId": "21d6a218-2341-db11-898a-0007e9e17ebd",
"HasChanged": null
}],
"UserLocalizedLabel": {
"Label": "Sunday",
"LanguageCode": 1033,
"IsManaged": true,
"MetadataId": "21d6a218-2341-db11-898a-0007e9e17ebd",
"HasChanged": null
}
},
"Description": {
"LocalizedLabels": [],
"UserLocalizedLabel": null
},
"Color": null,
"IsManaged": true,
"MetadataId": null,
"HasChanged": null
}
Additional options removed for brevity
],
"MetadataId": "53f9933c-18a0-40a6-b4a5-b9610a101735"
}
Consultar metadatos de relaciones
Puede recuperar metadatos de relaciones en el contexto de una entidad determinada en gran parte de la misma forma que pueda consultar atributos. Las propiedades de navegación valorada como colección ManyToManyRelationships
, ManyToOneRelationships
y OneToManyRelationships
se pueden consultar como la propiedad de navegación valorada como colección Attributes
. Más información: Consultar atributos EntityMetadata
Sin embargo, las relaciones entre entidades también se pueden consultar con el conjunto de entidades RelationshipDefinitions
. Puede usar una consulta como la siguiente para obtener la propiedad SchemaName
para cada relación.
GET [Organization URI]/api/data/v9.2/RelationshipDefinitions?$select=SchemaName
Las propiedades disponibles al consultar este conjunto de entidades se limitan a las que están en RelationshipMetadataBase EntityType. Para tener acceso a propiedades de los tipos de entidad que se heredan de RelationshipMetadataBase
es necesario incluir una conversión en la consulta como la siguiente para devolver solo OneToManyRelationshipMetadata EntityType.
GET [Organization URI]/api/data/v9.2/RelationshipDefinitions/Microsoft.Dynamics.CRM.OneToManyRelationshipMetadata?$select=SchemaName
Puesto que las entidades devueltas tienen el tipo OneToManyRelationshipMetadata
, puede filtrar por propiedades como ReferencedEntity
para crear una consulta para devolver solo las relaciones entre entidades de una a varias para una entidad específica, como la entidad de cuenta como se muestra en la siguiente consulta:
GET [Organization URI]/api/data/v9.2/RelationshipDefinitions/Microsoft.Dynamics.CRM.OneToManyRelationshipMetadata?$select=SchemaName&$filter=ReferencedEntity eq 'account'
Esa consulta esencialmente devolverá los mismos resultados que la siguiente consulta, que se filtra porque está incluida en propiedad de navegación valorada como colección de EntityMetadataOneToManyRelationships
de la entidad de cuenta. La diferencia es que para la consulta anterior no necesita saber el MetadataId
para la entidad de cuenta.
GET [Organization URI]/api/data/v9.2/EntityDefinitions(LogicalName='account')/OneToManyRelationships?$select=SchemaName
Consultar conjuntos de opciones globales
Puede usar la ruta de conjuntos de entidades GlobalOptionSetDefinitions
para recuperar información sobre conjuntos de opciones globales, pero esta ruta de acceso no admite el uso de la opción de consulta del sistema $filter
. Por lo tanto, solo puede recuperar un solo conjunto de opciones global mediante el MetadataId
o el nombre único.
Ejemplo: por MetadataId
El siguiente ejemplo muestra cómo recuperar un conjunto de opciones global usando el MetadataId
.
GET [Organization URI]/api/data/v9.2/GlobalOptionSetDefinitions(08fa2cb2-e3fe-497a-9b5d-ee887f5cc3cd)
Ejemplo por nombre
El siguiente ejemplo muestra cómo recuperar un conjunto de opciones global por nombre:
GET [Organization URI]/api/data/v9.2/GlobalOptionSetDefinitions(Name='incident_caseorigincode')
También puede obtener acceso a la definición de un conjunto de opciones globales dentro de la propiedad de navegación valorada como colección GlobalOptionSet
para cualquier atributo que la utilice. Esto está disponible para todos los tipos derivados EnumAttributeMetadata EntityType. Más información: Recuperar atributos
Consultar también
Usar la API web con metadatos de Dataverse
Recuperar metadatos por nombre o identificador de metadatos
Entidades de metadatos y atributos con la API web
Relaciones de entidades de metadatos con la API web
Ejemplo de operaciones de esquema de tabla de API web
Ejemplo de operaciones de esquema de tabla de API web (C#)
Nota
¿Puede indicarnos sus preferencias de idioma de documentación? Realice una breve encuesta. (tenga en cuenta que esta encuesta está en inglés)
La encuesta durará unos siete minutos. No se recopilan datos personales (declaración de privacidad).