{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/acidicoala/SmokeAPI/refs/tags/v4.0.0/res/SmokeAPI.schema.json",
  "title": "SmokeAPI configuration",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "type": "string",
      "description": "URL of a JSON Schema that corresponds to this config.",
      "x-default": "[SmokeAPI.schema.json](res/SmokeAPI.schema.json)",
      "x-valid-values": "URL to a valid SmokeAPI config JSON schema."
    },
    "$version": {
      "type": "integer",
      "description": "Reserved for use by tools like GUI config editors.",
      "const": 4,
      "x-valid-values": "Integer numbers from 1 and beyond."
    },
    "logging": {
      "type": "boolean",
      "default": false,
      "description": "Enables logging to SmokeAPI.log.log file.",
      "x-packaged-default": true,
      "x-valid-values": "`true` or `false`."
    },
    "log_steam_http": {
      "type": "boolean",
      "default": false,
      "description": "Toggles logging of SteamHTTP traffic",
      "x-valid-values": "`true` or `false`."
    },
    "default_app_status": {
      "type": "string",
      "description": "Specifies default DLC status.",
      "default": "unlocked",
      "$ref": "#/$defs/AppStatus",
      "x-valid-values": "`\"unlocked\"` or `\"locked\"` or `\"original\"`."
    },
    "override_app_status": {
      "type": "object",
      "default": {},
      "description": "Overrides the status of all DLCs that belong to a specified app ID.",
      "patternProperties": {
        "^\\d{1,10}$": {
          "$ref": "#/$defs/AppStatus"
        }
      },
      "additionalProperties": false,
      "x-valid-values": "An object with `\"key\": \"value\"` pairs, where key is App ID and value is App status."
    },
    "override_dlc_status": {
      "type": "object",
      "default": {},
      "description": "Overrides the status of individual DLCs, regardless of the corresponding app status.",
      "patternProperties": {
        "^\\d{1,10}$": {
          "$ref": "#/$defs/AppStatus"
        }
      },
      "additionalProperties": false,
      "x-valid-values": "An object with `\"key\": \"value\"` pairs, where key is DLC ID and value is DLC status."
    },
    "auto_inject_inventory": {
      "type": "boolean",
      "default": true,
      "description": "Specifies whether SmokeAPI should automatically inject a list of all registered inventory items, when a game queries user inventory",
      "x-valid-values": "`true` or `false`."
    },
    "extra_inventory_items": {
      "type": "array",
      "default": [],
      "description": "A list of inventory item IDs that will be added in addition to the automatically injected items.",
      "items": {
        "type": "integer",
        "minimum": 0
      },
      "x-valid-values": "An array of integer App IDs."
    },
    "extra_dlcs": {
      "type": "object",
      "default": {},
      "description": "See [Extra info](#-how-smokeapi-works-in-games-with-large-number-of-dlcs) to understand the use case for this option.",
      "patternProperties": {
        "^\\d{1,10}$": {
          "$ref": "#/$defs/App"
        }
      },
      "additionalProperties": false,
      "x-valid-values": "An object with `\"key\": \"value\"`, where the key is App ID and value is an object with `\"dlcs\"` property. See the complete example for more."
    }
  },
  "$defs": {
    "AppStatus": {
      "description": "Unlock status for apps or DLCs.",
      "type": "string",
      "enum": [
        "original",
        "unlocked",
        "locked"
      ]
    },
    "App": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "dlcs": {
          "type": "object",
          "default": {},
          "description": "Map of DLC IDs to human-readable DLC names.",
          "patternProperties": {
            "^\\d{1,10}$": {
              "type": "string"
            }
          },
          "additionalProperties": false
        }
      }
    }
  },
  "examples": [
    {
      "$schema": "https://raw.githubusercontent.com/acidicoala/SmokeAPI/refs/tags/v4.0.0/res/SmokeAPI.schema.json",
      "$version": 4,
      "logging": true,
      "log_steam_http": true,
      "default_app_status": "unlocked",
      "override_app_status": {
        "1234": "original",
        "4321": "unlocked"
      },
      "override_dlc_status": {
        "1234": "original",
        "4321": "unlocked",
        "5678": "locked"
      },
      "auto_inject_inventory": true,
      "extra_inventory_items": [
        9876,
        8765,
        7654
      ],
      "extra_dlcs": {
        "1234": {
          "dlcs": {
            "56789": "Example DLC 1"
          }
        },
        "4321": {
          "dlcs": {
            "98765": "Example DLC 2",
            "98766": "Example DLC 3"
          }
        }
      }
    }
  ]
}