Types d'API Web et opérations

 

Date de publication : janvier 2017

S’applique à : Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

Pour utiliser l'API Web, vous devez trouver des informations sur les éléments que vous pouvez utiliser. Le service se décrit via les documents de service et de métadonnées auxquels vous pouvez accéder. Cette rubrique présente des concepts importants et décrit comment trouver les informations nécessaires à l'aide de la documentation générée à partir des documents de service et de métadonnées ainsi que la documentation des types d'entités système, des fonctions et des actions.

Contenu de la rubrique

Terminologie

Documents de service

Types d'entités

Propriétés

Propriétés de navigation

Actions

Fonctions

Types complexes

Types d'énumération

Terminologie

L'API Web est implémentée à l'aide de la version 4 de la norme OData qui utilise un ensemble spécifique de termes que vous devez connaître. Le Modèle de données d'entité (EDM) est le modèle de données abstrait utilisé pour décrire les données exposées par un service OData. Le tableau suivant contient une liste sélectionnée de termes définis dans la Partie 1 de la version 4.0 d'OData : Protocol Plus Errata 02 que vous devez comprendre.

Terme

Définition

Types d'entités

Types structurés nommés avec une clé. Ils définissent les propriétés et les relations nommées d'une entité. Les types d'entités peuvent dériver par simple héritage d'autres types d'entités.

Entités

Instances de types d'entités (par exemple, account, opportunity).

Ensembles d'entités

Collections nommées d'entités (par exemple, accounts est un ensemble d'entités contenant des entités account). La clé d'une entité identifie de manière unique l'entité dans un ensemble d'entités.

Types complexes

Types structurés nommés sans clés, composés d'un ensemble de propriétés. Les types complexes sont souvent utilisés comme valeurs de propriété dans les entités de modèle, ou comme paramètres ou valeurs de retour pour les opérations.

Types d'énumération ou Types d'enum

Types primitifs nommés dont les valeurs sont des constantes nommées avec des valeurs entières sous-jacentes.

Fonctions

Opérations qui n'ont pas d'effets secondaires et qui peuvent prendre en charge d'autres compositions, par exemple, avec des opérations de filtre, des fonctions ou des actions supplémentaires

Actions

Opérations qui ont des effets secondaires, par exemple la modification des données, et qui ne peuvent pas prendre en charge d'autres compositions pour éviter tout comportement non déterministe

Documents de service

Il existe deux documents de service que vous pouvez référencer pour en savoir plus sur l'API Web.

Document de service

