{"openapi":"3.1.0","info":{"title":"Spegeln Public API","version":"1.0.0","description":"Anonymiserade och aggregerade data för leaderboard, dashboards och myndighetsscorecards. Premium-access för bulkdata och integrationer granskas separat."},"servers":[{"url":"https://spegeln.org/api/public"}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"x-api-key"}},"schemas":{"LeaderboardEntry":{"type":"object","properties":{"rank":{"type":"integer"},"alias":{"type":"string"},"score":{"type":"integer"},"complaintsWithResponse":{"type":"integer"},"investigationsReported":{"type":"integer"},"peerEndorsements":{"type":"integer"},"upvotes":{"type":"integer"}}},"DashboardItem":{"type":"object","properties":{"authorityId":{"type":"string"},"authorityName":{"type":"string"},"category":{"type":"string"},"regionCode":{"type":["string","null"]},"countryCode":{"type":"string"},"complaints":{"type":"integer"},"investigations":{"type":"integer"},"reports":{"type":"integer"},"attentionScore":{"type":"integer"},"resolutionRate":{"type":"number"}}},"ApiAccessTier":{"type":"object","properties":{"tier":{"type":"string"},"monthlyPriceSek":{"type":"integer"},"scopes":{"type":"array","items":{"type":"string"}},"notes":{"type":"string"}}}}},"security":[{"ApiKeyAuth":[]}],"paths":{"/register":{"post":{"summary":"Registrera en publik API-konsument","description":"Standardregistrering för anonymiserade endpoints. Premium-access och bulkdata öppnar tyngre flöden för redaktioner, partnerpaneler och egna verktyg.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["name","email"],"properties":{"name":{"type":"string"},"email":{"type":"string","format":"email"},"scopes":{"type":"array","items":{"type":"string"}},"countryCode":{"type":"string"}}}}}},"responses":{"201":{"description":"API key created"}}}},"/leaderboard":{"get":{"summary":"Hämta pseudonymiserad leaderboard","parameters":[{"name":"window","in":"query","schema":{"type":"string","enum":["weekly","monthly","all-time"]}},{"name":"country","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Leaderboard rows","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/LeaderboardEntry"}}}}}}}}}},"/dashboard":{"get":{"summary":"Hämta realtidsaggregerad myndighetsdashboard","parameters":[{"name":"country","in":"query","schema":{"type":"string"}},{"name":"region","in":"query","schema":{"type":"string"}},{"name":"category","in":"query","schema":{"type":"string"}},{"name":"period","in":"query","schema":{"type":"string","enum":["7d","30d","90d"]}}],"responses":{"200":{"description":"Dashboard rows","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/DashboardItem"}}}}}}}}}},"/scorecards":{"get":{"summary":"Hämta myndighetsscorecards med reproducerbara formler","parameters":[{"name":"country","in":"query","schema":{"type":"string"}},{"name":"region","in":"query","schema":{"type":"string"}},{"name":"category","in":"query","schema":{"type":"string"}},{"name":"period","in":"query","schema":{"type":"string","enum":["7d","30d","90d"]}}],"responses":{"200":{"description":"Scorecard rows"}}}},"/access-tiers":{"get":{"summary":"Beskriv publika och premiumorienterade API-nivåer","responses":{"200":{"description":"Available access tiers","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/ApiAccessTier"}}}}}}}}}}}}