Créer et utiliser des API personnalisées

Utilisez des API personnalisées pour créer vos propres API dans Dataverse. Vous pouvez consolider une ou plusieurs opérations dans une API personnalisée que vous et d’autres développeurs pouvez appeler dans leur code ou depuis Power Automate. Le connecteur Microsoft Dataverse permet d’appeler des actions dans Power Automate.

Vous pouvez utiliser l’API personnalisée en tant qu’événements commerciaux pour permettre la création de fonctionnalités d’intégration, telles que l’exposition d’un nouveau type de événement déclencheur dans le connecteur Microsoft Dataverse. Plus d’information : Événements d’entreprise Microsoft Dataverse

Les API personnalisées sont une alternative aux actions de processus personnalisées. Les actions de processus personnalisées fournissent un moyen sans code d’inclure des messages personnalisés, mais présentent certaines limitations pour les développeurs. Les API personnalisées offrent des capacités spécifiques aux développeurs pour définir leur logique dans le code avec plus d’options. Pour une comparaison complète de l’action du processus personnalisée et de l’API personnalisée, consultez Comparer l’action du processus personnalisée et l’API personnalisée.

Créer une API personnalisée

Une API personnalisée peut inclure une logique implémentée avec un plug-in. En utilisant les événements commerciaux Microsoft Dataverse, vous pouvez créer une API personnalisée sans plug-in pour transmettre les données sur un événement auquel d′autres abonnés répondent.

Cependant, dans d’autres cas, vous combinez une API personnalisée avec un plug-in pour définir une opération qui est déléguée à Dataverse pour calculer et renvoyer le résultat.

Plusieurs méthodes sont disponibles pour créer une API personnalisée :

Lien méthode Avantage
Outil Inscription des plug-ins Un outil graphique facile à utiliser intégré aux outils utilisés pour développer des plug-ins.
Power Apps Utiliser des formulaires pour saisir des données. Vous n’avez pas besoin d’installer un outil distinct, vous devez créer un enregistrement distinct pour chaque partie de l’API personnalisée.
Avec code Une fois que vous avez compris le modèle de données, vous pouvez créer rapidement une API personnalisée à l’aide d’un client API tel que Postman ou Insomnia. Ou vous pouvez créer votre propre expérience pour créer une API personnalisée.
Avec des fichiers de solution Lorsque vous utilisez les outils de gestion du cycle de vie des applications (ALM), vous pouvez créer ou modifier des définitions d’API personnalisées avec des fichiers XML dans une solution incluse dans votre référentiel de code source. L’API personnalisée est créée lorsque vous importerez la solution générée à partir de votre code source.

Notes

Bien que les données d’API personnalisées soient stockées dans des tables, nous ne prenons pas en charge la création d’une application basée sur un modèle pour ces tables.

La communauté crée et prend en charge plusieurs outils pour utiliser l′API personnalisée :

Les outils créés par la communauté ne sont pas pris en charge par Microsoft. Si vous avez des questions ou des problèmes avec les outils de la communauté, contactez l’éditeur de l’outil.

Personnalisation de l’API personnalisée

Lors de la création d’une API personnalisée et des paramètres de demande et des propriétés de réponse associés, il est important de comprendre que ces définitions d’API sont personnalisables par défaut. Le fait d’être personnalisable vous permet d’itérer et d’apporter des modifications à ces éléments dans votre solution non gérée.

Important

Lorsque vous expédiez ou déployez votre solution, vous devez utiliser un solution gérée et nous vous recommandons de toujours définir la propriété gérée Is Customizable de ces composants sur false. Cela empêche les personnes utilisant votre solution gérée de modifier ou de supprimer ces composants de votre solution. De telles modifications pourraient interrompre le code écrit pour la définition d’origine de l’API personnalisée.

Définir Is Customizable sur false

Vous pouvez définir la propriété gérée Is Customizable à partir de la solution dans Power Apps.

Le paramètre Is Customizable est une propriété gérée

Vous devez définir cette propriété pour chaque API personnalisée, paramètre de requête et propriété de réponse individuellement.

Informations complémentaires Propriétés gérées

Ajouter davantage de paramètres de requête et des propriétés de réponse