La requête suivante, tapée dans le champ d'adresse de votre navigateur, renvoie le document de service, une liste complète de tous les ensembles d'entités disponibles pour votre organisation. Notez que [URI de l'organisation] représente l'URL de votre organisation.


[URI de l'organisation]/api/data/v8.2

Les ensembles d'entités sont renvoyés sous la forme d'un tableau JSON. Chaque élément du tableau a trois propriétés, comme indiqué dans ce tableau.

Propriété

Description

name

Il s'agit du nom de l'ensemble d'entités. Ces données proviennent de la propriété EntityMetadata EntityType EntitySetName de l'entité.

kind

Pour l'API Web, seuls les ensembles d'entités sont répertoriés.

url

Cette valeur est identique à celle de la propriété name et représente la partie du chemin d'accès aux ressources pour récupérer les données de l'entité.

Ces informations peuvent être récupérées à l'aide d'une requête GET et peuvent être utiles pour obtenir la liste de tous les ensembles d'entités disponibles avec le service.

Document de métadonnées CSDL

Une requête GET à l'URL suivante renvoie un document Common Schema Definition Language (CSDL) assez volumineux (plus de 3,5 Mo), ou un document de métadonnées qui décrit les données et les opérations exposées par le service.


[URI de l'organisation]/api/data/v8.2/$metadata

Ce document peut être utilisé comme source de données pour générer des classes qui fournissent des objets fortement typés pour le service. Mais si vous n'utilisez pas les classes générées, vous pouvez consulter la documentation générée à partir de ces informations à la place. La Web API Reference utilise principalement les informations de ce document provenant d'un système non personnalisé.

Pour en savoir plus sur ce document, consultez la Partie 3 de la version 4.0 d'OData : Common Schema Definition Language (CSDL) Plus Errata 02.

Conseil

Avant de lire le reste de cette rubrique, téléchargez le document CSDL pour votre organisation et examinez comment les types, les fonctions et les actions décrits sont inclus dans le document CSDL et la documentation associée.

Types d'entités

La Web API EntityType Reference répertorie chacun des types d'entités système exposés via l'API Web qui stockent les données d'entreprise. Un type d'entité est un type structuré nommé avec une clé. Il définit les propriétés et les relations nommées d'une entité. Les types d'entités peuvent dériver par simple héritage d'autres types d'entités. La Web API Metadata EntityType Reference répertorie chacun des types d'entités utilisés pour gérer les métadonnées du système. Toutes deux sont des types d'entités, mais vous les utilisez de manière différente. Pour plus d'informations sur l'utilisation des entités de modèle, voir Utiliser l'API Web avec les métadonnées Dynamics 365. Chaque type d'entité est inclus dans un élément EntityType de CSDL. Vous trouverez ci-dessous la définition de account EntityType provenant de CSDL avec des propriétés et des propriétés de navigation supprimées.

<EntityType Name="account" BaseType="mscrm.crmbaseentity">
  <Key>
    <PropertyRef Name="accountid" />
  </Key>
  <!--Properties and navigation properties removed for brevity-->
  <Annotation Term="Org.OData.Core.V1.Description" String="Business that represents a customer or potential customer. The company that is billed in business transactions." />
</EntityType>

Chaque page de référence EntityType de la documentation du Kit de développement logiciel (SDK) utilise les informations de CSDL ou des métadonnées pour afficher les informations suivantes lorsqu'elles sont disponibles.

Informations

Description

Description

Description de l'entité.

Les informations de la propriété EntityMetadata EntityType Description sont incluses dans l'élément EntityType à l'aide de l'élément Annotation avec la valeur d'attribut Term de Org.OData.Core.V1.Description.

URL de la collection

URL permettant d'accéder à la collection de chaque type.

Les informations de la propriété EntityMetadata EntityType EntitySetName sont incluses à l'aide de l'élément EntityContainer de CSDL. L'attribut Name de chaque élément EntitySet contrôles l'accès aux données via l'URL.

Type de base

Il s'agit du type d'entité dont le type d'entité hérite.

L'attribut BaseType de l'élément EntityType contient le nom du type d'entité. Ce nom a pour préfixe l'alias de l'espace de noms Microsoft.Dynamics.CRM : mscrm.Pour plus d'informations :Héritage de type

Nom complet

Ces informations ne figurent pas dans CSDL, elles sont extraites de la propriété EntityMetadata EntityType DisplayName.

Clé primaire

Valeur de propriété contenant l'identificateur unique pour référencer une instance d'entité.

La valeur de la propriété EntityMetadata EntityType PrimaryIdAttribute est incluse dans l'élément EntityType Key. Chaque entité ne peut avoir qu'une seule clé primaire.

Les clés secondaires ne sont pas répertoriées ici.Pour plus d'informations :Clés secondaires

Attribut principal

De nombreuses entités nécessitent la définition d'une valeur d'attribut principal ; cette information est donc incluse pour vous faciliter la tâche.

Ces informations ne figurent pas dans CSDL, elles sont extraites de la propriété EntityMetadata EntityType PrimaryNameAttribute. des métadonnées.

Propriétés

Pour plus d'informations, consultez Propriétés.

Propriétés de navigation à valeur unique

Pour plus d'informations, consultez Propriétés de navigation à valeur unique.

Propriétés de navigation à valeur de collection

Pour plus d'informations, consultez Propriétés de navigation à valeur de collection.

Opérations liées au type d'entité

Lorsqu'une opération est liée à un type d'entité spécifique, elle est répertoriée pour vous faciliter la tâche.

Opérations utilisant le type d'entité

Cette liste affiche les opérations qui peuvent utiliser le type d'entité. Elle est dérivée en collectant les références à toutes les opérations qui font référence au type actuel dans les paramètres ou en tant que valeur de retour.

Types d'entités qui héritent du type d'entité.

Cette liste inclut les types d'entités qui héritent directement du type d'entité. Pour plus d'informations, voir Héritage de type.

Modifier le nom d'un ensemble d'entités

Par défaut, le nom de l'ensemble d'entités correspond à la valeur de la propriété EntityMetadata EntityType LogicalCollectionName (EntityMetadataLogicalCollectionName). Si vous souhaitez remplacer le nom d'une entité personnalisée par un autre nom d'ensemble d'entités, vous pouvez mettre à jour la valeur de la propriété EntityMetadata EntityType EntitySetName (EntityMetadata.EntitySetName) pour utiliser un autre nom.

Clés secondaires

Microsoft Dynamics 365 permet de créer des clés secondaires, mais seule la clé primaire est disponible dans la documentation du SDK de Microsoft Dynamics 365.

Aucune clé secondaire n'est définie pour les entités du système. Si vous définissez des clés secondaires pour une entité, elles sont incluses dans l'élément EntityType de CSDL en tant que Annotation comme suit :

<Annotation Term="OData.Community.Keys.V1.AlternateKeys">
  <Collection>
    <Record Type="OData.Community.Keys.V1.AlternateKey">
      <PropertyValue Property="Key">
        <Collection>
          <Record Type="OData.Community.Keys.V1.PropertyRef">
            <PropertyValue Property="Alias" String="key name" />
            <PropertyValue Property="Name" PropertyPath="key name" />
          </Record>
        </Collection>
      </PropertyValue>
    </Record>
  </Collection>
</Annotation>

Les informations relatives aux clés secondaires peuvent également être extraites des métadonnées à l'aide de la propriété de navigation à valeur de collection EntityMetadata EntityType Keys avec l'API Web ou à l'aide de la propriété EntityMetadata.Keys avec le service d'organisation.

Héritage de type

L'héritage permet de partager des propriétés communes et de classer des types d'entités en groupes. Tous les types d'entités de l'API Web héritent de deux des types d'entités suivants. Tous les types d'entité commerciale héritent de crmbaseentity EntityType et toutes les entités de modèle héritent de crmmodelbaseentity EntityType.

Entité de base

Description

crmbaseentity EntityType

Toutes les entités commerciales héritent de cette entité. Elle ne possède aucune propriété. Elle sert uniquement d'entité de base abstraite.

activitypointer EntityType

Toutes les entités d'activité héritent de cette entité. Elle définit l'ensemble commun de propriétés et de propriétés de navigation pour les entités d'activité.

principal EntityType

Les entités systemuser EntityType et team EntityType héritent de la propriété commune ownerid de cette entité.

crmmodelbaseentity EntityType

Seule l'entité MetadataBase EntityType hérite directement de cette entité. Elle ne possède aucune propriété. Elle sert uniquement d'entité de base abstraite.

MetadataBase EntityType

Toutes les entités de modèle héritent de cette entité. Elle fournit les propriétés MetadataId et HasChanged pour toutes les entités de modèle.

AttributeMetadata EntityType

Toutes les entités de modèle qui représentent différents types d'attributs héritent de cette entité.

EnumAttributeMetadata EntityType

Les entités de modèle qui représentent des attributs incluant un ensemble d'options héritent de cette entité.

OptionSetMetadataBase EntityType

Ce type d'entité de modèle fournit un ensemble commun de propriétés utilisées par les types d'entités de modèle BooleanOptionSetMetadata EntityType et OptionSetMetadata EntityType qui héritent de celui-ci.

RelationshipMetadataBase EntityType

Ce type d'entité fournit un ensemble commun de propriétés utilisées par les types d'entités de modèle ManyToManyRelationshipMetadata EntityType et OneToManyRelationshipMetadata EntityType qui héritent de celui-ci.

Propriétés

Chaque type d'entité peut avoir des propriétés déclarées qui correspondent aux attributs. Dans le contenu Web API EntityType Reference et Web API Metadata EntityType Reference, les propriétés qui sont héritées d'un type d'entité de base sont combinées dans la liste des propriétés déclarées pour chaque type d'entité. L'héritage est indiqué dans la description de chaque propriété.

Dans les éléments EntityType de CSDL, chaque propriété est incluse dans un élément Property avec une valeur d'attribut Name qui correspond aux propriétés que vous définissez dans le code. La valeur d'attribut Type spécifie le type de données de la propriété. Les propriétés des types d'entité commerciale utilisent généralement les types primitifs OData.

Vous trouverez ci-dessous un exemple de la propriété account EntityType name définie dans CSDL.

<Property Name="name" Type="Edm.String" Unicode="false">
  <Annotation Term="Org.OData.Core.V1.Description" String="Type the company or business name." />
</Property>

La description de la propriété est disponible dans un élément Annotation avec la propriété d'attribut Term de Org.OData.Core.V1.Description. Cette description est extraite de la valeur de la propriété AttributeMetadata EntityType Description. Certaines propriétés ont une description.

Chaque propriété peut être calculée. Cela signifie que la valeur peut être définie par le système. Cela est spécifié dans un élément Annotation avec la valeur d'attribut Term de Org.OData.Core.V1.Computed.

Chaque propriété peut également avoir des limitations sur son éventuelle mise à jour. Cela est défini dans un élément Annotation avec la valeur d'attribut Term de Org.OData.Core.V1.Permissions. Le seul groupe d'options est Org.OData.Core.V1.PermissionType/Read, qui indique que la propriété est en lecture seule.

Types primitifs

OData prend en charge une large éventail de types de données mais Microsoft Dynamics 365 ne les utilise pas tous. Le tableau suivant décrit comment les types de services d'organisation de Dynamics 365 sont mappés aux types primitifs OData.

Type de service d'organisation

Type d'API Web

Description

BigInt

Edm.Int64

Entier 64 bits signé

Boolean

Edm.Boolean

Logique à valeur binaire

CalendarRules

Propriétés de navigation à valeur unique

Propriétés de navigation à valeur unique spécifiques à calendarrule EntityType.

Client

Propriétés de navigation à valeur unique

Le client d'une entité avec ce type de propriété peut être une propriété de navigation à valeur unique définie sur un type d'entité account ou contact qui utilise les propriétés de navigation à valeur unique respectives. Lorsque l'une des propriétés de collection à valeur unique respectives est définie, l'autre est désactivée.

DateTime

Edm.DateTimeOffset

Date et heure avec un décalage du fuseau horaire, aucune seconde intercalaire
Il n'existe aucun type DateTime dans OData.

Décimal

Edm.Decimal

Valeurs numériques avec précision et échelle fixes

Double

Edm.Double

Nombre à virgule flottante binary64 IEEE 754 (15 à 17 nombres décimaux)

Nom de l’entité

Edm.String

Séquence de caractères UTF-8

Image

Edm.Binary

Données binaires

Entier

Edm.Int32

Entier 32 bits signé

Recherce

Propriété de navigation à valeur unique

Référence à une entité spécifique

ManagedProperty

Non applicable

Utilisation interne uniquement.

Mémo

Edm.String

Séquence de caractères UTF-8

Devise

Edm.Decimal

Valeurs numériques avec précision et échelle fixes

Propriétaire

Propriété de navigation à valeur unique

Référence à principal EntityType. Les types d'entités systemuser et team héritent leur propriété ownerid du type d'entité prinicipal.

PartyList

Propriété de navigation à valeur de collection pour le type d'entité activityparty.

La propriété activitypartyparticipationtypemask contient une valeur pour représenter le rôle du participant. Pour plus d'informations, voir Types de groupe d’activité.

Liste de choix

Edm.Int32

Entier 32 bits signé

État

Edm.Int32

Entier 32 bits signé

Statut

Edm.Int32

Entier 32 bits signé

Chaîne

Edm.String

Séquence de caractères UTF-8

Uniqueidentifier

Edm.Guid

Identificateur unique 16 octets (128 bits)

Propriétés de recherche

Pour la plupart des propriétés de navigation à valeur unique, vous trouverez une propriété en lecture seule calculée qui utilise la convention d'affectation de noms suivante : _<name>_value où <name> correspond au nom de la propriété de navigation à valeur unique. L'exception à ce modèle est lorsqu'un attribut de recherche de l'entité peut accepter plusieurs types de références d'entité. Un exemple courant est la façon dont l'attribut customerid de l'entité incident peut être défini sur une référence qui est une entité contact ou account. Dans les Single-valued navigation properties de incident EntityType, vous trouverez customerid_account et customerid_contact comme propriétés de navigation à valeur unique distinctes pour refléter le client associé à une opportunité. Si vous définissez une de ces propriétés de navigation à valeur unique, l'autre est définie sur null, car toutes deux sont liées à l'attribut customerid. Dans les Properties de incident EntityType, vous trouverez une propriété de recherche _customerid_value qui contient la même valeur que celle définie pour les propriétés de navigation à valeur unique contenant une valeur.

En général, vous devez éviter d'utiliser les propriétés de recherche et utiliser les propriétés de navigation à valeur unique correspondantes à la place. Ces propriétés ont été incluses, car elles peuvent être utiles pour certains scénarios d'intégration. Ces propriétés sont en lecture seule et calculées, car elles reflètent simplement les modifications appliquées à l'aide de la propriété de navigation à valeur unique correspondante.

Lorsque vous incluez des propriétés de recherche dans une requête, vous pouvez demander d'inclure des annotations qui fournissent des informations supplémentaires sur les données définies pour les attributs sous-jacents qui ne sont pas représentés par une propriété de navigation à valeur unique.Pour plus d'informations :Extraire les données sur les propriétés de recherche

Propriétés de navigation

Dans OData, les propriétés de navigation vous permettent d'accéder aux données associées à l'entité actuelle. Lorsque vous récupérez une entité, vous pouvez choisir de développer les propriétés de navigation pour inclure les données associées. Il existe deux types de propriétés de navigation : à valeur unique et à valeur de collection.

Propriétés de navigation à valeur unique

Ces propriétés correspondent aux attributs de recherche qui prennent en charge les relations plusieurs-à-un et permettent de définir une référence à une autre entité. Dans l'élément EntityType de CSDL, elles sont définies en tant qu'élément NavigationProperty avec un attribut Type défini sur un type unique. Vous trouverez ci-dessous un exemple de la propriété de navigation à valeur unique account EntityType createdby définie dans CSDL :

<NavigationProperty Name="createdby" Type="mscrm.systemuser" Nullable="false" Partner="lk_accountbase_createdby">
 <ReferentialConstraint Property="_createdby_value" ReferencedProperty="systemuserid" />
</NavigationProperty>

Chaque propriété de navigation qui représente une propriété de navigation à valeur unique a une propriété de navigation à valeur de collection correspondante indiquée par la valeur d'attribut Partner. Chaque propriété de navigation à valeur unique a également un élément ReferentialConstraint avec la valeur d'attribut Property qui représente la propriété de recherche en lecture seule calculée qui permet de récupérer la valeur GUID correspondante de l'entité associée.Pour plus d'informations :Propriétés de recherche

Propriétés de navigation à valeur de collection

Ces propriétés correspondent aux relations un-à-plusieurs ou plusieurs-à-plusieurs. Dans l'élément EntityType de CSDL, elles sont définies en tant qu'élément NavigationProperty avec un attribut Type défini sur une collection d'un type. Vous trouverez ci-dessous la propriété de navigation à valeur de collection account EntityType Account_Tasks qui représente une relation un-à-plusieurs :

<NavigationProperty Name="Account_Tasks" Type="Collection(mscrm.task)" Partner="regardingobjectid_account_task" />

Lorsque la propriété de navigation à valeur de collection représente une relation plusieurs-à-plusieurs, le nom de la propriété de navigation et le nom du partenaire sont identiques. Vous trouverez ci-dessous la propriété de navigation à valeur de collection account EntityType accountleads_association qui représente une relation plusieurs-à-plusieurs :

<NavigationProperty Name="accountleads_association" Type="Collection(mscrm.lead)" Partner="accountleads_association" />

La différence entre les relations un-à-plusieurs et plusieurs-à-plusieurs n'est pas importante lorsque l'API Web est utilisé. Le mode d'association des entités est le même quel que soit le type de relation. Bien que les relations plusieurs-à-plusieurs utilisent toujours les entités avec intersection en arrière-plan, seules quelques entités avec intersection système spéciales sont incluses dans la Web API EntityType Reference. Par exemple, campaignactivityitem EntityType est techniquement une entité avec intersection, mais elle est incluse, car elle a plus de propriétés qu'une entité avec intersection ordinaire.

Une entité avec intersection ordinaire a uniquement les quatre propriétés de base requises pour gérer la relation plusieurs-à-plusieurs. Lorsque vous créez une relation plusieurs-à-plusieurs personnalisée entre des entités, une entité avec intersection ordinaire est créée pour prendre en charge la relation. Comme vous devez utiliser les propriétés de navigation pour exécuter des opérations impliquant les relations plusieurs-à-plusieurs, les entités avec intersection ordinaires ne sont pas documentées mais restent disponibles avec l'API Web. Ces types d'entités avec intersection sont accessibles en utilisant un nom d'ensemble d'entités qui utilise la convention d'affectation de noms suivante : <nom logique de l'entité avec intersection>+ 'collection'. Par exemple, vous pouvez extraire des informations du type d'entité avec intersection contactleads à l'aide de [URI de l'organisation]/api/data/v8.2/contactleadscollection. Vous devez uniquement utiliser ces entités avec intersection ordinaires dans les cas où vous souhaitez appliquer le suivi des modifications.

Actions

Les Actions sont des opérations qui ont des effets secondaires, par exemple la modification des données, et qui ne peuvent pas prendre en charge d'autres compositions pour éviter tout comportement non déterministe.

La rubrique Web API Action Reference répertorie chacune des actions système disponibles.Pour plus d'informations :Utiliser des actions API Web.

Fonctions

Les Fonctions sont des opérations qui n'ont pas d'effets secondaires et qui peuvent prendre en charge d'autres compositions, par exemple, avec des opérations de filtre, des fonctions et des actions supplémentaires.

Il existe deux types de fonctions définies dans l'API Web :

Pour plus d'informations :Utiliser des fonctions API Web

Types complexes

Les Types complexes sont des types structurés nommés sans clés, composés d'un ensemble de propriétés. Les types complexes sont souvent utilisés comme valeurs de propriété dans les entités de modèle, ou comme paramètres ou valeurs de retour pour les opérations.

La rubrique Web API ComplexType Reference répertorie tous les types complexes du système. Les Types complexes sont des types structurés nommés sans clés, composés d'un ensemble de propriétés. Ils sont souvent utilisés comme valeurs de propriété dans les entités de modèle, ou comme paramètres ou valeurs de retour pour les opérations. Vous trouverez ci-dessous l'élément WhoAmIResponse ComplexType de CSDL.

<ComplexType Name="WhoAmIResponse">
  <Property Name="BusinessUnitId" Type="Edm.Guid" Nullable="false" />
  <Property Name="UserId" Type="Edm.Guid" Nullable="false" />
  <Property Name="OrganizationId" Type="Edm.Guid" Nullable="false" />
</ComplexType>

Types d'énumération

Les Types d'énumération ou EnumTypes sont des types primitifs nommés dont les valeurs sont des constantes nommées avec des valeurs entières sous-jacentes.

La rubrique Web API EnumType Reference répertorie tous les types d'énumération du système. Les Types d'énumération sont des types primitifs nommés dont les valeurs sont des constantes nommées avec des valeurs entières sous-jacentes. Vous trouverez ci-dessous l'élément AccessRights EnumType de CSDL.

<EnumType Name="AccessRights">
  <Member Name="None" Value="0" />
  <Member Name="ReadAccess" Value="1" />
  <Member Name="WriteAccess" Value="2" />
  <Member Name="AppendAccess" Value="4" />
  <Member Name="AppendToAccess" Value="16" />
  <Member Name="CreateAccess" Value="32" />
  <Member Name="DeleteAccess" Value="65536" />
  <Member Name="ShareAccess" Value="262144" />
  <Member Name="AssignAccess" Value="524288" />
</EnumType>

Voir aussi

Utilisez l'API Web Microsoft Dynamics 365
Authentification Microsoft Dynamics 365 avec l'API Web
Effectuer des opérations à l'aide de l'API Web

Microsoft Dynamics 365

© 2017 Microsoft. Tous droits réservés. Copyright