{
  "name": "MAX Finder",
  "description": "Free MAX JEUNE / MAX SENIOR (ex-TGVmax) seat availability from SNCF open data. Static, serverless, no accounts.",
  "homepage": "https://davd-gzl.github.io/MAX-Finder/",
  "license": "AGPL-3.0-only",
  "dataLicense": "Licence Ouverte / Open Licence",
  "notAffiliatedWith": "SNCF",
  "isTicketSeller": false,
  "updateFrequency": "daily",
  "bookingHandoff": "https://www.sncf-connect.com/",
  "endpoints": {
    "availability": {
      "url": "data/tgvmax.json",
      "contentType": "application/json",
      "shape": "Array<Record>"
    },
    "meta": {
      "url": "data/meta.json",
      "contentType": "application/json"
    },
    "stations": {
      "url": "data/stations.json",
      "contentType": "application/json"
    }
  },
  "record": {
    "date": "string (YYYY-MM-DD)",
    "origine": "string (SNCF station label)",
    "destination": "string (SNCF station label)",
    "heure_depart": "string (HH:MM)",
    "heure_arrivee": "string (HH:MM)",
    "train_no": "string",
    "od_happy_card": "\"OUI\" = free MAX seat reservable | \"NON\" = not",
    "axe": "string (optional line/axis)"
  },
  "search": {
    "base": "https://davd-gzl.github.io/MAX-Finder/",
    "method": "GET (query string deep-link)",
    "params": {
      "mode": [
        "from",
        "to",
        "od",
        "tour",
        "best"
      ],
      "from": "origin station id",
      "to": "destination station id (in tour mode: optional finish city; = from for a loop)",
      "date": "YYYY-MM-DD",
      "conn": "0 | 1 | 2 | 3 | 6 (max changes; 6 = unlimited; default 1)",
      "card": "jeune | senior",
      "after": "HH:MM (depart after)",
      "before": "HH:MM (depart before)",
      "maxdur": "integer minutes (max total journey duration)",
      "type": "axis: SUD EST | ATLANTIQUE | NORD | EST",
      "via": "station id to route through (mode=od)",
      "flex": "1 | 2 | 3 | 7 (also search +/- N days around date; mode=od/from/to/tour)",
      "rdate": "YYYY-MM-DD (return date for a round trip; mode=od)",
      "legs": "~-separated from>to@YYYY-MM-DD hops for an explicit multi-city itinerary (mode=tour)",
      "span": "integer (max journey length in days; mode=od)",
      "rad": "integer 10-300 (search radius in km for nearby paid-connection alternatives; mode=od)",
      "night": "1 to allow long overnight layovers at a hub",
      "nonight": "1 to exclude night trains",
      "onlynight": "1 to keep only journeys arriving on a night train",
      "arrbefore": "HH:MM (arrive before)",
      "rg": "region label (mode=best or tour)",
      "rt": "1 for round-trip getaways: day trips + N-night escapes (mode=from, od or best). With mode=od it sweeps start days for one destination; with mode=from it browses every destination",
      "nights": "integer 1-3 (nights away for a getaway; mode=from/od/best with rt=1)",
      "fn": "1 for flexible nights (0-3, best per destination; with rt=1)",
      "stayh": "integer 1-12 (min hours on site for a same-day getaway; with rt=1)",
      "late": "1 to allow a late return on a getaway (with rt=1)",
      "cities": "~-separated station ids to visit (mode=tour, plan surface)",
      "dmin": "integer (min days per city; mode=tour, default 1)",
      "dmax": "integer (max days per city; mode=tour, default 3)",
      "maxkm": "integer (cap on the tour's total straight-line distance in km; mode=tour)",
      "legkm": "integer (cap on each hop's straight-line distance in km; mode=tour)",
      "legdur": "integer minutes (max per-hop duration; mode=tour)",
      "legdurmin": "integer minutes (min per-hop duration; mode=tour)",
      "by": "YYYY-MM-DD (tour finish-by date; mode=tour with a finish city)",
      "sort": "rec | trains | days | closest | fastest | name (result ordering)",
      "lang": "UI language: fr | en | es | de | it | pt | nl | ko | ja | zh | ar"
    }
  },
  "docs": {
    "faq": "https://davd-gzl.github.io/MAX-Finder/faq/",
    "howItWorks": "https://davd-gzl.github.io/MAX-Finder/docs/how-it-works.html",
    "algorithms": "https://davd-gzl.github.io/MAX-Finder/docs/algorithms.html",
    "llms": "https://davd-gzl.github.io/MAX-Finder/llms.txt",
    "llmsFull": "https://davd-gzl.github.io/MAX-Finder/llms-full.txt"
  }
}
