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

# Exportation statique

> Générez une exportation statique autonome de votre documentation et téléchargez-la comme un unique bundle via l'API REST Mintlify pour l'auto-hébergement.

<Info>
  L'exportation statique est en bêta privée et nécessite un accord entreprise. Contactez [sales@mintlify.com](mailto:sales@mintlify.com) pour en savoir plus.
</Info>

Utilisez l'API d'exportation statique pour pré-rendre votre site par programmation en un ensemble autonome de fichiers statiques et télécharger le résultat sous forme d'un unique bundle. Le bundle exporté est composé de HTML, CSS et JavaScript purs, sans dépendances d'exécution, afin que vous puissiez l'héberger sur n'importe quel stockage de fichiers statiques ou CDN.

<div id="page-urls-in-static-bundles">
  ## URL des pages dans les bundles statiques
</div>

Les exportations statiques utilisent des URL en `.html` qui correspondent aux fichiers du bundle. Par exemple, `/guides/getting-started` devient `/guides/getting-started.html`. Cela se produit automatiquement et ne nécessite aucune configuration.

<Note>
  Les URL canoniques et celles du sitemap restent sans extension. CloudFront résout ces URL automatiquement, mais d'autres hébergeurs statiques peuvent nécessiter des règles de réécriture.
</Note>

<div id="how-static-export-works">
  ## Fonctionnement de l'exportation statique
</div>

Une exportation statique s'exécute sous forme de tâche asynchrone. Vous démarrez la tâche pour un projet, puis interrogez son statut jusqu'à ce que le bundle soit prêt à être téléchargé.

