Gérer les champs utilisateur personnalisés

Vous pouvez définir des champs personnalisés pour les utilisateurs de votre domaine en ajoutant des schémas d'utilisateur personnalisés au domaine. Vous pouvez utiliser ces champs pour stocker des informations telles que les projets sur lesquels vos utilisateurs travaillent, leur emplacement physique, leur date d'embauche ou tout autre élément adapté à vos besoins commerciaux.

Pour commencer, créez un ou plusieurs schémas afin de définir les champs personnalisés qui conviennent à votre domaine. Vous pouvez spécifier un certain nombre d'attributs, tels que le nom du champ, le type (chaîne, booléen, entier, etc.), s'il s'agit d'une valeur unique ou multiple, et si ses valeurs sont visibles par tous les utilisateurs de votre domaine ou uniquement par les administrateurs et l'utilisateur associé.

Une fois qu'un schéma est défini, les champs personnalisés se comportent comme des champs standards. Vous pouvez les définir lorsque vous mettez à jour des utilisateurs dans votre domaine, les récupérer avec users.get et users.list, et également rechercher des champs personnalisés.

Définir des champs personnalisés dans un profil utilisateur

Pour mettre à jour ou créer un schéma, créez une customSchemaspropriété et ajoutez-la à la ressource utilisateur. Dans la propriété customSchemas, les champs personnalisés sont regroupés par schéma au format JSON standard :

"customSchemas": {
  "schema1": {
    "field1": "value1",
    "field2": [
      { "value": "value2a" },
      { "value": "value2b" },
      ...
    ],
    ...
  },
  "schema2": {
    "field3": "value3",
    ...
  },
  ...
}

Les champs personnalisés à valeur unique sont définis en tant que paires clé/valeur simples, comme "field1": "value1". Les champs personnalisés à valeurs multiples sont définis en tant que tableaux d'objets, comme les champs standards à valeurs multiples de l'API tels que addresses et phones. Ces objets de valeur sont compatibles avec les clés suivantes :

Clés
value Valeur à stocker, obligatoire.
type Type de la valeur, facultatif. Les valeurs possibles du champ sont les suivantes :
  • custom
  • home
  • other
  • work
customType Type personnalisé de la valeur, facultatif. Doit être utilisé lorsque type est défini sur custom.

Si un champ personnalisé d'un schéma n'est pas spécifié lors de la mise à jour, il reste inchangé. Si un schéma lui-même n'est pas spécifié dans customFields lors de la mise à jour, tous les champs personnalisés de ce schéma restent inchangés. Pour supprimer un champ personnalisé ou un schéma personnalisé d'un profil, vous devez le définir explicitement sur null :

"schema1": {
  "field1": null
}

Requête JSON

L'appel de l'exemple ci-dessous met à jour un utilisateur et définit des valeurs pour le schéma personnalisé employmentData :

PATCH https://admin.googleapis.com/admin/directory/v1/users/liz@example.com
{
  "customSchemas": {
    "employmentData": {
      "employeeNumber": "123456789",
      "jobFamily": "Engineering",
      "location": "Atlanta",
      "jobLevel": 8,
      "projects": [
        { "value": "GeneGnome" },
        { "value": "Panopticon", "type": "work" },
        { "value": "MegaGene", "type": "custom", "customType": "secret" }
      ]
    }
  }
}

Lire des champs personnalisés dans un profil utilisateur

Vous pouvez récupérer des champs personnalisés dans un profil utilisateur en définissant le projection paramètre d'une users.get ou users.list requête sur custom ou full.

Rechercher des champs personnalisés dans un profil utilisateur

Vous pouvez effectuer une recherche dans des champs personnalisés à l'aide du query paramètre dans une users.list requête. Vous demandez le champ personnalisé avec une syntaxe schemaName.fieldName. Exemple :

employmentData.projects:"GeneGnome"

renvoie tous les employés qui travaillent sur le projet GeneGnome. La requête

employmentData.location="Atlanta" employmentData.jobLevel>=7

