Skip to content

GET /v1/organizations/{org_id}/projects/{id}/eol

EOL subscriptions let you monitor the end-of-life and end-of-support dates for specific software versions. Each subscription is tied to a project.

GET /api/v1/organizations/{org_id}/projects/{project_id}/eol
Authorization: Bearer twa_your_key_here
Parameter Type Description
org_id UUID Organization identifier
project_id UUID Project identifier
[
{
"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"
}
]
Field Type Description
id string (UUID) Subscription identifier
product_id string Product identifier (e.g. nodejs, ubuntu, postgresql) — matches IDs from the EOL catalog
cycle string | null Specific monitored version (e.g. "18", "22.04"). null = whole product subscription (new releases)
notify_before_eol_days integer | null Days before EOL to notify. null = uses the project’s default setting
notify_before_support_days integer | null Days before end-of-support to notify. null = uses the project’s default setting
created_at string (ISO 8601) Subscription creation date
cycle Type Behaviour
null Product subscription Alert when a new version/cycle is published for this product
"18", "22.04", etc. Cycle subscription Alert before the end-of-life or end-of-support of this specific version
Code Detail Cause
404 Projet introuvable Project does not exist, belongs to another organization, or is outside the key’s project restriction
403 Cette clé API n'a pas le droit d'accéder à cette ressource. The eol scope is missing from the key

List versions approaching end-of-life (≤ 90 days)

import httpx
from datetime import date, timedelta
BASE = "https://app.techwatchalert.com/api/v1"
headers = {"Authorization": "Bearer twa_your_key_here"}
org_id = "018e5678-abcd-7000-8000-000000000001"
project_id = "018e1234-abcd-7000-8000-000000000010"
subs = httpx.get(f"{BASE}/organizations/{org_id}/projects/{project_id}/eol", headers=headers).json()
today = date.today()
soon = today + timedelta(days=90)
for sub in subs:
if sub["cycle"] is None:
continue
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):
eol_date = date.fromisoformat(eol)
if today <= eol_date <= soon:
days_left = (eol_date - today).days
print(f"{sub['product_id']} {c['cycle']} — EOL in {days_left} days ({eol_date})")