Enter the admin passphrase to access maintenance tools.
Passphrase is stored in GCP Secret Manager (ADMIN_PASSPHRASE). See docs/ops/admin-console.md to rotate.
When to use — Functions
Off-season (Jun–Jul): click Apply off-season mode — disables live scrapers and raw bootstrap archives.
Pre-season: re-enable scrapers individually (or turn off off-season mode), then use Run now on scrapeBootstrapStatic and scrapeFixtures once new-season data is live.
In-season: leave bootstrap (5am/5pm), fixtures (6am/6pm), and active-window (30 min) on. Use ingestion runs table to spot failures.
Run now — manual scrape; ignores the disable toggle but respects ingestion options (e.g. raw archives off).
Ingestion options
Apply when bootstrap scrapers run (scheduled or manual). SQL player/team upserts still run; only raw Storage archives and snapshot metadata are skipped when disabled. Social drafts run after each baseline bootstrap scrape when enabled.
Debug raw bootstrap JSON under fpl-api-raw/bootstrap-static/ (when archives enabled).
Off-season: archives are usually off — expect few or no new files.
Danger zone can delete mirror archives before a new season.
When to use — Social drafts
After scrapeBootstrapStatic (5am/5pm UTC), auto-generated PNGs appear here when Generate social drafts is enabled on the Functions tab.
Use Generate from data to run the same pipeline on demand (price + player updates since the last watermark). Safe to use after missed scrapes — advances the watermark so scheduled runs won’t duplicate.
Use Create custom post for one-off announcements (deadline reminders, app updates, etc.).
Download PNGs and copy captions for manual Instagram upload.
Toggle generation under Functions → Ingestion options (same as Firestore system_config/social_drafts.enabled).
New season checklist (manual)
Danger zone: SQL truncate → clear mirrors/Storage → reset user season data (watchlist, assistant, stock exchange).
Functions: Run bootstrap + fixtures manually; re-enable scrapers.
Step 1 — Historic data (below): Probe API → Run ingest (after new-season bootstrap if you need the just-finished season in history_past).
Bulk-ingest FPL element-summaryhistory_past[] into SQL PlayerPriorSeason. ~700 API calls, ~3–10 min. Not on daily crons.
Idle
Import
Season
Rows in SQL
API (sample)
Last ingested
2. Strategy template squads
Rule-based 15-man squads (9 strategies) saved to Firestore preSeasonTemplates. Regenerate individually or all at once. Each strategy persists as soon as it completes.
Strategy
Group
Status
Last generated
Cost
Squad
Raw template JSON
Output
When to use — Danger zone
New season start (order matters): (1) SQL truncate → (2) clear mirrors + Storage → (3) reset user season data.
SQL truncate — wipes all app tables including playerPriorSeason; re-scrape bootstrap after.