Même lorsque vous avez défini la propriété gérée Is Customizable de ces composants sur false, de nouveaux paramètres de demande et propriétés de réponse peuvent être ajoutés à votre API personnalisée. Cependant, ces paramètres de demande ne peuvent pas être rendus obligatoires. Si vous choisissez d’autoriser des étapes de traitement personnalisées sur votre API personnalisée, d’autres plug-ins enregistrés pour le message créé par votre API personnalisée peuvent les utiliser. Étant donné que les paramètres de demande personnalisés ne peuvent être que facultatifs, le plug-in que vous fournissez pour l’opération principale de l’API personnalisée peut les ignorer et n’est pas responsable de l’utilisation des paramètres de demande personnalisés ou de la définition des propriétés de réponse personnalisées.

Entités/tables API personnalisées

Voir Tables CustomAPI pour plus d’informations sur les tables et les valeurs de colonne à utiliser à la création d’API personnalisées.

Sélectionner un type d’étape de traitement personnalisé

Le tableau suivant décrit le Type d’étape de traitement personnalisé de l’API personnalisée (AllowedCustomProcessingStepType) que vous devriez utiliser.

Option Situations d’utilisation de
Aucun Lorsque le plug-in défini pour cette API personnalisée à l’aide de CustomAPI.PluginTypeId est la seule logique qui se produit lors de l’exécution de cette opération.
Vous n’autorisez pas d’autres développeurs à enregistrer d’autres étapes susceptibles de déclencher une autre logique, de modifier le comportement de cette opération ou d’annuler l’opération.
Utilisez cette option lorsque l’API personnalisée fournit des fonctionnalités qui ne doivent pas être personnalisables.
Asynchrone uniquement Lorsque vous souhaitez autoriser d’autres développeurs à détecter le moment où cette opération se produit, mais que vous ne souhaitez pas qu’ils puissent annuler l’opération ou personnaliser le comportement de l’opération.
D’autres développeurs peuvent enregistrer des étapes asynchrones pour détecter que cette opération s’est produite et y répondre une fois qu’elle est terminée.
Il s’agit de l’option recommandée si vous utilisez le modèle d’événements commerciaux. Un événement commercial crée un déclencheur dans Power Automate que vous pouvez utiliser lorsque cet événement se produit. Plus d’information : Événements d’entreprise Microsoft Dataverse
Synchrone et asynchrone Lorsque vous souhaitez autoriser d’autres développeurs à modifier le comportement de l’opération et même à l’annuler si leur logique métier l’exige.
Si l’opération réussit, d’autres développeurs peuvent également détecter cet événement et ajouter une logique pour s’exécuter de manière asynchrone.
La plupart des messages Dataverse permettent l’extension de cette manière. Utilisez cette option lorsque votre message représente un processus d’entreprise qui doit être personnalisable.

Sélectionnez un type de liaison

La liaison est un concept OData qui associe une opération à une table spécifique. Le tableau suivant décrit le Type de liaison de l’API personnalisée (BindingType) que vous devriez utiliser.

Option Situations d’utilisation de
Global Lorsque l’opération ne s’applique pas à une table spécifique.
Entité Lorsque l’opération accepte un seul enregistrement d’une table spécifique en tant que paramètre.
EntityCollection Lorsque l’opération applique des modifications ou renvoie une collection d’une table spécifique.

La sélection Entité ou EntityCollection exige que vous utilisiez le nom complet de la fonction ou de l’action lorsque vous utilisez l’API Web. Le nom complet est Microsoft.Dynamics.CRM.<UniqueName of the custom API>.

Lorsque vous sélectionnez Entité, un paramètre de requête nommé Target avec le type EntityReference est créé automatiquement. Il n’est pas nécessaire de le créer. Cette valeur est transmise à tous les plug-ins enregistrés pour ce message.

Lorsque vous sélectionnez EntityCollection, aucun paramètre ou propriété de réponse représentant la collection d’entités n’est inclus. La définition de cette liaison ajoute simplement l’exigence que l’opération soit appelée en annexe à l’ensemble d’entités lors de l’utilisation de l’API Web.

Notes

