Référence du champ de configuration
Référence complète pour chaque domaine de config.json. Ce fichier contrôle le comportement du produit d'exécution : limites du plan, facturation, webhooks et indicateurs de fonctionnalités. Il est distinct de .env, qui détient des secrets et le câblage de l'infrastructure.
Exemple de démarrage
Il s'agit du point de départ recommandé pour un déploiement auto-hébergé sans configuration de facturation. Toutes les limites sont fixées à null (illimité) et les fonctionnalités de facturation sont désactivées. Remplacer [email protected] avec votre propre adresse.
administratrices#
Un tableau d’adresses e-mail bénéficiant d’un accès administrateur au site. Les administrateurs peuvent accéder à des pages privilégiées telles que le planificateur de processus par lots et les tableaux de bord d'utilisation à l'échelle du système.
| Champ | Taper | Requis | Description |
|---|---|---|---|
| admins | string[] | Requis | Liste des adresses e-mail avec accès administrateur. Doit correspondre à l'e-mail associé au compte Clerk de l'utilisateur. |
caractéristiques#
Indicateurs de fonctionnalités qui contrôlent quelles parties de l’interface utilisateur du produit sont actives. Pour les déploiements simples auto-hébergés, vous pouvez désactiver toutes les fonctionnalités de facturation et laisser uniquement l'indicateur du planificateur si nécessaire.
| Champ | Taper | Requis | Description |
|---|---|---|---|
| subscriptionEnforcementEnabled | boolean | Requis | Lorsque cela est vrai, les utilisateurs peuvent consulter et passer à des forfaits payants. Lorsqu’elle est fausse, l’interface utilisateur de mise à niveau affiche à la place un espace réservé pour la facturation à venir. |
| workspaceBillingEnabled | boolean | Requis | Lorsque cela est vrai, les niveaux de facturation et les informations sur le forfait apparaissent dans les paramètres de la barre latérale et de l'espace de travail. Définissez sur false pour masquer entièrement toute l’interface utilisateur de facturation. |
| batchSchedulerEnabled | boolean | Requis | Lorsque cela est vrai, le planificateur de processus par lots est actif et accessible aux administrateurs. Nécessite l'exécution de Redis et BullMQ. |
| customMCPServerTokens | boolean | Requis | Lorsqu'il est faux, le serveur MCP s'authentifie à l'aide du jeton OAuth/Clerk standard. Lorsque cela est vrai, des jetons API autogérés sont utilisés à la place, ce qui est utile pour les environnements sans prise en charge Clerk MCP. |
limites#
Tableau d’ensembles de limites qui contrôlent l’utilisation des ressources. Chaque entrée peut être liée à un niveau de facturation via billingTier, ou réglé sur null à appliquer à tous les utilisateurs, quel que soit le forfait. Pour les déploiements simples et sans facturation, une seule entrée avec "billingTier": null est suffisant. null les valeurs des limites numériques signifient illimitées.
| Champ | Taper | Requis | Description |
|---|---|---|---|
| id | string | Requis | Identifiant unique pour cet ensemble de limites (par exemple gratuit, pro, par défaut). |
| maxTrackableItems | number | Requis | Nombre maximum d'éléments traçables (formulaires + points de terminaison d'API) qu'un utilisateur peut créer par espace de travail. |
| maxResponsesPerSurvey | number | null | Requis | Nombre maximum de réponses autorisées par enquête/formulaire. null signifie illimité. |
| maxWorkspaceMembers | number | null | Requis | Nombre maximum de membres dans un espace de travail. null signifie illimité. |
| maxApiLogsPerMinute | number | Requis | Nombre maximum d'événements de journal pouvant être ingérés par minute et par élément traçable. Les demandes excédentaires sont limitées en débit. |
| maxApiPayloadBytes | number | Requis | Taille maximale en octets d'une charge utile de journal unique. Les demandes supérieures à ce montant sont rejetées. |
| logRetentionDays | number | Requis | Nombre de jours pendant lesquels les entrées du journal sont conservées avant d'être purgées. S'applique à tous les journaux de ce niveau. |
| maxCreatedWorkspaces | number | null | Requis | Nombre maximum d'espaces de travail qu'un seul utilisateur peut créer. null signifie illimité. |
| billingTier | string | null | Requis | ID du niveau de facturation auquel cette limite s'applique. Doit correspondre à un identifiant dans le tableau billing.tiers. Définissez sur null pour appliquer cette limite à tous les utilisateurs, quel que soit le forfait. |
facturation#
Configuration de facturation facultative pour l'intégration de Lemon Squeezy. Si vous n'utilisez pas de forfaits payants, définissez lemonSqueezyStoreId et manageUrl à null et partir tiers comme un tableau vide. Les valeurs d'identifiant de niveau sont référencées par limites[].billingTier : elles doivent correspondre exactement.
| Champ | Taper | Requis | Description |
|---|---|---|---|
| lemonSqueezyStoreId | string | null | Facultative | Votre identifiant de magasin Lemon Squeezy. Obligatoire si vous traitez des paiements via Lemon Squeezy. |
| manageUrl | string | null | Facultative | URL vers la page de gestion de la facturation présentée aux utilisateurs. Généralement l'URL de votre portail client Lemon Squeezy. |
billing.tiers[]
Tableau de niveaux de facturation affichés dans l’interface utilisateur de mise à niveau. Chaque niveau doit avoir un identifiant unique qui correspond à une entrée correspondante dans limites[].billingTier.
| Champ | Taper | Requis | Description |
|---|---|---|---|
| id | string | Requis | Identifiant de niveau unique. Référencé par limites[].billingTier. |
| name | string | Requis | Nom d’affichage affiché aux utilisateurs (par exemple Pro, Team). |
| priceLabel | string | Requis | Chaîne de prix affichée dans l'interface utilisateur (par exemple 25 $). |
| priceInterval | string | Requis | Intervalle de facturation indiqué sous le prix (par exemple par mois). |
| description | string | Requis | Brève description de ce que ce niveau comprend. |
| tone | "neutral" | "accent" | "strong" | Requis | Thème visuel de la carte de niveau. l'accent et le fort sont des styles mis en valeur ; neutre est la valeur par défaut. |
| mostPopular | boolean | Requis | Lorsque cela est vrai, affiche un badge Les plus populaires sur cette carte de niveau. |
| lemonSqueezyVariantId | string | null | Facultative | ID de variante de produit Lemon Squeezy pour ce niveau. Obligatoire pour que le paiement fonctionne. |
| enabled | boolean | Requis | Lorsqu'il est faux, ce niveau est masqué dans l'interface utilisateur de mise à niveau même si la facturation est activée. |
usage#
Contrôles globaux d'utilisation de l'API qui s'appliquent à tous les espaces de travail et utilisateurs.
| Champ | Taper | Requis | Description |
|---|---|---|---|
| invalidApiKeyRateLimitPerMinute | number | Requis | Le nombre maximum de requêtes avec une clé API non valide autorisées par minute et par IP avant que la source soit limitée en débit. Aide à prévenir le bourrage d’informations d’identification. |
| maxBodyBytes | number | Requis | Taille maximale en octets pour le corps d'une demande de journal au niveau de la passerelle API. Les demandes dépassant ce montant sont rejetées avant d’atteindre la couche de service. |
| pageSize | number | Requis | Nombre d'entrées de journal récupérées par page lors du chargement de la visionneuse de journaux. |
webhooks#
Contrôle la file d'attente de livraison des webhooks sortants soutenue par Redis et BullMQ. La limitation du débit s'applique ici au consommateur de file d'attente, et non à l'ingestion de journaux entrants.
| Champ | Taper | Requis | Description |
|---|---|---|---|
| queue.enabled | boolean | Requis | Lorsque cela est vrai, les webhooks sortants sont mis en file d'attente dans Redis et livrés de manière asynchrone. Nécessite que Redis soit exécuté. |
| queue.rateLimitMs | number | Requis | Millisecondes minimales à attendre entre les livraisons de webhook consécutives à partir de la file d'attente. |
| queue.rateLimitMax | number | Requis | Nombre maximum d'événements webhook pouvant être envoyés dans la fenêtre rateLimitMs. |
lot#
Configuration du planificateur de lots en arrière-plan. Le planificateur doit également être activé via features.batchSchedulerEnabled.
| Champ | Taper | Requis | Description |
|---|---|---|---|
| schedulerTimeZone | string | Requis | Chaîne de fuseau horaire IANA utilisée pour planifier les tâches par lots (par exemple UTC, America/New_York). Affecte le moment où les tâches basées sur cron se déclenchent. |