Files
SmokeAPI/res/SmokeAPI.schema.json
2025-09-21 22:18:27 +05:00

158 lines
4.8 KiB
JSON

{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://raw.githubusercontent.com/acidicoala/SmokeAPI/refs/tags/v3.1.5/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,
"x-packaged-default": true,
"description": "Enables logging to SmokeAPI.log.log file.",
"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/v3.1.5/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"
}
}
}
}
]
}