GET /v1/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.
List EOL Subscriptions for a Project
Section titled “List EOL Subscriptions for a Project”GET /api/v1/projects/{project_id}/eolAuthorization: Bearer twa_your_key_herePath Parameters
Section titled “Path Parameters”| Parameter | Type | Description |
|---|---|---|
project_id | UUID | Project identifier |
No query parameters
Section titled “No query parameters”Response 200 OK
Section titled “Response 200 OK”[ { "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" }]Fields
Section titled “Fields”| 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 |
Two subscription types
Section titled “Two subscription types”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 |
Errors
Section titled “Errors”| Code | Detail | Cause |
|---|---|---|
404 | Projet introuvable | project_id does not exist |
403 | Accès refusé à ce projet | Project not accessible |
Example
Section titled “Example”List versions approaching end-of-life (≤ 90 days)
import httpxfrom datetime import date, timedelta
BASE = "https://app.techwatchalert.com/api/v1"headers = {"Authorization": "Bearer twa_your_key_here"}project_id = "018e1234-abcd-7000-8000-000000000010"
subs = httpx.get(f"{BASE}/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})")