---
sourceDocument: Référence de l’API Xanadu
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/fr-FR/xanadu/api-reference

 Release :

    - xanadu

ft:locale :

    - fr-FR

ft:publication_title :

    - Référence de l’API Xanadu

ft:clusterId :

    - crapiref

bundleId :

    - crapiref

workflow :

    - Creator


---

# Créer un schéma GraphQL

# Créer un schéma GraphQL {#ariaid-title1}

* Rversion finale: Xanadu
* 
* Mis à jour 1 août 2024
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 5 minutes de lecture

Créez un schéma GraphQL pour rendre les données disponibles aux requêtes GraphQL.

## Avant de commencer

Rôle requis : graphql_schema_admin ou admin

## Procédure

1. Accédez à la ToutServices web du systèmeGraphQLAPI GraphQL.
2. Sélectionnez Nouveau.
3. Renseignez les champs suivants.  
   {#build-graphql-scripted-schema__table_d5n_3vc_qkb__entry__2}

   | Champ | Description |
   |-|-|
   | Nom | Nom du schéma. |
   | Espace de noms du schéma | Doit être unique dans le nom de l'application. |
   | Application | Application en lecture seule dont le schéma fait partie. |
   | Espace de noms de l'application | Lecture seule. Fonctionne avec l'espace de noms Schema pour éviter les conflits avec les schémas portant le même nom. |
   | Actif | Option permettant d'activer ou de désactiver le schéma GraphQL. |
   | Schéma | Définition de schéma qui adhère au format SDL GraphQL. La syntaxe GraphQL doit être valide. Dans le cas contraire, des messages d'erreur s'affichent lors de l'enregistrement pour indiquer le problème de syntaxe. Remarque : Les fonctionnalités GraphQL suivantes ne sont pas prises en charge : * Opérations d'abonnement * Types scalaires personnalisés {#build-graphql-scripted-schema__ul_y4g_h3v_flb} |
   [ ]

   {#build-graphql-scripted-schema__table_d5n_3vc_qkb}

   Vous pouvez utiliser cette directive dans votre schéma :

   `@source` : Mappe un champ GraphQL à la valeur d'une propriété de l'objet parent. Si le champ possède un script de résolveur distinct, le système utilise l'enregistrement qu'il résout à la place de l'objet parent.  
   Cet exemple définit un type d'objet Incident dans le schéma et utilise un script de résolveur pour mapper le type à un GlideRecord à partir de la table Incident. L'utilisation de la directive `@source` mappe les champs du type d'incident à la `valeur` ou `au display_value` dans le GlideRecord d'incident.  

       type Incident {
           id: String @source(value: "sys_id.value")
           active: Boolean @source(value: "active.display_value")
           state: String @source(value: "state.display_value")    
           priority: String @source(value: "priority.display_value")
           severity: String
           description: DisplayableString
           resolvedBy: User @source(value: "resolved_by.value")
           openedBy: User @source(value: "opened_by.value")
           child_incidents: String
           opened_at: String
           resolved_at: String
           closed_at: String
           work_notes: String    
           comments: String @source(value: "comments.display_value")
           parent_incident: String
       }

4. Dans la section Sécurité , renseignez les champs.  
   {#build-graphql-scripted-schema__table_ql2_rlb_5kb__entry__2}

   | Champ | Description |
   |-|-|
   | Requiert une authentification | Sélectionnez cette option pour exiger une authentification afin d'accéder au schéma. Si vous désactivez cette option, le schéma est disponible publiquement. |
   | Requiert une autorisation d'ACL | Sélectionnez cette option pour exiger l'autorisation ACL de l'ensemble de l'API. Dans le champ ACL, sélectionnez ACL de type GraphQL. Pour utiliser l'autorisation ACL uniquement pour des chemins spécifiques, laissez cette option décochée et spécifiez le niveau par rapport auquel évaluer les ACL dans le champ de profondeur ACL de chemin. |
   | Exige un rôle SNC interne | Sélectionnez cette option si le schéma nécessite le rôle interne SNC. Cette option s'affiche uniquement si le module d'extension Explicit Roles (com.glide.explicit_roles) est activé. |
   | Profondeur ACL du chemin | Spécifiez le niveau de l'API GraphQL auquel appliquer les ACL. Définir la profondeur du chemin d'accès sur 3 ou moins utilise moins de ressources et permet de renvoyer des réponses de requête. Pour spécifier les ACL à utiliser pour le chemin d'accès, vous devez créer un ACL de type GraphQL et ajouter le chemin d'accès exact de l'API en commençant par l'espace de noms du schéma dans le champ Nom . Par exemple : /\<planet\>/\<findAll\>/\<name\>. Les caractères génériques ne sont pas pris en charge. Pour plus d'informations, consultez [Configure an ACL rule](https://www.servicenow.com/docs/access?context=t_CreateAnACLRule&version=xanadu&pubname=xanadu-platform-security&ft:locale=en-US). Remarque : Le champ ACL s'applique à l'ensemble de l'API et est indépendant des ACL appliquées à des chemins spécifiques. |
   | ACL | Sélectionnez les ACL de type GraphQL pour vérifier les requêtes entrantes. Les ACL que vous sélectionnez s'appliquent à l'ensemble de l'API. Cette option s'affiche uniquement si l'option Requiert une autorisation d'ACL est sélectionnée. |
   [ ]

   {#build-graphql-scripted-schema__table_ql2_rlb_5kb}  
   Remarque :  
   L'API renvoie des messages d'erreur clairs aux utilisateurs qui n'ont pas accès à un schéma ou qui ne sont pas authentifiés lorsque l'API nécessite une authentification pour y accéder.
5. Enregistrez le formulaire.
6. **Facultatif :** Créez un script de résolveur pour définir la valeur renvoyée par le schéma lorsqu'un composant interroge un champ.  
   Si vous ne définissez pas de programme de résolution pour un champ, la requête renvoie toute valeur de champ correspondante à partir du type d'objet parent. Par exemple, supposons que votre schéma comporte un type d'objet Incident avec un champ de notes de travail. Le type d'objet Incident dispose d'un résolveur qui est mappé à un GlideRecord à partir de la table Incident. Si vous ne créez pas de mappage de résolveur pour le champ Notes de travail, le système recherche un champ Notes de travail dans la source de données de l'objet parent, qui est le GlideRecord de la table Incident, et affecte la valeur associée.
   1. Sélectionnez l'onglet Programmes de résolution scriptés GraphQL et sélectionnez Nouveau.
   2. Renseignez le formulaire.  
      {#build-graphql-scripted-schema__table_lzp_tpd_qkb__entry__2}

      | Champ | Description |
      |-|-|
      | Nom | Nom du programme de résolution. |
      | Schéma | Espace de noms de schéma en lecture seule. |
      | Application | Application en lecture seule dont le schéma fait partie. |
      | Script | Définissez la valeur renvoyée lorsque le champ est interrogé. Fonctions disponibles sur l'objet env global : * getArguments() : renvoie les arguments du champ précédent. * getSource() : renvoie l'objet parent. {#build-graphql-scripted-schema__ul_stm_srx_glb} Ce script a accès à GlideRecord. |
      [ ]

      {#build-graphql-scripted-schema__table_lzp_tpd_qkb}  
      Cet exemple renvoie un enregistrement de la table Utilisateur lorsque le champ associé est interrogé :  

          (function process(/*ResolverEnvironment*/ env) {

              var userid = env.getArguments().id != null ? env.getArguments().id : env.getSource();
              var now_GR = new GlideRecord('sys_user');
              gr.addQuery('sys_id', userid);
              gr.queryO;
              return gr;

          })(env);

   3. Sélectionnez Soumettre.
   {#build-graphql-scripted-schema__substeps_zn1_tjv_flb}
7. **Facultatif :** Définissez les résolveurs de types pour votre schéma afin de résoudre les interfaces et les unions en types concrets.
   1. Sélectionnez l'onglet BatchQL scripted Type Resolvevers, puis sélectionnez Nouveau.
   2. Renseignez le formulaire.  
      {#build-graphql-scripted-schema__table_tg2_r4d_qkb__entry__2}

      | Champ | Description |
      |-|-|
      | Schéma | Espace de noms de schéma en lecture seule. |
      | Type | Le type d'interface ou d'union défini dans le schéma. |
      | Application | Application en lecture seule dont le schéma fait partie. |
      | Script | Définissez la valeur retournée pour les types d'union et d'interface. Fonctions disponibles sur l'objet env global : * getArguments() : renvoie les arguments du champ précédent. * getObject() : renvoie l'objet parent. * getTypeName() : renvoie le nom de l'interface ou du type d'union. {#build-graphql-scripted-schema__ul_chl_5rx_glb} Ce script a accès à GlideRecord. |
      [ ]

      {#build-graphql-scripted-schema__table_tg2_r4d_qkb}
   3. Sélectionnez Soumettre.
   {#build-graphql-scripted-schema__substeps_qfm_zjv_flb}
8. **Facultatif :** Mappez les enregistrements du programme de résolution et du résolveur de type aux champs du schéma.  
   Ce mappage indique au système la valeur à renvoyer lorsqu'un composant interroge un champ.
   1. Sélectionnez l'onglet Mappages du programme de résolution scripté GraphQL et sélectionnez Nouveau.
   2. Renseignez le formulaire.  
      {#build-graphql-scripted-schema__table_esl_pqd_qkb__entry__2}

      | Champ | Description |
      |-|-|
      | Chemin d'accès | Chemin d'accès au champ dans le schéma que vous souhaitez mapper. |
      | Programme de résolution | Résolveur à utiliser pour définir les données retournées par le champ. |
      | Application | Application en lecture seule dont le schéma fait partie. |
      | Schéma | Espace de noms de schéma en lecture seule. |
      [ ]

      {#build-graphql-scripted-schema__table_esl_pqd_qkb}
   3. Sélectionnez Soumettre.
   {#build-graphql-scripted-schema__substeps_ajw_jkv_flb}