renvoie tous les employés d'Atlanta dont le niveau de poste est supérieur à 7. Pour en savoir plus, consultez Rechercher des utilisateurs.

Créer un schéma d'utilisateur personnalisé

Un schéma d'utilisateur personnalisé peut être ajouté à tous les domaines de votre compte Google Workspace. Pour créer un schéma d'utilisateur personnalisé dans vos domaines, utilisez la requête POST suivante et incluez l'autorisation décrite dans la section portant sur les requêtes d'autorisation. Pour en savoir plus sur les propriétés de la chaîne de requête, consultez la documentation de référence de l'API.

POST https://admin.googleapis.com/admin/directory/v1/customer/<var>my_customer or customerId</var>/schemas

Toutes les requêtes de création nécessitent que vous fournissiez les informations nécessaires pour les traiter. Si vous utilisez des bibliothèques clientes, elles convertissent les objets de données du langage de votre choix en objets de données au format JSON.

Requête JSON

L'exemple suivant montre une requête permettant de créer un schéma personnalisé. Pour obtenir la liste complète des propriétés de requête et de réponse, consultez la documentation de référence de l'API.

{
  "schemaName": "employmentData",
  "fields": [
    {
      "fieldName": "EmployeeNumber",
      "fieldType": "STRING",
      "multiValued": "false"
    },
    {
      "fieldName": "JobFamily",
      "fieldType": "STRING",
      "multiValued": "false"
    }
  ]
}

Une réponse positive renvoie un code d'état HTTP 201, ainsi que les propriétés du nouveau schéma personnalisé.

Limites des schémas personnalisés

  • Le nombre maximal de schémas personnalisés autorisés dans un compte est de 100.
  • Le nombre maximal de champs personnalisés autorisés dans un compte est de 100.
  • Le nombre maximal de caractères autorisés dans un champ string pour un champ personnalisé à valeur unique est de 500. Pour les champs personnalisés à valeurs multiples, le nombre d'éléments autorisés dépend de la taille des valeurs attribuées. Par exemple, vous pouvez ajouter 150 valeurs de 100 caractères chacune ou 50 valeurs de 500 caractères chacune.
  • Les caractères autorisés dans les schémas personnalisés et les noms de champs sont les caractères alphanumériques, les traits de soulignement (_) et les traits d'union (-).
  • Vous ne pouvez pas modifier le type d'un champ.
  • Un champ à valeur unique peut être transformé en champ à valeurs multiples, mais l'opération inverse n'est pas autorisée.
  • Vous ne pouvez pas renommer les schémas ou les champs personnalisés.

Mettre à jour un schéma d'utilisateur personnalisé

Pour mettre à jour un schéma personnalisé, utilisez la requête PUT suivante et incluez l' autorisation décrite dans la section portant sur les requêtes d' autorisation. La schemaKey peut être le nom du schéma ou l'id unique du schéma. Pour en savoir plus sur les propriétés de requête et de réponse, consultez la documentation de référence de l'API.

PUT https://admin.googleapis.com/admin/directory/v1/customer/my_customer or customerId/schemas/schemaKey

Requête JSON

Dans l'exemple suivant, le schéma employmentData contenait un champ JobFamily lors de sa création. La requête met à jour employmentData pour ne contenir qu'un champ EmployeeNumber :

PUT https://admin.googleapis.com/admin/directory/v1/customer/my_customer/schemas/employmentData
{
  "kind": "admin#directory#schema",
  "schemaId": "dKaYmUwmSZy5lreXyh75hQ==",
  "etag": "\"St7vIdePbbDsQUvvrssynd-6JLg/PKg63GvWb7bnVSNRomd_O-Vi66w\"",
  "schemaName": "employmentData",
  "fields": [
    {
      "kind": "admin#directory#schema#fieldspec",
      "fieldId": "21_B4iQIRY-dIFGFgAX-Og==",
      "etag": "\"St7vIdePbbDsQUvvrssynd-6JLg/LZxiGaz6_N4R40OpKbDhOcy2qiE\"",
      "fieldType": "STRING",
      "fieldName": "EmployeeNumber",
      "multiValued": "false"
    }
  ]
}