Vous pouvez utiliser ces types de liaison à la composition de votre API personnalisée, mais il n’est pas nécessaire de vous lier à une entité ou à une collection d’entités. Vous pouvez composer toutes vos API personnalisées comme Global et ajoutez les paramètres de requête ou les propriétés de réponse dont vous avez besoin pour obtenir la même fonctionnalité qu’une fonction ou une action liée.

Pour plus d′informations :

Quand créer une fonction

La propriété Is Function d’API personnalisée contrôle si l’API personnalisée est une Fonction ou une Action. Dans OData, une fonction est une opération appelée à l’aide d’une requête GET HTTP qui renvoie des données sans apporter de modifications. Avec une requête GET, tous les paramètres sont passés en tant que paramètres dans l’URL à l’appel de la fonction.

Vous pouvez plus facilement tester les requêtes GET en utilisant uniquement votre navigateur, mais la longueur de l’URL que vous pouvez envoyer est limitée à 32 Ko (32 768 caractères). Si votre API personnalisée comporte de nombreux paramètres de requête complexes qui pourraient entraîner une longueur de l’URL trop longue, il est acceptable de créer une action qui effectue la même opération en transmettant toutes les données de paramètre dans le corps à l’aide d’une requête POST.

Notes

  • Les fonctions doivent renvoyer des données. Vous devez inclure au moins une propriété de réponse pour que l’API personnalisée soit valide.
    • Une fonction qui n’inclut pas de propriété de réponse n’apparaîtra pas dans le document de service $metadata de l’API Web.
    • Si vous essayez d’utiliser une fonction non valide, vous obtiendrez une erreur 404 Not found semblable à celle-ci :
      {"error":{"code":"0x8006088a","message":"Resource not found for the segment 'your_function_name'."}}
  • Une fonction n’est pas autorisée lorsque l’option Activé pour le workflow est sélectionnée. Voir Utiliser une API personnalisée dans un workflow
  • Actuellement le Connecteur Microsoft Dataverse permet uniquement d’effectuer des actions. Si vous avez besoin que l’opération soit effectuée à l’aide de Power Automate, vous devez créer votre API personnalisée en tant qu’action.

Pour plus d′informations, consultez Utiliser les fonctions de l′API Web

Quand rendre votre API personnalisée privée

Par défaut, toute API personnalisée que vous créez est disponible pour que d’autres développeurs puissent la découvrir et l’utiliser. En tant qu’éditeur d’API personnalisées, vous avez l’obligation de maintenir les API publiques que vous créez. Vous ne devez pas supprimer votre API ou appliquer des modifications susceptibles de casser les autres consommateurs.

Si vous ne souhaitez pas prendre en charge d’autres développeurs à l’aide de votre API personnalisée, vous devez définir la propriété Is Private (IsPrivate) de l’API personnalisée sur true avant d’expédier la solution gérée contenant votre API personnalisée.

La propriété Is Private empêche l’API personnalisée d’apparaître dans le document de service $metadata et empêchera les outils de génération de code Dataverse de créer des classes pour utiliser les messages de votre API personnalisée.

Le fait de définir cette propriété ne signifie pas que d’autres développeurs ne peuvent pas utiliser votre message s’ils le connaissent et sont capables de composer une requête pour l’utiliser. La définition de la propriété Is Private est un moyen d’indiquer que vous ne prenez pas en charge d’autres développeurs utilisant votre message.

Vous voudrez peut-être garder une API personnalisée privée jusqu’à ce que vous soyez sûr de ne pas avoir besoin de la supprimer ou d’introduire une modification radicale.

Vous pouvez laisser Is Private défini sur false dans votre environnement de développement afin que vous puissiez voir la sortie dans le document de service $metadata ou générer des classes pour votre propre usage. Cependant, avant d’expédier l’API personnalisée dans votre solution gérée, vous devez définir Is Private sur true.

Pour plus d′informations :

Sécurisez votre API personnalisée avec un privilège

Définir la propriété Execute Privilege Name (ExecutePrivilegeName) de l’API personnalisée sur le nom du privilège pour l’exiger. Il n’existe actuellement aucun moyen externe à Microsoft pour que les développeurs créent de nouveaux privilèges, mais il est possible d’utiliser un privilège existant. Pour plus d’informations : Q : Puis-je créer un nouveau privilège pour mon API personnalisée ?

