- Grants access to a single repository
- Contains explicit permission scopes
- Has a configurable time-to-live (TTL)
- Is customer-signed for full control
Token structure
SDK note: the client normalizes Git status codes inJWT headers must include:stateto descriptive values and provides the original status underrawStatealongside camelCase property names.
Permission scopes
| Scope | Description | Operations |
|---|---|---|
git:read | Read repository contents | clone, fetch, pull |
git:write | Modify repository | push (includes read) |
repo:write | Create repositories | POST /api/v1/repos |
git:write | Sync from upstream | POST /api/v1/repos/pull-upstream |
Key management
Public keys for JWT verification are managed through the Pierre Admin Panel. Thekid (Key ID)
header enables zero-downtime key rotation—register new keys before retiring old ones.
Manual JWT generation
For advanced scenarios—such as integrating with custom Git tooling or provisioning tokens outside the SDK clients—you can generate JWTs directly with thegenerateJwt / generate_jwt helpers. They
accept your PEM-encoded private key, repository identifier, and desired scopes, then return a ready
to use token:
keyPem/key_pem(required): Private key in PKCS8 PEM format. RSA, EC (P-256), and EdDSA keys are supported.issuer(required): Customer identifier (for exampleyour-namein HTTPS remotes).repoId/repo_id(required): Repository ID the token will access.scopes(optional): Explicit permissions. Defaults to["git:write", "git:read"]. Available scopes:git:read,git:write,repo:write.ttl(optional): Token lifetime in seconds. Defaults to31536000(1 year).
RS256, ES256, or EdDSA as appropriate.