Skip to main content
Petanque Life

External Event Proxying

F04.22 8 features Planned

At a glance

Cross-tenant event proxying lets a federation subscribe to GLOBAL-published competitions from other tenants, cache the metadata locally, sync every 15 minutes with exponential backoff, and render proxy events in the CMS upcoming-events widget alongside its own — with a source badge, optional local overrides (title, translation, note), and admin tooling for subscribe/unsubscribe and manual resync.

How it works

When a federation wants to surface competitions from elsewhere — neighbouring nations, FIPJP world events, partner federations — an admin opens the External Event Proxying panel and subscribes to GLOBAL-scoped competitions discovered via F04.03's cross-tenant public APIs. Each subscription creates an ExternalEventProxy document in the local tenant carrying a sync lifecycle status (OK, STALE, FAILED, SOURCE_DELETED). A background sync job runs every 15 minutes, batches up to 50 proxies per run, and applies exponential backoff per failing entry so a flaky source does not slow the whole job.

On every sync the local cached metadata refreshes (title, dates, venue, registration window, status), with conflict detection — if the source competition is deleted, the proxy flips to SOURCE_DELETED and the admin gets an alert. Local overrides per proxy let the federation add a translated title for its language audience, a local note ("Bus from Stockholm departs Friday morning"), or a custom title overriding the source. The public upcoming-events endpoint returns a union of own + proxied events in chronological order, ready for the CMS widget which renders proxy events with a source badge and a deep-link back to the source federation's page.

The admin UI uses status colors (green OK, amber STALE, red FAILED, grey SOURCE_DELETED), supports search across subscribed proxies, and offers manual resync rate-limited to one per minute per proxy so an impatient admin cannot DoS the source. Proxying is read-only: the local tenant never modifies the source event, so registration and score data stay authoritative on the host tenant — the proxy is purely for visibility and discovery on the consumer site.

Key capabilities

  • ExternalEventProxy model with sync lifecycle (OK/STALE/FAILED/SOURCE_DELETED)
  • Admin subscribe/unsubscribe to GLOBAL competitions discovered via cross-tenant APIs
  • Local overrides per proxy: custom title, translation, local note
  • Background sync job every 15 minutes, batch 50, exponential backoff per proxy
  • Public upcoming-events endpoint unioning own + proxied events
  • CMS widget renders proxy events with source badge and deep link back to source
  • Admin UI with status colors and manual resync rate-limited to 1/min per proxy

In practice

The Norwegian federation wants to highlight Swedish and Danish events on its CMS upcoming-events widget. The admin opens external event proxying, searches the cross-tenant feed for SE and DK GLOBAL events, and subscribes to 14 of them. Within the next 15 minutes the sync job pulls metadata; the upcoming-events endpoint now returns 9 Norwegian and 14 proxied events.

On the public widget Norwegian visitors see the proxied events with a small "Sweden" badge and click through to the host federation's registration page. A week later the source federation deletes one event; on the next sync the proxy flips to SOURCE_DELETED and the admin sees a red banner, removes the subscription, and the widget cleans up automatically.

Features in this subsystem

8
ID Status Features
F04.22.01 Shipped ExternalEventProxy model with sync lifecycle (OK/STALE/FAILED/SOURCE_DELETED) ✅ PL-T008 ✅ PL-T008
F04.22.02 Shipped Admin subscribe/unsubscribe to global competitions ✅ PL-T008 ✅ PL-T008
F04.22.03 Shipped Local overrides (title, translation, note) per proxy ✅ PL-T008 ✅ PL-T008
F04.22.04 Shipped Background sync job (15 min, batch 50, exponential backoff) ✅ PL-T008 ✅ PL-T008
F04.22.05 Shipped Public upcoming-events endpoint (union of own + proxied) ✅ PL-T008 ✅ PL-T008
F04.22.06 Shipped CMS widget renders proxy events with source badge and link ✅ PL-T008 ✅ PL-T008
F04.22.07 Shipped Admin UI with status colors, search, subscribe, resync ✅ PL-T008 ✅ PL-T008
F04.22.08 Shipped Manual resync with rate limiting (1/min per proxy) ✅ PL-T008 ✅ PL-T008