Utiliser un plug-in pour inclure une logique dans votre API personnalisée

Si vous ne définissez pas l’API personnalisée Type de plug-in (PluginTypeId) pour spécifier la logique de fonctionnement principale, vous pouvez toujours appeler l’API personnalisée.

Vous pouvez choisir de ne pas inclure de logique dans le plug-in parce que vous utilisez l′API personnalisée comme événement commercial. Plus d’information : Événements d’entreprise Microsoft Dataverse.

Vous ne souhaiterez peut-être pas ajouter un plug-in comme étape de test. Sans plug-in, les valeurs des paramètres de sortie renvoient les valeurs par défaut du type, car il n’y a pas de code pour les définir. Sinon, consultez Écrire un plug-in pour votre API personnalisée

Notes

Vous ne pouvez pas transmettre les données de configuration au plug-in spécifié pour la logique de l’opération principale. Il existe une solution de contournement.

Utiliser une API personnalisée dans un workflow

Définir l’API personnalisée Activé pour le workflow (WorkflowSdkStepEnabled) sur true lorsque vous devez activer l’appel d’une API personnalisée en tant qu’action de workflow. Cependant, lorsque cette option est sélectionnée, les limitations suivantes sont imposées afin que l′API personnalisée puisse être appelée dans le concepteur de workflow :

  • L’API personnalisée ne peut pas être une fonction. Is Function doit être définie sur « false ».

  • L′API personnalisée ne peut avoir que les types de paramètre de requête ou de propriété de réponse pris en charge par le workflow :

    • Boolean
    • DateTime
    • Decimal
    • EntityReference
      • EntityReference ne peut être utilisé que lorsque l′API personnalisée est liée à une entité.
    • Float
    • Integer
    • Money
    • Picklist
    • Chaîne
    • GUID

    Les types de paramètre de requête ou de propriété de réponse suivants ne peuvent pas être utilisés :

    • Entity
    • EntityCollection
    • StringArray

Appel d’API personnalisées

Une API personnalisée crée un message qui peut être appelé via l’API Web ou le Kit de développement logiciel (SDK) Dataverse pour .NET comme n’importe quelle autre opération.

Appel d’API personnalisées à partir de l’API Web

Lorsque vous effectuez des tests, vous pouvez invoquer votre API en utilisant un client API tel que Postman ou Insomnia. Suivez les étapes décrites dans Utiliser Insomnia avec l’API Web Dataverse pour configurer un environnement Insomnia qui génère le jeton d’accès nécessaire. Ensuite, suivez la procédure décrite dans Utiliser des actions API web si votre API est une action. S’il s’agit d’une fonction, suivez les étapes de Utiliser des fonctions API web.

Voici des exemples :

Action non liée

Cette action est nommée myapi_CustomUnboundAPI. Il a un seul paramètre de requête de chaîne nommé InputParameter :

POST [Organization URI]/api/data/v9.1/myapi_CustomUnboundAPI
OData-MaxVersion: 4.0
OData-Version: 4.0
Content-Type: application/json; charset=utf-8

{
  "InputParameter": "Value"
}

Fonction liée à la table

Cette fonction nommée myapi_CustomBoundAPI est liée à la table des comptes :

GET [Organization URI]/api/v9.1/accounts(ed5d4e42-850c-45b7-8b38-2677545107cc)/Microsoft.Dynamics.CRM.myapi_CustomBoundAPI()
OData-MaxVersion: 4.0
OData-Version: 4.0
Content-Type: application/json; charset=utf-8

Fonction liée à la collection de tables

Cette fonction nommée myapi_CustomEntityCollectionBoundAPI est liée à la collection de table des comptes :

GET [Organization URI]/api/v9.1/accounts/Microsoft.Dynamics.CRM.myapi_CustomEntityCollectionBoundAPI()
OData-MaxVersion: 4.0
OData-Version: 4.0
Content-Type: application/json; charset=utf-8

Pour plus d’informations :

Appel des API personnalisés depuis le SDK pour .NET

