{
  "changelog": [
    {
      "id": "2026-04-partner-match-data-rate-limit",
      "date": "2026-04-11",
      "status": "active",
      "category": "improvement",
      "title": "Raised rate limits on partnerGetMatchIds and partnerGetMatchData",
      "description": "The rate limits on partnerGetMatchIds and partnerGetMatchData have been raised from 10 requests per 60 seconds to 120 requests per 60 seconds per partner (an average of 2 requests per second). Partners can now process the full list of 50 match IDs in a fraction of the previous time. Limits continue to be enforced per partnerId via Redis using a fixed 60-second window.",
      "affectedEndpoints": [
        "partner-get-match-ids",
        "partner-get-match-data"
      ]
    },
    {
      "id": "2026-03-discord-map-vote-bot",
      "date": "2026-03-03",
      "status": "active",
      "category": "new-endpoint",
      "title": "Bifrost Discord Map Vote Bot",
      "description": "The official Bifrost Discord Map Vote bot is now available. Invite it to your Discord server, connect your API credentials, and let your community vote on the next map directly in Discord. The bot monitors your game servers, automatically triggers votes when score or time thresholds are met, and sets the winning map via the API. Supports multiple servers per guild with independent vote channels and trigger settings. See the Discord Bot page for setup instructions."
    },
    {
      "id": "2026-03-gamestate-pending-next-map",
      "date": "2026-03-03",
      "status": "active",
      "category": "improvement",
      "title": "New field: pendingNextMap on guildGetGameState",
      "description": "The guildGetGameState query now returns a pendingNextMap field. When a next map has already been set for the current match (e.g. by a Discord vote), this field contains the map RCON name. Returns null if no map is pending. This is an additive, non-breaking change — existing integrations are unaffected.",
      "affectedEndpoints": [
        "get-game-state"
      ]
    },
    {
      "id": "2026-03-set-next-map",
      "date": "2026-03-02",
      "status": "active",
      "category": "new-endpoint",
      "title": "New endpoint: guildSetNextMap (Discord votemap)",
      "description": "New mutation for Discord bot votemap integration. Run map votes in your Discord server, then call guildSetNextMap with the winning map. The map is set as the next to play and the original rotation is automatically restored afterward. Requires votemap to be enabled with mode set to \"Discord via API\" in the control panel.",
      "affectedEndpoints": [
        "set-next-map"
      ]
    },
    {
      "id": "2026-03-rate-limiting-enforcement",
      "date": "2026-03-02",
      "status": "upcoming",
      "category": "breaking",
      "title": "Rate limiting enforcement beginning 16th March",
      "description": "Guild-level request budgets and per-query/mutation rate limits have now been fully documented and will be enforced starting the week commencing 16th March 2026. All developers should review the Rate Limiting documentation and ensure their scripts, bots, and integrations are correctly configured to handle HTTP 429 responses and respect the documented limits before this date.",
      "actionRequired": true,
      "targetDate": "2026-03-16"
    }
  ],
  "generatedAt": "2026-04-23T14:30:33.405Z"
}