{
  "$schema": "https://json-schema.org/draft-04/schema",
  "id": "lobby-config.schema.json",
  "title": "Lobby Project Config",
  "description": "The schema for a Lobby project's configuration.",
  "type": "object",
  "properties": {
    "activeLifespanSeconds": {
      "type": "integer",
      "minimum": 10,
      "maximum": 3600,
      "description":
        "The minimum amount of time, in seconds, that must pass before a lobby is considered inactive."
    },
    "disconnectRemovalTimeSeconds": {
      "type": "integer",
      "minimum": 10,
      "maximum": 3600,
      "description":
        "The minimum amount of time, in seconds, that must pass before a disconnected player is removed from the lobby."
    },
    "disconnectHostMigrationTimeSeconds": {
      "type": "integer",
      "minimum": 5,
      "maximum": 3600,
      "description":
        "The minimum amount of time, in seconds, that must pass before a disconnected host loses host status and triggers a host migration."
    },
    "playerSlots": {
      "type": "object",
      "properties": {
        "minimum": {
          "type": "integer",
          "minimum": 1,
          "maximum": 150
        },
        "maximum": {
          "type": "integer",
          "minimum": 1,
          "maximum": 150
        }
      },
      "required": ["minimum", "maximum"],
      "description": "The minimum and maximum allowed values for a lobby's \"MaxPlayers\" property."
    },
    "socialProfilesEnabled": {
      "type": "boolean",
      "description": "Whether or not to inject profiles from Social Profile data in lobby responses.",
      "default": false
    }
  },
  "required": ["activeLifespanSeconds", "disconnectRemovalTimeSeconds", "disconnectHostMigrationTimeSeconds", "playerSlots"]
}
