REST-Zugriff auf die AlfaMedia-Redaktionsdatenbank (Editorial Organiser / Crossmedia).
Client → Cloudflare → Apache (alpha-media.img.ch)
→ FastAPI (127.0.0.1:8092)
→ SSH-Tunnel (127.0.0.1:15432)
→ PostgreSQL "atlas" @ srvalfadb.srmnet.ch
Der API-Host erreicht die DB nur über einen dauerhaften SSH-Tunnel via Docker-Host. Alle Abfragen sind read-only und parametrisiert; DB-Zugangsdaten verlassen den Server nie.
Alle /api/*-Daten-Endpoints brauchen einen API-Key. Frei bleiben: /, /API.md, /swagger, /openapi.json, /api/health.
| Methode | Beispiel |
|---|---|
| Header (empfohlen) | X-API-Key: <key> |
| Bearer-Token | Authorization: Bearer <key> |
| Query-Param | ?api_key=<key> (praktisch für <img>/Browser) |
curl -H 'X-API-Key: <key>' 'https://alpha-media.img.ch/api/articles'
Fehlt/falsch → HTTP 401. In /swagger oben auf „Authorize" klicken und den Key einfügen. Key beim Betreiber anfragen.
/api/healthLiveness- und DB-Verbindungs-Check.
/api/articlesRedaktionelle Artikel in einem Zeitraum. Default: die letzten 7 Tage.
| Parameter | Default | Beschreibung |
|---|---|---|
from | heute − 7 Tage | Startdatum YYYY-MM-DD, inklusive. |
to | heute | Enddatum YYYY-MM-DD, inklusive. |
date_field | updated | Datumsbezug: updated oder created. |
channel | – | Filter nach Kanal/Zeitung (Teilstring), z. B. FN, Newsportal. |
limit | 50 | Seitengröße, 1–500. |
offset | 0 | Pagination-Offset. |
# Default: letzte 7 Tage
curl 'https://alpha-media.img.ch/api/articles'
# Zeitraum nach Erstelldatum
curl 'https://alpha-media.img.ch/api/articles?from=2026-06-01&to=2026-06-30&date_field=created'
# Nur Frauenfelder Nachrichten
curl 'https://alpha-media.img.ch/api/articles?channel=FN&limit=100'
/api/articles/{id}Einzelartikel mit Volltext (text_html + text_plain), Kanälen und Bild-Assets inkl. fertiger Bild-URLs.
/api/images/{id}/{rendition}Bild-Binary für eine crossmedia_image-ID. rendition: thumbnail (~188px) · lowres (Web) · highres (Original, volle Auflösung).
# Original-Bild herunterladen
curl -o photo.jpg 'https://alpha-media.img.ch/api/images/1438575/highres'
Bytes werden intern vom EO-Mediaproxy geholt (via atlas_id → cdb_foto_content); Clients sprechen ihn nie direkt an.
| Feld | Bedeutung |
|---|---|
title | Artikel-Keyword (redaktioneller Titel). |
text_excerpt | Erste ~300 Zeichen des Texts, ohne HTML. |
channels | Publikationskanäle (Print-Layout = Print, Newsportal Artikel = Online). |
image_count | Anzahl verknüpfter Bild-Assets. |
created_at / updated_at | ISO-8601 mit Zeitzone (Europe/Zurich). |