<Steps>
  <Step title="Démarrer une tâche d'exportation statique">
    Appelez [Démarrer une tâche d'exportation statique](/fr/api/static-export/start-job) avec l'identifiant de votre projet. L'API met la tâche en file d'attente et renvoie un `jobId`.

    Un déploiement ne peut avoir qu'une seule tâche active à la fois. Si une tâche est déjà `queued` ou `running` pour le déploiement, l'endpoint retourne `409`. L'endpoint est limité à 10 démarrages de tâche par organisation et par heure.
  </Step>

  <Step title="Interroger la tâche et télécharger le bundle">
    Interrogez [Obtenir le statut d'une tâche d'exportation statique](/fr/api/static-export/get-job-status) avec le `jobId` jusqu'à ce que `status` soit `completed`. La réponse d'une tâche terminée inclut `bundleUrl`, un lien S3 présigné limité dans le temps vers le bundle, ainsi que `sizeBytes` et un horodatage `expiresAt`.

    Téléchargez le bundle avant `expiresAt`. Une fois le lien expiré, rappelez l'endpoint de statut pour obtenir une nouvelle `bundleUrl`. Les fichiers d'exportation sous-jacents restent réutilisables. Seul le lien est limité dans le temps.
  </Step>
</Steps>

<div id="feature-support-by-deployment">
  ## Prise en charge des fonctionnalités par type de déploiement
</div>

Les fonctionnalités disponibles dépendent de la manière dont vous hébergez votre déploiement. Les déploiements en air-gapped n'ont aucun accès réseau sortant, donc toute fonctionnalité qui repose sur les services cloud de Mintlify est indisponible. Les fonctionnalités étiquetées **Configurable** ont une disponibilité différente selon la configuration de votre environnement.

| Fonctionnalité                  |                 Cloud                 |       Auto-hébergé par le client      |               Air-gapped              |
| ------------------------------- | :-----------------------------------: | :-----------------------------------: | :-----------------------------------: |
| Recherche dans la documentation | <Icon icon="check" color="#16a34a" /> |              Configurable             |   <Icon icon="x" color="#dc2626" />   |
| Assistant IA                    | <Icon icon="check" color="#16a34a" /> |              Configurable             |   <Icon icon="x" color="#dc2626" />   |
| Analyses web                    | <Icon icon="check" color="#16a34a" /> |              Configurable             |   <Icon icon="x" color="#dc2626" />   |
| Playground API (« Essayer »)    | <Icon icon="check" color="#16a34a" /> | <Icon icon="check" color="#16a34a" /> |              Configurable             |
| Bundle d'exportation statique   | <Icon icon="check" color="#16a34a" /> | <Icon icon="check" color="#16a34a" /> | <Icon icon="check" color="#16a34a" /> |

<div id="endpoints">
  ## Endpoints
</div>

* [Démarrer une tâche d'exportation statique](/fr/api/static-export/start-job) : mettre en file d'attente une tâche d'exportation statique pour un projet.
* [Obtenir le statut d'une tâche d'exportation statique](/fr/api/static-export/get-job-status) : interroger l'état de la tâche et, une fois terminée, récupérer un lien présigné de téléchargement du bundle.

<div id="authentication">
  ## Authentification
</div>

Authentifiez les requêtes avec votre clé d'API admin. Générez une clé d'API admin sur la [page des clés d'API](https://app.mintlify.com/settings/organization/api-keys) de votre tableau de bord. Les clés d'API admin commencent par le préfixe `mint_` et sont des secrets côté serveur — ne les exposez pas dans du code côté client.

Copiez l'identifiant de votre projet depuis la même page et utilisez-le comme paramètre de chemin `projectId`.

<div id="deploy-the-bundle-to-your-enterprise-helm-chart">
  ## Déployer le bundle sur votre chart Helm Enterprise
</div>

Mintlify auto-hébergé se déploie avec le chart Helm du dépôt [`mintlify/enterprise`](https://github.com/mintlify/enterprise). Une fois qu'une tâche d'exportation statique est terminée, vous pointez le chart vers la `bundleUrl` et le déploiement le sert depuis votre propre infrastructure.

<Steps>
  <Step title="Ajouter la référence du bundle à vos valeurs">
    Définissez les champs d'exportation statique dans votre `values.yaml` sur la `bundleUrl` renvoyée par [Obtenir le statut d'une tâche d'exportation statique](/fr/api/static-export/get-job-status). Le chart récupère le bundle au démarrage et le sert comme version active.

    ```yaml values.yaml theme={null}
    staticExport:
      enabled: true
      # Presigned S3 link returned by the Get static export job status endpoint.
      bundleUrl: "https://mintlify-static-exports.s3.amazonaws.com/6520f3a1c9b1a20012ab34cd/export.zip"
      # Optional: pin to a specific export version for reproducible rollouts.
      version: "2024-06-01"
    ```
  </Step>

  <Step title="Déployer le chart">
    Appliquez les valeurs mises à jour avec `helm upgrade`. Le déploiement télécharge le bundle, le remplace en tant que site en direct et le sert depuis votre cluster.

    ```bash theme={null}
    helm upgrade --install mintlify mintlify/enterprise \
      --namespace mintlify \
      --create-namespace \
      -f values.yaml
    ```
  </Step>
</Steps>

Comme les liens présignés expirent, récupérez à nouveau le statut de la tâche et relancez la mise à niveau chaque fois que vous publiez du nouveau contenu, ou automatisez la boucle avec GitHub Actions.

<div id="automate-with-a-github-action">
  ## Automatiser avec une GitHub Action
</div>

Le workflow modèle suivant exécute la boucle complète d'exportation selon un calendrier ou à la demande. Il démarre une tâche, interroge jusqu'à la fin de l'exportation, puis déploie la nouvelle `bundleUrl` dans le chart Helm.

```yaml .github/workflows/static-export.yml theme={null}
name: Publish static export

on:
  workflow_dispatch:
  schedule:
    - cron: "0 6 * * *" # Daily at 06:00 UTC

env:
  PROJECT_ID: proj_your_project_id

jobs:
  export:
    runs-on: ubuntu-latest
    steps:
      - name: Start static export job
        id: start
        run: |
          JOB_ID=$(curl -s -X POST \
            https://api.mintlify.com/v1/static-export/${{ env.PROJECT_ID }}/jobs \
            -H "Authorization: Bearer ${{ secrets.MINTLIFY_ADMIN_KEY }}" | jq -r '.jobId')
          echo "job_id=$JOB_ID" >> "$GITHUB_OUTPUT"

      - name: Wait for the job to complete and capture the bundle URL
        id: bundle
        run: |
          for i in $(seq 1 60); do
            RESPONSE=$(curl -s \
              https://api.mintlify.com/v1/static-export/${{ env.PROJECT_ID }}/jobs/${{ steps.start.outputs.job_id }} \
              -H "Authorization: Bearer ${{ secrets.MINTLIFY_ADMIN_KEY }}")
            STATUS=$(echo "$RESPONSE" | jq -r '.status')
            echo "status=$STATUS"
            if [ "$STATUS" = "completed" ]; then
              BUNDLE_URL=$(echo "$RESPONSE" | jq -r '.bundleUrl')
              echo "bundle_url=$BUNDLE_URL" >> "$GITHUB_OUTPUT"
              exit 0
            fi
            [ "$STATUS" = "failed" ] && exit 1
            sleep 10
          done
          echo "Timed out waiting for the export job to complete." >&2
          exit 1

      - name: Deploy to the Helm chart
        run: |
          helm upgrade --install mintlify mintlify/enterprise \
            --namespace mintlify \
            --set staticExport.enabled=true \
            --set staticExport.bundleUrl="${{ steps.bundle.outputs.bundle_url }}"
```

Stockez votre clé d'API admin sous forme de secret de dépôt `MINTLIFY_ADMIN_KEY` et définissez `PROJECT_ID` sur l'identifiant de votre projet. Avant le déploiement, configurez les identifiants du cluster, par exemple avec `azure/setup-helm` et votre fichier de configuration Kubernetes (`kubeconfig`).
