> ## Documentation Index
> Fetch the complete documentation index at: https://smartac-justin-client-exports.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Contenu personnalisé

> Affichez du contenu personnalisé selon l'authentification, l'appartenance aux groupes et des variables personnalisées pour adapter la doc à chaque audience.

<Note>
  La personnalisation nécessite une [authentification](/fr/deploy/authentication-setup) configurée avec OAuth ou JWT.
</Note>

Personnalisez le contenu pour vos utilisateurs lorsqu’ils se connectent à votre site de documentation. Vous pouvez préremplir des clés d’API, afficher du contenu spécifique au plan ou au rôle d’un utilisateur et filtrer le contenu de la référence d’API en fonction de leur groupe d’appartenance.

<div id="api-key-prefilling">
  ## Préremplissage de la clé d’API
</div>

Renseignez automatiquement les champs du bac à sable d’API avec des valeurs propres à chaque utilisateur en renvoyant des noms de champs correspondants dans vos données utilisateur. Incluez ces valeurs dans le champ `apiPlaygroundInputs` de vos [données utilisateur](/fr/deploy/authentication-setup#user-data-format).

```json theme={null}
{
  "apiPlaygroundInputs": {
    "header": { "X-API-Key": "user_api_key_123" },
    "server": { "subdomain": "acme" }
  }
}
```

Les noms de champ doivent correspondre aux noms définis dans votre spécification OpenAPI. Seules les valeurs correspondant au schéma de sécurité du point de terminaison en cours sont prises en compte.

<div id="dynamic-mdx-content">
  ## Contenu MDX dynamique
</div>

Affichez du contenu en fonction des informations utilisateur comme le nom, l'abonnement ou l'organisation grâce à la variable `user` dans vos pages MDX. Incluez des données personnalisées dans le champ `content` de vos [données utilisateur](/fr/deploy/authentication-setup#user-data-format).

```json theme={null}
{
  "content": {
    "firstName": "Jane",
    "company": "Acme Corp",
    "plan": "Enterprise"
  }
}
```

Utilisez ces valeurs dans votre MDX.

```mdx theme={null}
Bienvenue, {user.firstName} ! Votre forfait {user.plan} comprend 100 places pour les membres de votre organisation {user.company}.
```

Pour effectuer un rendu conditionnel en fonction des données utilisateur, utilisez la variable `user` dans les composants JSX.

```jsx theme={null}
{
  user.plan === 'enterprise'
    ? <>Contactez votre administrateur pour activer cette fonctionnalité.</>
    : <>Consultez <a href="https://yoursite.com/pricing">nos tarifs</a> pour plus d'informations sur la mise à niveau.</>
}
```

<Note>
  La variable `user` est un objet vide pour les utilisateurs déconnectés. Utilisez l’opérateur d’enchaînement optionnel sur tous les champs de `user` pour éviter les erreurs. Par exemple, `{user.org?.plan}` au lieu de `{user.org.plan}`.
</Note>

<div id="page-visibility">
  ## Visibilité des pages
</div>

Restreignez l’accès aux pages à des groupes d’utilisateurs spécifiques en ajoutant `groups` au frontmatter de la page. Les utilisateurs doivent appartenir à au moins un des groupes énumérés pour accéder à la page.

```mdx theme={null}
---
title: "Paramètres d'administration"
groups: ["admin"]
---
```

Pour plus de détails sur la façon dont les groupes interagissent avec les pages publiques, voir [Contrôler l'accès avec des groupes](/fr/deploy/authentication-setup#control-access-with-groups).

<div id="openapi-content-filtering">
  ## Filtrage du contenu OpenAPI
</div>

Filtrez le contenu de la référence d’API en fonction des groupes d’utilisateurs à l’aide de l’extension `x-mint` dans votre spécification OpenAPI. Vous pouvez filtrer des points de terminaison entiers, des propriétés de schéma individuelles, des variantes `oneOf` et des valeurs d’énumération.

<div id="filter-endpoints">
  ### Filtrer les endpoints
</div>

Ajoutez `x-mint.groups` à une opération ou à un chemin pour restreindre la page de l’endpoint à des groupes d’utilisateurs spécifiques. Les utilisateurs qui ne font pas partie des groupes indiqués ne verront pas l’endpoint dans la navigation et ne pourront pas accéder à sa page.

<CodeGroup>
  ```json {6-8} Opération restreinte theme={null}
  {
    "paths": {
      "/billing": {
        "get": {
          "summary": "Récupérer les détails de facturation",
          "x-mint": {
            "groups": ["admin", "billing"]
          },
          "responses": {
            "200": {
              "description": "Détails de facturation"
            }
          }
        }
      }
    }
  }
  ```

  ```json {3-5} Chemin restreint theme={null}
  {
    "paths": {
      "x-mint": {
        "groups": ["admin", "billing"]
      },
      "/billing": {
        "get": {
          "summary": "Récupérer les détails de facturation",
        }
      },
      "/users": {
        "get": {
          "summary": "Récupérer les détails de l’utilisateur",
        }
      }
    }
  }
  ```
</CodeGroup>

<div id="filter-schema-properties">
  ### Filtrer les propriétés du schéma
</div>

Ajoutez `x-mint.groups` aux propriétés individuelles des corps de requête, des paramètres ou des réponses. Les propriétés sans `x-mint.groups` restent visibles pour tous les utilisateurs.

```json {11-13} Restricted property theme={null}
{
  "components": {
    "schemas": {
      "User": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "internal_id": {
            "type": "string",
            "x-mint": {
              "groups": ["admin"]
            }
          }
        }
      }
    }
  }
}
```

Dans cet exemple, tous les utilisateurs peuvent voir la propriété `name`. Seuls les utilisateurs du groupe `admin` peuvent voir la propriété `internal_id`.

<div id="filter-oneof-variants">
  ### Filtrer les variantes oneOf
</div>

Ajoutez `x-mint.groups` à chaque option `oneOf` pour restreindre les variantes de schéma qu’un utilisateur peut voir.

```json {7-9} Restricted oneOf variant theme={null}
{
  "schema": {
    "oneOf": [
      {
        "title": "Enterprise config",
        "type": "object",
        "x-mint": {
          "groups": ["enterprise"]
        },
        "properties": {
          "sso_enabled": { "type": "boolean" }
        }
      },
      {
        "title": "Standard config",
        "type": "object",
        "properties": {
          "notifications": { "type": "boolean" }
        }
      }
    ]
  }
}
```

<div id="filter-enum-values">
  ### Filtrer les valeurs d’énumération
</div>

Utilisez l’extension `x-mint-enum` pour restreindre certaines valeurs d’énumération par groupe. Indiquez chaque valeur restreinte comme key, avec ses groups autorisés comme value. Les valeurs d’énumération qui ne sont pas répertoriées dans `x-mint-enum` sont visibles par tous les utilisateurs.

```json {4-7} Restricted enum values theme={null}
{
  "type": "string",
  "enum": ["free", "pro", "enterprise"],
  "x-mint-enum": {
    "pro": ["pro", "enterprise"],
    "enterprise": ["enterprise"]
  }
}
```

Dans cet exemple, tous les utilisateurs voient `free`. Les utilisateurs appartenant aux groupes `pro` ou `enterprise` voient `pro`. Seuls les utilisateurs du groupe `enterprise` voient `enterprise`.

<Note>
  `x-mint-enum` est une extension distincte au niveau supérieur de l'objet de schéma, et non imbriquée sous `x-mint`.
</Note>

<div id="user-data-format">
  ## Format des données utilisateur
</div>

Votre système d’authentification retourne des données utilisateur qui contrôlent la personnalisation. Les champs `groups`, `content` et `apiPlaygroundInputs` décrits sur cette page font tous partie de l’objet de données utilisateur.

Pour connaître le format complet des données utilisateur et la référence des champs, consultez la page [Format des données utilisateur](/fr/deploy/authentication-setup#user-data-format).

<div id="logout-behavior">
  ## Comportement de déconnexion
</div>

La déconnexion s'effectue côté client. Lorsque les utilisateurs cliquent sur le bouton de déconnexion, Mintlify efface les données de session stockées dans le navigateur.

Pour limiter la durée de conservation des données de personnalisation, définissez le champ `expiresAt` dans vos données utilisateur.
