preview.protection.configure
Markdownv0.3.0
Régler ce que les aperçus d'un projet demandent : rien, un mot de passe, l'appartenance au projet, ou une adresse admise.
- API
PUT /v1/projects/{projectId}/previews/protection - MCP
preview_protection_configure - CLI
bastide preview protection configure
EX-RUN-180, EX-NET-690. Vaut pour tous les aperçus, tous portent « noindex » ; le changer ferme les sessions ouvertes. Mot de passe jamais relu. Bloc d'adresses : /16 en IPv4, /48 en IPv6 au plus large. Un agent ne règle pas « public ».
| Propriété | Valeur |
|---|---|
| Niveau | project |
| Rang minimal | maintainer |
| Rôle transversal | security |
| Portées | project:write |
| Compte de service | ne la mène pas : cette écriture ne lui est pas ouverte |
| Réversibilité | R — réversible : exécution directe, tracée, annulable |
| Idempotence | une clé d'idempotence est acceptée : le rejeu rend la première réponse |
| Limites de débit, par jeton | 600 appels par 60 secondes (general), et 60 appels par 60 secondes (sensitive) |
API
PUT /v1/projects/{projectId}/previews/protection — succès en 200.
| Paramètre | Où | Type | Requis | Description |
|---|---|---|---|---|
projectId | chemin | texte, motif ^prj_[0-9A-HJKMNP-TV-Z]{26}$ | oui | Identifiant de projet |
Idempotency-Key | en-tête | texte, de 8 à 128 caractères | non | Clé d'idempotence. Un rejeu portant la même clé retourne le résultat initial sans nouvel effet de bord, et la réponse porte alors « Idempotency-Replayed: true ». Équivaut au champ « idempotencyKey » du corps ; les deux à la fois ne sont acceptés que s'ils sont identiques. |
mode | corps | l'un de public, password, members, addresses | oui | public : qui a l'adresse entre ; password : un mot de passe partagé ; members : les membres du projet ; addresses : une liste d'adresses IP. Toutes portent « noindex ». |
password | corps | texte, de 8 à 128 caractères | non | Le mot de passe partagé. Absent, celui qui est posé reste. |
addresses | corps | liste de 100 éléments au plus — chaque élément : texte, de 2 à 49 caractères, motif ^[0-9A-Fa-f:.]+(?:\/[0-9]{1,3})?$ | non | Les adresses et les blocs admis. Absente, la liste posée reste. |
idempotencyKey | corps | texte, de 8 à 128 caractères | non | Clé d'idempotence, obligatoire. Un rejeu portant la même clé rend le résultat initial, sans nouvel effet de bord. |
La réponse :
| Champ | Type | Description |
|---|---|---|
mode | l'un de public, password, members, addresses | public : qui a l'adresse entre ; password : un mot de passe partagé ; members : les membres du projet ; addresses : une liste d'adresses IP. Toutes portent « noindex ». |
passwordSet | booléen | Un mot de passe est posé. Il n'est jamais relu : seul ce fait l'est. |
addresses | liste de 100 éléments au plus — chaque élément : texte, de 2 à 49 caractères, motif ^[0-9A-Fa-f:.]+(?:\/[0-9]{1,3})?$ | |
updatedAt | texte, format date-time | |
undoToken | nul |
En-têtes de la réponse : RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset, RateLimit-Policy, Idempotency-Replayed.
Autres réponses : 400, 401, 403, 404, 409, 429, 500, 503 — communes à toute opération.
Ligne de commande
bastide preview protection configure --project-id <valeur> --mode <valeur>
| Option | Type | Requise | Défaut | Description |
|---|---|---|---|---|
--project-id | texte | oui | — | Identifiant de projet |
--mode | texte | oui | — | public : qui a l'adresse entre ; password : un mot de passe partagé ; members : les membres du projet ; addresses : une liste d'adresses IP. Toutes portent « noindex ». |
--password | texte | non | — | Le mot de passe partagé. Absent, celui qui est posé reste. |
--addresses | liste | non | — | Les adresses et les blocs admis. Absente, la liste posée reste. |
--idempotency-key | texte | non | — | Clé d'idempotence, obligatoire. Un rejeu portant la même clé rend le résultat initial, sans nouvel effet de bord. |
La commande s'exécute sans confirmation.
MCP
Outil preview_protection_configure.
| Propriété | Valeur |
|---|---|
| Lecture seule | non |
| Destructif | non |
| Idempotent | oui |
| Monde ouvert | non |
| Confirmation en deux temps | non |
| Budget de jetons du résultat | 500 |
Erreurs
| Code | Surface | Cause |
|---|---|---|
idempotency_key_conflict | API | Deux clés d'idempotence différentes ont été présentées, dans le corps et dans l'en-tête. |
S'y ajoutent les refus communs à toute opération — entrée invalide, authentification, autorisation, cible introuvable, conflit, limite de débit, indisponibilité — que le catalogue des erreurs décrit.
Exemples
Réserver les aperçus d'un projet au réseau du bureau :
{
"projectId": "prj_01JQ8ZK4M7NP2RSTVWXYZ34567",
"mode": "addresses",
"addresses": [
"203.0.113.0/24",
"2001:db8:42::/48"
],
"idempotencyKey": "protection-des-apercus-2026-10-01"
}