API Updates Portal

L'Updates Portal expose une petite API JSON publique afin que vous puissiez interroger le statut, ingérer les entrées du changelog, suivre la roadmap et vérifier les problèmes connus depuis vos propres systèmes. Aucune authentification n'est requise.

URL de base

https://updates.foura.ai

Statut du service

GET /api/v1/status

Renvoie le statut opérationnel en direct de chaque service FourA, ainsi que les incidents actifs et récents. Mis en cache côté serveur pendant 15 secondes, de sorte qu'une interrogation plus fréquente renvoie le même payload.

curl https://updates.foura.ai/api/v1/status
{
  "overall": "operational",
  "services": [
    {
      "slug": "api",
      "name": "API",
      "description": "...",
      "status": "operational",
      "daily": [
        { "date": "2026-05-19", "status": "operational", "major_outage_minutes": 0, "partial_outage_minutes": 0, "degraded_minutes": 0, "internal_degraded_minutes": 0 }
      ]
    }
  ],
  "active_incidents": [],
  "recent_incidents": [
    { "id": "...", "service_slug": "api", "service_name": "API", "impact": "minor", "started_at": "...", "resolved_at": "..." }
  ]
}
Champ de premier niveau Type Description
overall string operational si chaque service est sain, sinon l'une des valeurs de statut de service
services array Une entrée par service surveillé avec slug, name, description, le status actuel et l'historique daily (jusqu'à 90 jours)
active_incidents array Incidents actuellement ouverts
recent_incidents array Incidents résolus au cours des 14 derniers jours

Valeurs de status du service : operational, degraded, partial_outage, major_outage, maintenance.

Valeurs d' impact de l'incident : minor (performances dégradées), major (interruption partielle), critical (interruption de service).

Pattern d'interrogation

Utilisez cet endpoint pour intégrer le statut de FourA dans votre propre dashboard ou système d'alerte.

import requests

def check_foura():
    r = requests.get("https://updates.foura.ai/api/v1/status", timeout=5)
    r.raise_for_status()
    data = r.json()
    if data["overall"] != "operational":
        # Page on-call, post to Slack, flip a feature flag, etc.
        for svc in data["services"]:
            if svc["status"] != "operational":
                print(f"{svc['name']}: {svc['status']}")
    return data

L'ancien GET /api/status renvoie 410 Gone et redirige les appelants ici.

Changelog

GET /api/changelog

Renvoie les entrées publiées du changelog dans l'ordre chronologique inverse.

curl "https://updates.foura.ai/api/changelog?limit=20"

Paramètres de requête :

Paramètre Type Par défaut Description
page integer 1 Numéro de page (indexé à partir de 1)
limit integer 20 Entrées par page (max 50)
category string - Filtrer par new, improved ou fixed
{
  "entries": [
    {
      "id": 42,
      "title": "...",
      "body": "Markdown body",
      "category": "new",
      "published_at": "2026-05-19T12:00:00Z",
      "tags": "[\"api\", \"dashboard\"]"
    }
  ],
  "total": 137,
  "page": 1,
  "limit": 20
}

RSS

Le changelog complet (les 30 entrées les plus récentes) est également publié sous forme de flux RSS à l'adresse :

https://updates.foura.ai/rss

Abonnez-vous dans Feedly, Miniflux, Thunderbird ou n'importe quel lecteur. Le corps du flux correspond au corps du changelog, y compris le markdown converti en HTML.

Roadmap

GET /api/roadmap

Renvoie chaque élément de la roadmap, trié par nombre de votes puis par date de création.

curl https://updates.foura.ai/api/roadmap
{
  "items": [
    {
      "id": 12,
      "title": "...",
      "description": "...",
      "category": "API",
      "status": "planned",
      "votes": 23,
      "target_date": "Q3 2026"
    }
  ]
}

Valeurs de status de l'élément : planned, in_progress, done, cancelled.

Vote

POST /api/roadmap/:id/vote

Bascule un vote sur un seul élément de la roadmap. Les votes sont anonymes et liés à l'IP de l'appelant + User-Agent. Un nouvel appel supprime le vote.

curl -X POST https://updates.foura.ai/api/roadmap/12/vote
{ "votes": 24, "voted": true }

voted indique l'état après l'appel : true si votre vote a été ajouté, false s'il a été supprimé.

Problèmes connus

GET /api/issues

Renvoie les problèmes suivis par le support de FourA.

curl "https://updates.foura.ai/api/issues?tab=open"

Paramètres de requête :

Paramètre Type Par défaut Description
tab string open open pour les problèmes actifs, resolved pour ceux résolus/fermés
{
  "issues": [
    {
      "id": 5,
      "title": "...",
      "body": "Markdown description",
      "severity": "medium",
      "status": "investigating",
      "service_id": "api",
      "opened_at": "2026-05-18T09:00:00Z",
      "resolved_at": null,
      "resolution": null
    }
  ]
}

Valeurs de severity : low, medium, high, critical. Valeurs de status : open, investigating, resolved, closed.

Notes

  • Tous les endpoints sont publics. Aucune clé API n'est requise, mais attendez-vous à un rate limit généreux par IP source.
  • Les réponses sont au format JSON via HTTPS. Il n'y a pas de pagination sur la roadmap ou les problèmes ; les listes sont courtes.
  • Pour les versions en texte libre ou HTML brut du changelog, utilisez le flux /rss au lieu de /api/changelog.

Voir aussi

Mis à jour : 20 mai 2026