Vous pouvez choisir d’utiliser du code à liaison anticipée ou à liaison tardive pour appeler votre API personnalisée. Utilisez l’outil pac modelbuilder build pour générer des classes de demande et de réponse d’assistance pour exposer les paramètres de demande et les propriétés de réponse de votre API personnalisée. Apprenez-en davantage sur la génération de classes à liaison anticipée pour le SDK pour .NET

Pour le code à liaison tardive ou pour une API personnalisée que vous avez marquée comme privée, créez une OrganizationRequest avec le nom unique de votre API personnalisée et ajoutez des paramètres dont les noms correspondent aux noms uniques des propriétés de la demande.

Les API personnalisées liées à l’entité ont une propriété de demande implicite nommée Target qui devrait être définie sur une EntityReference de l’enregistrement sur lequel appeler l’API.

Vous pouvez accéder aux propriétés de la réponse à partir des paramètres de la réponse renvoyée.

Dans cet exemple, une API personnalisée nommée myapi_EscalateCase est lié à la table des incidents pour accepter un enregistrement comme paramètre Target avec un autre paramètre de requête de valeur de groupe d’options nommé Priority. Il a une propriété de réponse EntityReference nommée AssignedTo .

var req = new OrganizationRequest("myapi_EscalateCase")
{
  ["Target"] = new EntityReference("incident", guid),
  ["Priority"] = new OptionSetValue(1)
};

var resp = svc.Execute(req);

var newOwner = (EntityReference) resp["AssignedTo"];

Pour plus d’informations : Utiliser des messages avec le SDK pour .NET.

Appeler l’API personnalisée en tant qu’opération d’arrière-plan

La logique à exécuter à l’aide d’une opération en arrière-plan doit être définie en tant qu’API personnalisée. Plus d’informations : Opérations en arrière-plan (Aperçu)

Écrire un plug-in pour votre API personnalisée

L’écriture d’un plug-in pour implémenter l’opération principale de votre API personnalisée n’est pas différente de l’écriture d’un autre plug-in, sauf que vous n’utilisez pas Plug-in Registration Tool pour définir une étape spécifique et vous ne pouvez pas spécifier les données de configuration à transmettre au plug-in.

Vous devez connaître les informations suivantes :

  • Nom du message
  • Noms et types des paramètres de demande et des propriétés de réponse.

Les valeurs du paramètre de requête sont incluses dans les InputParameters.

Vous devez définir les valeurs des propriétés de réponse dans les OutputParameters.

Le code qui suit est un plug-in simple qui inverse les caractères de StringParameter et renvoie le résultat en tant que StringProperty.

using System;
using System.Linq;
using System.ServiceModel;
using Microsoft.Xrm.Sdk;

namespace CustomAPIExamples
{
    public class Sample_CustomAPIExample : IPlugin
    {
        public void Execute(IServiceProvider serviceProvider)
        {
            // Obtain the tracing service
            ITracingService tracingService =
            (ITracingService)serviceProvider.GetService(typeof(ITracingService));

            // Obtain the execution context from the service provider.  
            IPluginExecutionContext context = (IPluginExecutionContext)
                serviceProvider.GetService(typeof(IPluginExecutionContext));

            if (context.MessageName.Equals("sample_CustomAPIExample") && context.Stage.Equals(30)) {

                try
                {
                    string input = (string)context.InputParameters["StringParameter"];
                    
                    if (!string.IsNullOrEmpty(input)) {
                        //Simply reversing the characters of the string
                        context.OutputParameters["StringProperty"] = new string(input.Reverse().ToArray());
                    }
                }
                catch (Exception ex)
                {
                    tracingService.Trace("Sample_CustomAPIExample: {0}", ex.ToString());
                    throw new InvalidPluginExecutionException("An error occurred in Sample_CustomAPIExample.", ex);
                }
            }
            else
            {
                tracingService.Trace("Sample_CustomAPIExample plug-in is not associated with the expected message or is not registered for the main operation.");
            }
        }
    }
}

Pour plus d’informations sur l’écriture de plug-ins, consultez la rubrique Didacticiel : Écrire et enregistrer un plug-in. Vous devez inscrire l’assembly, mais vous n’avez pas besoin d’inscrire d’étape. Plus d’informations : Utiliser un plug-in pour inclure une logique dans votre API personnalisée

Voir l’exemple Exemple : API personnalisée IsSystemAdmin

