Aller au contenu
Bastide Connexion Créer un compte
Appuyez sur / pour chercher

service_token.create

Markdownv0.3.0

Frapper un jeton de compte de service : des portées nommées, une liste de projets, quatre-vingt-dix jours au plus. Rendu une seule fois.

  • APIPOST /v1/organizations/{organizationId}/service-tokens
  • CLIbastide service_token create

EX-SEC-390, § 7.7.4. Le jeton agit sous son propre nom, sur les seuls projets nommés ici, au rang donné à chacun et dans la limite des portées nommées. Il ne reçoit que des portées que porte le jeton qui fait l'appel, et aucun rang plus haut que celui de l'appelant sur le projet. Celui qui le frappe en répond : si son compte est suspendu ou supprimé, le jeton n'ouvre plus rien. L'échéance est obligatoire, et ne se repousse pas : à son terme, il s'en frappe un autre. Cinquante jetons en vigueur au plus par organisation. Un compte de service lit, et ne mène que les écritures que la plateforme lui ouvre par leur nom — la page de chaque opération le dit.

PropriétéValeur
Niveauorganization
Rang minimaladmin
Rôle transversal—
Portéesorg:admin
Compte de servicene la mène pas : elle est réservée à une personne
RéversibilitéR — réversible : exécution directe, tracée, annulable
Idempotenceune clé d'idempotence est acceptée : le rejeu rend la première réponse
Limites de débit, par jeton600 appels par 60 secondes (general), et 60 appels par 60 secondes (sensitive)

API

POST /v1/organizations/{organizationId}/service-tokens — succès en 201.

ParamètreOùTypeRequisDescription
organizationIdchemintexte, motif ^org_[0-9A-HJKMNP-TV-Z]{26}$ouiIdentifiant de organisation
Idempotency-Keyen-têtetexte, de 8 à 128 caractèresnonClé 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.
namecorpstexte, de 1 à 80 caractèresouiÀ quoi sert ce jeton : il se relit dans la liste.
scopescorpsliste de de 1 à 12 éléments — chaque élément : l'un de project:read, project:write, deploy:write, db:read, db:write, db:destructive, secrets:write, billing:read, billing:write, domain:write, audit:read, org:adminouiCe que le jeton pourra faire. Au moins une portée ; aucune n'est implicite.
expiresInDayscorpsentier, de 1 à 90ouiLa durée de vie, en jours : de 1 à 90. Obligatoire.
projectscorpsliste de de 1 à 20 éléments — chaque élément : objet (projectId, role)ouiLes projets de cette organisation que le jeton ouvre, et le rang qu'il y tient. Rien d'autre ne lui est ouvert.
idempotencyKeycorpstexte, de 8 à 128 caractèresnonClé d'idempotence, obligatoire. Un rejeu portant la même clé rend le résultat initial, sans nouvel effet de bord.

La réponse :

ChampTypeDescription
serviceTokenIdtexte, motif ^tok_[0-9A-HJKMNP-TV-Z]{26}$Identifiant de jeton de compte de service
nameobjet (untrusted, source, content)
displayPrefixtexteLes douze premiers caractères de l'identifiant : de quoi le reconnaître.
scopesliste de de 1 à 12 éléments — chaque élément : l'un de project:read, project:write, deploy:write, db:read, db:write, db:destructive, secrets:write, billing:read, billing:write, domain:write, audit:read, org:adminCe que ce jeton peut faire, dans la limite de ses rangs.
projectsliste de 20 éléments au plus — chaque élément : objet (projectId, role)La liste de projets, explicite : le jeton n'ouvre rien d'autre, et elle ne change pas — un autre périmètre, c'est un autre jeton.
responsibleAccountIdtexte, motif ^acc_[0-9A-HJKMNP-TV-Z]{26}$La personne qui en répond. Si son compte est suspendu ou supprimé, le jeton n'ouvre plus rien.
statel'un de active, revoked, expired, orphaned« orphaned » : la personne qui en répond n'est plus un compte actif. Seul « active » ouvre un appel.
createdAttexte, format date-time
expiresAttexte, format date-timeAu plus quatre-vingt-dix jours après sa création.
tokentexteLe jeton, préfixé « tok_ ». Rendu une seule fois, jamais relu.
undoTokennul

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 service_token create --organization-id <valeur> --name <valeur> --scopes <valeur> --expires-in-days <valeur> --projects <valeur>

OptionTypeRequiseDéfautDescription
--organization-idtexteoui—Identifiant de organisation
--nametexteoui—À quoi sert ce jeton : il se relit dans la liste.
--scopeslisteoui—Ce que le jeton pourra faire. Au moins une portée ; aucune n'est implicite.
--expires-in-daysnombreoui—La durée de vie, en jours : de 1 à 90. Obligatoire.
--projectslisteoui—Les projets de cette organisation que le jeton ouvre, et le rang qu'il y tient. Rien d'autre ne lui est ouvert.
--idempotency-keytextenon—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

Aucun outil : elle rend la valeur d'un secret, une seule fois, ou la refuse à tous : aucun outil MCP ne renvoie la valeur d'un secret, quelle que soit la portée du jeton (EX-MCP-070, EX-SEC-270).

Erreurs

CodeSurfaceCause
portee_non_detenueles deuxLe jeton présenté ne porte pas une portée demandée pour le nouveau jeton : il ne peut donner que ce qu'il porte.
rang_non_detenules deuxLe rang demandé pour le jeton, sur l'un des projets nommés, dépasse celui que l'appelant y tient : il ne peut donner que le sien, ou un rang plus bas.
quota_de_jetons_de_service_atteintles deuxL'organisation porte déjà le nombre publié de jetons de compte de service en vigueur : cinquante.
idempotency_key_conflictAPIDeux clés d'idempotence différentes ont été présentées, dans le corps et dans l'en-tête.
valeur_rendue_une_foisAPICe que l'opération crée n'est rendu qu'au premier appel : la plateforme n'en garde pas de copie, et un rejeu ne peut pas le rendre.

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

Un jeton pour l'intégration continue : lecture d'un projet, trente jours :

{
  "organizationId": "org_01JQ8ZK4M7NP2RSTVWXYZ34567",
  "name": "intégration continue",
  "scopes": [
    "project:read"
  ],
  "expiresInDays": 30,
  "projects": [
    {
      "projectId": "prj_01JQ8ZK4M7NP2RSTVWXYZ34567",
      "role": "reader"
    }
  ],
  "idempotencyKey": "jeton-de-service-ci-2026-10-06"
}

Signaler une erreur sur cette page