Alpha-Media API read-only

REST-Zugriff auf die AlfaMedia-Redaktionsdatenbank (Editorial Organiser / Crossmedia).

▶ Interaktive Doku (Swagger) OpenAPI JSON API.md (für Agents) Health /api/articles (Beispiel) Einzelartikel (Beispiel)

Architektur

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.

Authentifizierung API-Key

Alle /api/*-Daten-Endpoints brauchen einen API-Key. Frei bleiben: /, /API.md, /swagger, /openapi.json, /api/health.

MethodeBeispiel
Header (empfohlen)X-API-Key: <key>
Bearer-TokenAuthorization: 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.

Endpoints

GET/api/health

Liveness- und DB-Verbindungs-Check.

GET/api/articles

Redaktionelle Artikel in einem Zeitraum. Default: die letzten 7 Tage.

ParameterDefaultBeschreibung
fromheute − 7 TageStartdatum YYYY-MM-DD, inklusive.
toheuteEnddatum YYYY-MM-DD, inklusive.
date_fieldupdatedDatumsbezug: updated oder created.
channelFilter nach Kanal/Zeitung (Teilstring), z. B. FN, Newsportal.
limit50Seitengröße, 1–500.
offset0Pagination-Offset.

Beispiele

# 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'
GET/api/articles/{id}

Einzelartikel mit Volltext (text_html + text_plain), Kanälen und Bild-Assets inkl. fertiger Bild-URLs.

GET/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.

Antwort-Felder

FeldBedeutung
titleArtikel-Keyword (redaktioneller Titel).
text_excerptErste ~300 Zeichen des Texts, ohne HTML.
channelsPublikationskanäle (Print-Layout = Print, Newsportal Artikel = Online).
image_countAnzahl verknüpfter Bild-Assets.
created_at / updated_atISO-8601 mit Zeitzone (Europe/Zurich).