Après avoir inscrit l’assembly, assurez-vous d’ajouter l’assembly et tous les types à votre solution.

Valeurs de l’étiquette localisée

Les API personnalisées ont des étiquettes localisables. Vous pouvez localiser les valeurs d’étiquette en suivant les étapes décrites ici : Traduire du texte localisable pour les applications pilotées par modèle et Traduire les étiquettes et afficher les chaînes.

Ce processus implique l’exportation d’un fichier qui contient les valeurs en langue de base et qui comprend une colonne pour chaque langue activée. Vous pouvez ensuite modifier les valeurs dans Excel. Une fois le processus d’importation des traductions terminé, les étiquettes sont incluses dans votre solution.

L’exemple suivant montre la modification de la feuille de calcul Excel pour ajouter des traductions japonaises pour les valeurs en anglais.

Illustre comment les étiquettes sont localisées.

Conseil

Si vous modifiez les fichiers de solution pour créer vos API personnalisées, vous pouvez fournir directement les étiquettes localisées. Pour plus d’informations : Fournir des étiquettes localisées avec la solution

Définition des valeurs localisées

Si vous préférez définir des étiquettes localisées dans le code plutôt que d’utiliser le processus manuel décrit ci-dessus, vous pouvez utiliser le message SetLocLabels avec soit l’API Web Action SetLocLabels, soit le SDK pour .NET SetLocLabelsRequest.

L’exemple suivant montre comment utiliser l’API Web pour définir les étiquettes localisées pour la propriété displayname d’une API personnalisée.

Demande :

POST [Organization URI]/api/data/v9.1/SetLocLabels HTTP/1.1
Accept: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
Content-Type: application/json

{
    "EntityMoniker": {
        "@odata.type": "Microsoft.Dynamics.CRM.customapi",
        "customapiid": "86bcd12e-2f30-eb11-a813-000d3a122b89"
    },
    "AttributeName": "displayname",
    "Labels": [
        {
            "Label": "例え",
            "LanguageCode": 1041
        },
        {
            "Label": "Beispiel",
            "LanguageCode": 1031
        },
        {
            "Label": "ejemplo",
            "LanguageCode": 1034
        }
    ]
}

Réponse :

HTTP/1.1 204 No Content

Récupération des valeurs localisées

Pour récupérer les étiquettes localisées, utilisez le message RetrieveLocLabels, soit avec la fonction RetrieveLocLabels de l’API Web ou la classe RetrieveLocLabelsRequest du SDK pour .NET.

L’exemple suivant montre l’utilisation de la fonction RetrieveLocLabels pour récupérer les étiquettes pour la propriété displayname d’une API personnalisée avec le customapiid 88602189-183d-4584-ba4b-8b60f0f5b89f

Demande :

GET [Organization URI]/api/data/v9.1/RetrieveLocLabels(EntityMoniker=@p1,AttributeName=@p2,IncludeUnpublished=@p3)?
@p1={'@odata.id':'customapis(88602189-183d-4584-ba4b-8b60f0f5b89f)'}&
@p2='displayname'&
@p3=false HTTP/1.1

Réponse :

HTTP/1.1 200 OK
OData-Version: 4.0

{
    "@odata.context": "[Organization URI]/api/data/v9.1/$metadata#Microsoft.Dynamics.CRM.RetrieveLocLabelsResponse",
    "Label": {
        "LocalizedLabels": [
            {
                "Label": "Custom API Example",
                "LanguageCode": 1033,
                "IsManaged": null,
                "MetadataId": null,
                "HasChanged": null
            },
            {
                "Label": "カスタムAPIの例",
                "LanguageCode": 1041,
                "IsManaged": null,
                "MetadataId": null,
                "HasChanged": null
            }
        ],
        "UserLocalizedLabel": {
            "Label": "Custom API Example",
            "LanguageCode": 1033,
            "IsManaged": null,
            "MetadataId": null,
            "HasChanged": null
        }
    }
}

Questions fréquentes (FAQ)

Voici quelques questions que vous pourriez avoir :

Q : Puis-je créer un nouveau privilège pour mon API personnalisée ?

