{
  "ok": true,
  "count": 46,
  "contact": "info@fencing.om",
  "docs": "https://fencing.om/developers",
  "feeds": [
    {
      "entity": "news",
      "url": "/news.rss.xml",
      "format": "application/rss+xml",
      "description": "News RSS 2.0 (40 latest).",
      "absoluteUrl": "https://fencing.om/news.rss.xml"
    },
    {
      "entity": "news",
      "url": "/news.atom.xml",
      "format": "application/atom+xml",
      "description": "News Atom 1.0 (40 latest).",
      "absoluteUrl": "https://fencing.om/news.atom.xml"
    },
    {
      "entity": "news",
      "url": "/api/public/news",
      "format": "application/json",
      "description": "News list as JSON (50 latest).",
      "absoluteUrl": "https://fencing.om/api/public/news"
    },
    {
      "entity": "events",
      "url": "/events.ics",
      "format": "text/calendar",
      "description": "iCalendar (RFC 5545) of every event.",
      "absoluteUrl": "https://fencing.om/events.ics"
    },
    {
      "entity": "events",
      "url": "/events.csv",
      "format": "text/csv",
      "description": "Events as CSV.",
      "absoluteUrl": "https://fencing.om/events.csv"
    },
    {
      "entity": "events",
      "url": "/api/public/events",
      "format": "application/json",
      "description": "Events list as JSON.",
      "absoluteUrl": "https://fencing.om/api/public/events"
    },
    {
      "entity": "events",
      "url": "/api/public/upcoming",
      "format": "application/json",
      "description": "Future events only, soonest first.",
      "absoluteUrl": "https://fencing.om/api/public/upcoming"
    },
    {
      "entity": "events",
      "url": "/events.rss.xml",
      "format": "application/rss+xml",
      "description": "Events as RSS 2.0 (60 latest by date desc).",
      "absoluteUrl": "https://fencing.om/events.rss.xml"
    },
    {
      "entity": "athletes",
      "url": "/athletes.csv",
      "format": "text/csv",
      "description": "Active athletes as CSV.",
      "absoluteUrl": "https://fencing.om/athletes.csv"
    },
    {
      "entity": "athletes",
      "url": "/api/public/athletes",
      "format": "application/json",
      "description": "Active athletes as JSON.",
      "absoluteUrl": "https://fencing.om/api/public/athletes"
    },
    {
      "entity": "clubs",
      "url": "/clubs.csv",
      "format": "text/csv",
      "description": "Member clubs as CSV (with medal scoring).",
      "absoluteUrl": "https://fencing.om/clubs.csv"
    },
    {
      "entity": "clubs",
      "url": "/api/public/clubs",
      "format": "application/json",
      "description": "Member clubs as JSON.",
      "absoluteUrl": "https://fencing.om/api/public/clubs"
    },
    {
      "entity": "committee",
      "url": "/committee.csv",
      "format": "text/csv",
      "description": "Active committee members as CSV (no email/phone).",
      "absoluteUrl": "https://fencing.om/committee.csv"
    },
    {
      "entity": "committee",
      "url": "/api/public/committee",
      "format": "application/json",
      "description": "Active committee members as JSON (no email/phone).",
      "absoluteUrl": "https://fencing.om/api/public/committee"
    },
    {
      "entity": "coaches",
      "url": "/coaches.csv",
      "format": "text/csv",
      "description": "National-programme coaches as CSV (no email/phone).",
      "absoluteUrl": "https://fencing.om/coaches.csv"
    },
    {
      "entity": "coaches",
      "url": "/api/public/coaches",
      "format": "application/json",
      "description": "National-programme coaches as JSON (adds photo, bio, certification, no email/phone).",
      "absoluteUrl": "https://fencing.om/api/public/coaches"
    },
    {
      "entity": "venues",
      "url": "/api/public/venues",
      "format": "application/json",
      "description": "Training venues for member clubs (address, parking, Google Maps URL).",
      "absoluteUrl": "https://fencing.om/api/public/venues"
    },
    {
      "entity": "venues",
      "url": "/venues.csv",
      "format": "text/csv",
      "description": "Training venues as CSV.",
      "absoluteUrl": "https://fencing.om/venues.csv"
    },
    {
      "entity": "gallery",
      "url": "/api/public/gallery",
      "format": "application/json",
      "description": "Gallery photos (with absolute src urls).",
      "absoluteUrl": "https://fencing.om/api/public/gallery"
    },
    {
      "entity": "leaderboard",
      "url": "/api/public/leaderboard",
      "format": "application/json",
      "description": "Medal leaderboard (weighted gold/silver/bronze per athlete, optional ?year).",
      "absoluteUrl": "https://fencing.om/api/public/leaderboard"
    },
    {
      "entity": "leaderboard",
      "url": "/leaderboard.csv",
      "format": "text/csv",
      "description": "Medal leaderboard as CSV (columns match the JSON shape).",
      "absoluteUrl": "https://fencing.om/leaderboard.csv"
    },
    {
      "entity": "stats",
      "url": "/api/public/stats/clubs",
      "format": "application/json",
      "description": "Per-club athlete aggregates (total/active + weapon + gender breakdown).",
      "absoluteUrl": "https://fencing.om/api/public/stats/clubs"
    },
    {
      "entity": "stats",
      "url": "/api/public/stats/birthyears",
      "format": "application/json",
      "description": "Athlete age distribution (per birth year + FIE category counts).",
      "absoluteUrl": "https://fencing.om/api/public/stats/birthyears"
    },
    {
      "entity": "stats",
      "url": "/api/public/stats/weapons",
      "format": "application/json",
      "description": "Per-weapon athletes + medals aggregate.",
      "absoluteUrl": "https://fencing.om/api/public/stats/weapons"
    },
    {
      "entity": "calendar",
      "url": "/events/upcoming.ics",
      "format": "text/calendar",
      "description": "Upcoming-only iCalendar feed (no past events), subscribable alongside /events.ics.",
      "absoluteUrl": "https://fencing.om/events/upcoming.ics"
    },
    {
      "entity": "results",
      "url": "/results.csv",
      "format": "text/csv",
      "description": "Tournament results as CSV.",
      "absoluteUrl": "https://fencing.om/results.csv"
    },
    {
      "entity": "results",
      "url": "/api/public/results",
      "format": "application/json",
      "description": "Last 200 results as JSON.",
      "absoluteUrl": "https://fencing.om/api/public/results"
    },
    {
      "entity": "results",
      "url": "/results.rss.xml",
      "format": "application/rss+xml",
      "description": "Latest 60 medals as RSS 2.0 (gold/silver/bronze only).",
      "absoluteUrl": "https://fencing.om/results.rss.xml"
    },
    {
      "entity": "medals",
      "url": "/api/public/medals.json",
      "format": "application/json",
      "description": "Aggregate medal counts by year, by weapon, and year×weapon×medal cube. Supports ?year= and ?weapon=.",
      "absoluteUrl": "https://fencing.om/api/public/medals.json"
    },
    {
      "entity": "stats",
      "url": "/api/public/stats",
      "format": "application/json",
      "description": "Aggregate counts + breakdowns.",
      "absoluteUrl": "https://fencing.om/api/public/stats"
    },
    {
      "entity": "latest",
      "url": "/api/public/latest",
      "format": "application/json",
      "description": "Combined widget feed (5 events + 5 news + 10 results).",
      "absoluteUrl": "https://fencing.om/api/public/latest"
    },
    {
      "entity": "disciplines",
      "url": "/api/public/disciplines",
      "format": "application/json",
      "description": "Foil/épée/sabre reference data.",
      "absoluteUrl": "https://fencing.om/api/public/disciplines"
    },
    {
      "entity": "disciplines",
      "url": "/api/public/disciplines/{slug}",
      "format": "application/json",
      "description": "Per-weapon detail: reference data + athletes count + medal tally + top-3 medalists.",
      "absoluteUrl": "https://fencing.om/api/public/disciplines/{slug}"
    },
    {
      "entity": "glossary",
      "url": "/api/public/glossary.json",
      "format": "application/json",
      "description": "Bilingual EN+AR fencing glossary (~24 terms across 6 categories). ?category= to filter.",
      "absoluteUrl": "https://fencing.om/api/public/glossary.json"
    },
    {
      "entity": "referees",
      "url": "/api/public/referees.json",
      "format": "application/json",
      "description": "Public referee directory (active roster, public-safe fields only). ?weapon=foil|epee|sabre ?level=club|national|continental|fie ?active=false to include inactive.",
      "absoluteUrl": "https://fencing.om/api/public/referees.json"
    },
    {
      "entity": "rankings",
      "url": "/api/public/rankings.json",
      "format": "application/json",
      "description": "Live national-team selection rankings (medal × level × recency-decay). ?weapon=foil|epee|sabre ?gender=M|F|all ?months=1..60 ?limit=1..500. Distinct from /api/public/leaderboard (all-time medals).",
      "absoluteUrl": "https://fencing.om/api/public/rankings.json"
    },
    {
      "entity": "almajlis",
      "url": "/api/almajlis/sectors.json",
      "format": "application/json",
      "description": "Diwan platform sectors + sub-sectors taxonomy (15 sectors, 40+ sub-sectors). ?sector= to drill down.",
      "absoluteUrl": "https://fencing.om/api/almajlis/sectors.json"
    },
    {
      "entity": "almajlis",
      "url": "/api/almajlis/modules.json",
      "format": "application/json",
      "description": "Diwan module registry with layer/sector/sub-sector/plan tags. ?layer= ?sector= ?group= ?plan= filters.",
      "absoluteUrl": "https://fencing.om/api/almajlis/modules.json"
    },
    {
      "entity": "almajlis",
      "url": "/api/almajlis/health.json",
      "format": "application/json",
      "description": "Diwan platform health + stats: sector/module counts, tenant counts (summary-only, no slugs), uptime, deploy mode.",
      "absoluteUrl": "https://fencing.om/api/almajlis/health.json"
    },
    {
      "entity": "changelog",
      "url": "/changelog.rss.xml",
      "format": "application/rss+xml",
      "description": "Sprint changelog RSS (last 100 iters).",
      "absoluteUrl": "https://fencing.om/changelog.rss.xml"
    },
    {
      "entity": "changelog",
      "url": "/changelog.atom.xml",
      "format": "application/atom+xml",
      "description": "Sprint changelog Atom 1.0 (last 100 iters).",
      "absoluteUrl": "https://fencing.om/changelog.atom.xml"
    },
    {
      "entity": "changelog",
      "url": "/api/public/changelog",
      "format": "application/json",
      "description": "Sprint changelog JSON (?limit=N, max 500).",
      "absoluteUrl": "https://fencing.om/api/public/changelog"
    },
    {
      "entity": "discovery",
      "url": "/sitemap.xml",
      "format": "application/xml",
      "description": "Sitemap index.",
      "absoluteUrl": "https://fencing.om/sitemap.xml"
    },
    {
      "entity": "discovery",
      "url": "/.well-known/security.txt",
      "format": "text/plain",
      "description": "RFC 9116 security contact.",
      "absoluteUrl": "https://fencing.om/.well-known/security.txt"
    },
    {
      "entity": "discovery",
      "url": "/opensearch.xml",
      "format": "application/opensearchdescription+xml",
      "description": "OpenSearch 1.1 descriptor.",
      "absoluteUrl": "https://fencing.om/opensearch.xml"
    },
    {
      "entity": "discovery",
      "url": "/api/openapi.json",
      "format": "application/json",
      "description": "OpenAPI 3.1 descriptor.",
      "absoluteUrl": "https://fencing.om/api/openapi.json"
    }
  ]
}