Aller au contenu

GET /v1/projects/{id}/eol

Les abonnements EOL permettent de surveiller la fin de vie et la fin de support de versions logicielles spécifiques. Chaque abonnement est rattaché à un projet.

GET /api/v1/projects/{project_id}/eol
Authorization: Bearer twa_votre_cle_ici
ParamètreTypeDescription
project_idUUIDIdentifiant du projet
[
{
"id": "018eaaaa-0000-7000-8000-000000000040",
"product_id": "nodejs",
"cycle": "18",
"notify_before_eol_days": 90,
"notify_before_support_days": 30,
"created_at": "2024-05-10T12:00:00Z"
},
{
"id": "018eaaaa-0000-7000-8000-000000000041",
"product_id": "ubuntu",
"cycle": "22.04",
"notify_before_eol_days": null,
"notify_before_support_days": null,
"created_at": "2024-05-10T12:05:00Z"
},
{
"id": "018eaaaa-0000-7000-8000-000000000042",
"product_id": "postgresql",
"cycle": null,
"notify_before_eol_days": null,
"notify_before_support_days": null,
"created_at": "2024-06-01T09:00:00Z"
}
]
ChampTypeDescription
idstring (UUID)Identifiant de l’abonnement
product_idstringIdentifiant du produit (ex : nodejs, ubuntu, postgresql) — correspond aux IDs du catalogue EOL
cyclestring | nullVersion spécifique surveillée (ex : "18", "22.04"). null = surveillance du produit entier (nouvelles releases)
notify_before_eol_daysinteger | nullDélai d’alerte avant fin de vie en jours. null = utilise le réglage par défaut du projet
notify_before_support_daysinteger | nullDélai d’alerte avant fin de support en jours. null = utilise le réglage par défaut du projet
created_atstring (ISO 8601)Date de création de l’abonnement
cycleTypeComportement
nullAbonnement produitAlerte quand une nouvelle version/cycle est publiée pour ce produit
"18", "22.04", etc.Abonnement cycleAlerte avant la fin de vie ou fin de support de cette version précise
CodeDétailCause
404Projet introuvableproject_id inexistant
403Accès refusé à ce projetProjet non accessible

Lister les versions en fin de vie imminente (≤ 90 jours)

import httpx
from datetime import date, timedelta
BASE = "https://app.techwatchalert.com/api/v1"
headers = {"Authorization": "Bearer twa_votre_cle_ici"}
project_id = "018e1234-abcd-7000-8000-000000000010"
# Récupérer les abonnements du projet
subs = httpx.get(f"{BASE}/projects/{project_id}/eol", headers=headers).json()
# Pour chaque cycle surveillé, récupérer la date de fin de vie
today = date.today()
soon = today + timedelta(days=90)
for sub in subs:
if sub["cycle"] is None:
continue # abonnement produit, pas de date EOL
cycles = httpx.get(
f"{BASE}/eol/products/{sub['product_id']}/cycles",
headers=headers,
).json()["cycles"]
for c in cycles:
if c["cycle"] != sub["cycle"]:
continue
eol = c.get("eol")
if isinstance(eol, str): # format "YYYY-MM-DD"
eol_date = date.fromisoformat(eol)
if today <= eol_date <= soon:
days_left = (eol_date - today).days
print(f"{sub['product_id']} {c['cycle']} — EOL dans {days_left} jours ({eol_date})")