R : Alors que l’API personnalisée a une propriété Nom de privilège d’exécution (ExecutePrivilegeName), il n’existe actuellement aucun moyen pris en charge pour vous de créer un nouveau privilège uniquement pour cette API. Cette capacité est prévue pour une version ultérieure. En attendant, il existe deux options :

  • Vous pouvez utiliser une valeur Privilege.Name existante.
  • Vous pouvez créer une entité personnalisée et utiliser l’un des privilèges créés pour cette entité. Par exemple, si vous créez une entité nommée new_myaction, des privilèges pour les opérations CRUD sont générés pour elle. Par exemple : prvCreatenew_myaction. Vous devez inclure cette entité personnalisée avec la solution qui comprend l’API personnalisée.

Q : Puis-je activer ou désactiver les enregistrements de l’API personnalisée ?

R : Vous ne pouvez pas. Bien que ces enregistrements aient les colonnes Statut et Raison du statut trouvées sur la plupart des tables Microsoft Dataverse. La définition des valeurs de ces colonnes n’a aucun impact sur la disponibilité de l’API personnalisée, les paramètres de demande ou les propriétés de réponse.

Q : Comment puis-je utiliser mes messages privés s’ils ne sont pas inclus dans le document $metadata service de l’API web ?

R : Vos messages privés fonctionnent indépendamment du fait qu’ils soient publiés dans l’API Web Document $metadata CSDL ou pas. Pendant que vous développez votre solution, vous pouvez laisser la valeur IsPrivate définie sur false. De cette façon, vous pouvez vous référer à la lise $metadata et utiliser des outils de génération de code qui dépendent de ces données. Cependant, vous devez définir la valeur CustomAPI.IsPrivate sur true avant d’expédier votre solution à d’autres utilisateurs. Si vous décidez plus tard que vous souhaitez prendre en charge d’autres applications pour utiliser le message, vous pouvez modifier la valeur CustomAPI.IsPrivate sur false.

Pour plus d’informations :

Problèmes connus avec les API personnalisées

Les API personnalisées sont désormais généralement disponibles, mais il existe encore des fonctionnalités connexes que nous prévoyons de changer.

Impossible d’utiliser le profileur pour le débogage

Pour déboguer à l’aide de l’outil Plug-in Registration Tool et de la solution de profileur de plug-in, vous devez être capable de sélectionner une étape de plug-in spécifique. L’implémentation de la scène principale pour le plug-in n’est actuellement pas disponible dans l’outil d’enregistrement de plug-in.

Solution de contournement : Enregistrez le type de plug-in à l’étape PostOperation du message créé pour l’API personnalisée.

Les messages privés ne peuvent pas être utilisés dans les plug-ins

Si vous définissez votre API personnalisée comme étant privée, vous ne pouvez pas utiliser ce message dans un plug-in. Pour plus d’informations, voir Messages privés

La configuration sécurisée et non sécurisée ne peut pas être définie pour le plug-in de l’opération principale de l’API personnalisée

Vous ne pouvez pas transmettre la configuration sécurisée et non sécurisée au plug-in de l’opération principale pour l’API personnalisée.

Solution de contournement : au lieu d’associer le plug-in à l’API personnalisée, enregistrez le plug-in à l’étape PostOperation à l’aide de Plug-in Registration Tool (PRT). De cette façon, vous pouvez spécifier les données de configuration à l’étape du plug-in PostOperation, comme vous le faites habituellement.

Pour utiliser cette solution de contournement, vous devez configurer votre API personnalisée pour activer les types d’étapes de traitement personnalisés Synchrones et asynchrones lorsque vous créez l’API personnalisée. Vous ne pouvez pas modifier ce paramètre une fois que vous l’avez créé.

Étapes suivantes

Créez une API personnalisée à l’aide de l’outil d’enregistrement de plug-in

Voir aussi

Créer et utiliser des API personnalisées
Créer une API personnalisée avec du code
Créer une API personnalisée avec des fichiers de solution
Créer vos propres messages
Tables d’API personnalisées

Notes

Pouvez-vous nous indiquer vos préférences de langue pour la documentation ? Répondez à un court questionnaire. (veuillez noter que ce questionnaire est en anglais)

Le questionnaire vous prendra environ sept minutes. Aucune donnée personnelle n’est collectée (déclaration de confidentialité).