Aller au contenu

API Aquila PRO V1

Cette page décrit les principaux endpoints de l’édition PRO. Ils sont exposés via une API HTTP (FastAPI).

Base URL

L’API est généralement exposée derrière un reverse proxy HTTPS, par exemple :

  • https://aquila.example.com (production)
  • https://aquila-recette.example.com (recette)

Les exemples ci‑dessous supposent que l’API est exposée sur le chemin racine.

1. GET /health

Vérifie la santé de l’agent PRO.

Exemple de réponse :

{
  "status": "ok",
  "service": "aquila-governance-v1",
  "edition": "PRO",
  "edition_version": "pro_v1.0.0"
}

2. GET /agent/status

Retourne l’état métier de l’agent PRO :

  • type d’édition ;
  • version ;
  • informations de licence (sans données sensibles) ;
  • nombre de projets/pipelines chargés.

Exemple de réponse :

{
  "service": "aquila-governance-v1",
  "edition": "PRO",
  "edition_version": "pro_v1.0.0",
  "licence": {
    "valid": true,
    "customer": "Entreprise X",
    "expires_at": "2026-12-31T23:59:59Z"
  },
  "stats": {
    "projects_loaded": 12,
    "pipelines_loaded": 24
  }
}

3. POST /agent/publish

Endpoint principal : une demande de pipeline appelle cette route pour obtenir une décision.

Exemple de requête :

{
  "repository": "org/service-api",
  "branch": "main",
  "pipeline": "deploy-prod",
  "metadata": {
    "run_id": "123456789",
    "initiator": "github-actions"
  }
}

Exemple de réponse :

{
  "status": "accepted",
  "reasons": [],
  "project": "service-api",
  "pipeline": "deploy-prod",
  "branch": "main"
}

ou, en cas de refus :

{
  "status": "refused",
  "reasons": [
    {
      "code": "branch_not_allowed",
      "message": "La branche 'feature/xyz' n'est pas autorisée pour ce pipeline."
    }
  ],
  "project": "service-api",
  "pipeline": "deploy-prod",
  "branch": "feature/xyz"
}

4. GET /agent/history

Permet de consulter l’historique des décisions. Les filtres usuels :

  • période temporelle (date de début / fin) ;
  • projet, pipeline, branche ;
  • statut (accepted / refused).

Exemple d’appel :

GET /agent/history?repository=org/service-api&pipeline=deploy-prod&limit=50

Exemple de réponse (abrégée) :

{
  "items": [
    {
      "timestamp": "2025-11-19T10:15:00Z",
      "status": "accepted",
      "repository": "org/service-api",
      "pipeline": "deploy-prod",
      "branch": "main"
    }
  ]
}

5. GET /agent/projects

Retourne la liste des projets et pipelines connus de l’agent PRO.

Exemple de réponse :

{
  "projects": [
    {
      "name": "service-api",
      "repository": "org/service-api",
      "pipelines": ["build", "test", "deploy-prod"]
    }
  ]
}

6. GET /agent/stats

Fournit des statistiques agrégées :

  • nombre total de demandes ;
  • taux d’acceptation / refus ;
  • répartition par projet/pipeline.

Exemple (simplifié) :

{
  "total_requests": 120,
  "accepted": 100,
  "refused": 20
}

7. GET /metrics

Expose les métriques Prometheus. Les noms exacts des métriques peuvent varier, mais on retrouve en général :

  • aquila_publish_requests_total ;
  • aquila_publish_refused_total ;
  • aquila_cooldown_active_total ;
  • aquila_projects_loaded.

Cette route est typiquement consommée par Prometheus et ne nécessite pas d’être exposée publiquement.