Toutes les requêtes de mise à jour nécessitent que vous fournissiez les informations nécessaires pour les traiter.

Une réponse positive renvoie un code d'état HTTP 200, ainsi que la ressource de schéma mise à jour.

Récupérer un schéma d'utilisateur personnalisé

Pour récupérer un schéma personnalisé, utilisez la requête GET suivante et incluez l' autorisation décrite dans la section portant sur les requêtes d' autorisation. La schemaKey peut être le nom du schéma ou l'id unique du schéma. Pour en savoir plus sur les propriétés de requête et de réponse, consultez la documentation de référence de l'API.

GET https://admin.googleapis.com/admin/directory/v1/customer/my_customer or customerId/schemas/schemaKey

Une réponse positive renvoie un code d'état HTTP 200, ainsi que les propriétés du schéma personnalisé.

{
  "kind": "admin#directory#schema",
  "schemaId": "dKaYmUwmSZy5lreXyh75hQ==",
  "etag": "\"KYnPjBPqr8knK6v7rpxly9BhNeY/PKg63GvWb7bnVSNRomd_O-Vi66w\"",
  "schemaName": "employmentData",
  "fields": [
    {
      "kind": "admin#directory#schema#fieldspec",
      "fieldId": "21_B4iQIRY-dIFGFgAX-Og==",
      "etag": "\"KYnPjBPqr8knK6v7rpxly9BhNeY/LZxiGaz6_N4R40OpKbDhOcy2qiE\"",
      "fieldType": "STRING",
      "fieldName": "EmployeeNumber"
    },
    {
      "kind": "admin#directory#schema#fieldspec",
      "fieldId": "ZKy0QtoMRy2QlM-4sAsPtQ==",
      "etag": "\"KYnPjBPqr8knK6v7rpxly9BhNeY/jEULI-ZiqywQIHXgc8evEcTE4Cc\"",
      "fieldType": "STRING",
      "fieldName": "JobFamily"
    }
  ]
}

Récupérer tous les schémas d'utilisateur personnalisés

Pour récupérer tous les schémas personnalisés du même compte, utilisez la GET requête suivante et incluez l'autorisation décrite dans la section portant sur lesrequêtes d'autorisation.Pour en savoir plus sur les propriétés de requête et de réponse, consultez la documentation de référence de l'API.

GET https://admin.googleapis.com/admin/directory/v1/customer/my_customer or customerId/schemas

Une réponse positive renvoie un code d'état HTTP 200, ainsi que les schémas personnalisés du compte.

{
  "kind": "admin#directory#schemas",
  "etag": "\"KYnPjBPqr8knK6v7rpxly9BhNeY/iJ1eWn5AKuR-xTdwH_2IBlvSSKo\"",
  "schemas": [
    {
      "kind": "admin#directory#schema",
      "schemaId": "dKaYmUwmSZy5lreXyh75hQ==",
      "etag": "\"KYnPjBPqr8knK6v7rpxly9BhNeY/PKg63GvWb7bnVSNRomd_O-Vi66w\"",
      "schemaName": "employmentData",
      "fields": [
        {
          "kind": "admin#directory#schema#fieldspec",
          "fieldId": "21_B4iQIRY-dIFGFgAX-Og==",
          "etag": "\"KYnPjBPqr8knK6v7rpxly9BhNeY/LZxiGaz6_N4R40OpKbDhOcy2qiE\"",
          "fieldType": "STRING",
          "fieldName": "EmployeeNumber"
        },
        {
          &quot;kind": "admin#directory#schema#fieldspec",
          "fieldId": "ZKy0QtoMRy2QlM-4sAsPtQ==",
          "etag": "\"KYnPjBPqr8knK6v7rpxly9BhNeY/jEULI-ZiqywQIHXgc8evEcTE4Cc\"",
          "fieldType": "STRING",
          "fieldName": "JobFamily"
        }
      ]
    }
  ]
}