api-rest-v1.md 6671 octets

API REST v1

Référence des endpoints publics de l'API gitrust v1. Pour tester interactivement, accède à l'interface Swagger de ton instance sur /api/docs.


Authentification

L'API accepte deux méthodes d'authentification :

JWT Bearer (session web)

Obtenu via POST /api/v1/auth/login. Durée de vie courte, renouvelable via /api/v1/auth/refresh.

Authorization: Bearer <jwt_token>

Personal Access Token (PAT)

Créé dans /settings/tokens. Durée de vie configurable, révocable à tout moment.

Authorization: Bearer gr_pat_xxxx...

Les deux méthodes utilisent le même header Authorization: Bearer. gitrust détecte automatiquement le type par le préfixe du token.


Pagination

Tous les endpoints de liste supportent la pagination par curseur de page :

ParamètreTypeDéfautDescription
pageint1Numéro de page (commence à 1)
limitint20Résultats par page (max 100)

Exemple :

GET /api/v1/repos/owner/repo/issues?page=2&limit=50

Les réponses paginées incluent les headers :

X-Total-Count: 142
X-Page: 2
X-Per-Page: 50

Codes de réponse

CodeSignification
200 OKSuccès
201 CreatedRessource créée
204 No ContentSuccès sans corps de réponse
400 Bad RequestParamètres invalides
401 UnauthorizedToken absent ou expiré
403 ForbiddenAuthentifié mais permissions insuffisantes
404 Not FoundRessource introuvable ou non accessible
422 Unprocessable EntityValidation échouée (corps JSON avec détails)
429 Too Many RequestsRate limit atteint

Les erreurs retournent un corps JSON :

{
  "error": "repository not found",
  "code": "REPO_NOT_FOUND"
}

Endpoints — Authentification

MéthodeEndpointDescription
POST/api/v1/auth/loginConnexion email + password (+ code 2FA si activé)
POST/api/v1/auth/registerCréer un compte
POST/api/v1/auth/refreshRenouveler le JWT
POST/api/v1/auth/logoutInvalider la session
GET/api/v1/auth/meInfos de l'utilisateur connecté (alias de /api/v1/user)
POST/api/v1/auth/forgot-passwordEnvoyer le lien de réinitialisation
POST/api/v1/auth/reset-passwordChanger le mot de passe via token email
POST/api/v1/auth/2fa/verifyVérifier le code TOTP lors de la connexion

Endpoints — Utilisateur

MéthodeEndpointDescription
GET/api/v1/userProfil de l'utilisateur authentifié
GET/api/v1/user/reposDépôts accessibles par l'utilisateur authentifié

Exemple de réponse GET /api/v1/user :

{
  "id": 42,
  "username": "tonpseudo",
  "email": "ton@email.com",
  "avatar_url": "https://gitrust.example.com/avatars/42.png",
  "created_at": "2026-01-15T10:30:00Z"
}

Endpoints — Dépôts

MéthodeEndpointDescription
GET/api/v1/repos/{owner}/{repo}Détail d'un dépôt
GET/api/v1/repos/{owner}/{repo}/branchesListe des branches
GET/api/v1/repos/{owner}/{repo}/tagsListe des tags
GET/api/v1/repos/{owner}/{repo}/commitsListe des commits (paginée)

Exemple de réponse GET /api/v1/repos/owner/repo :

{
  "id": 7,
  "owner": "owner",
  "name": "repo",
  "full_name": "owner/repo",
  "description": "Mon dépôt",
  "private": false,
  "default_branch": "main",
  "stars_count": 3,
  "forks_count": 0,
  "created_at": "2026-02-01T09:00:00Z",
  "updated_at": "2026-04-15T14:22:00Z"
}

Endpoints — Issues

MéthodeEndpointDescription
GET/api/v1/repos/{owner}/{repo}/issuesLister les issues (filtres : state, labels, page, limit)
POST/api/v1/repos/{owner}/{repo}/issuesCréer une issue
GET/api/v1/repos/{owner}/{repo}/issues/{num}Détail d'une issue
PATCH/api/v1/repos/{owner}/{repo}/issues/{num}Modifier une issue
POST/api/v1/repos/{owner}/{repo}/issues/{num}/commentsAjouter un commentaire

Exemple POST /api/v1/repos/owner/repo/issues :

{
  "title": "Bug: validation email incorrecte",
  "body": "La validation rejette les adresses avec un + dans le local-part."
}

Endpoints — Pull Requests

MéthodeEndpointDescription
GET/api/v1/repos/{owner}/{repo}/pullsLister les PRs
POST/api/v1/repos/{owner}/{repo}/pullsCréer une PR
GET/api/v1/repos/{owner}/{repo}/pulls/{num}Détail d'une PR
POST/api/v1/repos/{owner}/{repo}/pulls/{num}/mergeFusionner une PR
POST/api/v1/repos/{owner}/{repo}/pulls/{num}/commentsCommenter une PR

Exemple POST /api/v1/repos/owner/repo/pulls/{num}/merge :

{
  "merge_method": "squash",
  "commit_title": "feat: améliore la validation email (#5)"
}

Valeurs merge_method : merge (merge commit), squash, rebase (fast-forward).


Endpoints — CI

MéthodeEndpointDescription
GET/api/v1/repos/{owner}/{repo}/ci/pipelinesLister les pipelines
POST/api/v1/repos/{owner}/{repo}/ci/pipelines/triggerDéclencher un pipeline manuellement
GET/api/v1/repos/{owner}/{repo}/ci/pipelines/{id}Détail d'un pipeline
GET/api/v1/repos/{owner}/{repo}/ci/pipelines/{id}/logsLogs d'un pipeline
GET/api/v1/repos/{owner}/{repo}/ci/configLire la config CI
PUT/api/v1/repos/{owner}/{repo}/ci/configMettre à jour la config CI
GET/api/v1/repos/{owner}/{repo}/ci/variablesLister les variables CI
POST/api/v1/repos/{owner}/{repo}/ci/variablesCréer une variable CI
DELETE/api/v1/repos/{owner}/{repo}/ci/variables/{id}Supprimer une variable CI

Documentation interactive

L'interface Swagger complète est disponible sur ton instance à /api/docs. Elle permet de tester chaque endpoint directement depuis le navigateur avec ton token d'authentification.

La spécification OpenAPI brute (YAML) est disponible sur /api/docs/openapi.yaml.


Voir aussi