Skip to content

Instantly share code, notes, and snippets.

@eransharv
Last active September 9, 2019 10:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save eransharv/74ecac312957309a61f80725abd6951c to your computer and use it in GitHub Desktop.
Save eransharv/74ecac312957309a61f80725abd6951c to your computer and use it in GitHub Desktop.
Validate your Overwolf manifest file against this schema, to check if it is correct and complete. (tested and verified on Overwolf v127)
{
"title": "my first schema test for overwolf apps manifest",
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"id": "http://overwolf.com/schemas/myschema.json",
"required": [
"manifest_version",
"type",
"meta",
"data"
],
"properties": {
"manifest_version": {
"type": "integer",
"description": "Targets the manifest version you are working on. Currently there is only one version, therefore this value is always 1",
"enum": [
1
]
},
"type": {
"type": "string",
"description": "Declares the type of application. Can only be 'WebApp'",
"enum": [
"WebApp",
"Skin",
"GameEventProvider"
]
},
"meta": {
"description": "The extension metadata",
"type": "object",
"required": [
"name",
"author",
"version",
"minimum-overwolf-version",
"description",
"icon"
],
"properties": {
"name": {
"description": "Name of your app",
"type": "string"
},
"author": {
"description": "Who developed the app",
"type": "string"
},
"version": {
"description": "Version of your app",
"$ref": "#/definitions/version_string"
},
"minimum-overwolf-version": {
"description": "Minimum version of the Overwolf Client with which the app is compatible.",
"$ref": "#/definitions/version_string"
},
"description": {
"description": "The description of your app on the Appstore tile",
"type": "string",
"maxLength": 180
},
"dock_button_title": {
"description": "Short name of your app. Provide a short title that will fit in the dock button area",
"type": "string",
"maxLength": 18
},
"icon": {
"description": "A relative path from the app folder to the icon's png file.This is the mouse-over (multi-colored) version of the icon that will be displayed on the Overwolf dock. The icon dimensions should be 256×256 pixels.",
"type": "string"
},
"icon_gray": {
"description": "A relative path from the app folder to the icon's png file. This is the grayscale version of the icon that will be displayed on the Overwolf dock. The icon dimensions should be 256×256 pixels.",
"type": "string"
},
"store_icon": {
"description": "A relative path from the app folder to a png file. This is the icon that will appear in the store library. The icon dimensions should be 200×200 pixels.",
"type": "string"
},
"launcher_icon": {
"description": "A relative path from the app folder to the desktop shortcut icon's ico file..",
"type": "string"
},
"splash_image": {
"description": "A relative path from the app folder to the splash image icon's png file. The image size should be 256x256px. If a this image is missing, Overwolf will use the `icon` image as a splash image ",
"type": "string"
}
},
"additionalProperties": false
},
"permissions": {
"description": "An array of permissions that the app requires.",
"type": "array",
"uniqueItems": true,
"items": {
"type": "string",
"pattern": "(Camera|Microphone|Logging|Extensions|Streaming|DesktopStreaming|Profile|Clipboard|Hotkeys|Media|GameInfo|GameControl|FileSystem|LogitechLed|LogitechArx|OwWebview)"
}
},
"dependencies": {
"description": "An array of unique IDs of other extensions and services that this extension depends on.",
"type": "array",
"uniqueItems": true,
"items": {
"type": "string"
},
"additionalProperties": false
},
"data": {
"description": "Extension data",
"type": "object",
"properties": {
"windows": {
"description": "A map from window names to window settings.",
"type": "object",
"patternProperties": {
".*": {
"$ref": "#/definitions/extension_window_data"
}
}
},
"start_window": {
"description": "The name of the window (from the `windows` list) initially loaded when the app starts.",
"type": "string"
},
"externally_connectable": {
"description": "A definition of external URLs the web app should be able to access",
"$ref": "#/definitions/extension_externally_connectable"
},
"protocol_override_domains": {
"description": "Overwolf apps run under a custom url protocol and domain (overwolf-extension://[extension-id]). This means that protocol-relative urls will try to load from a the overwolf-extension protocol. Unless you want this to happen, you can use protocol_override_domains to override the relative protocol with a preferred one",
"type": "object"
},
"force_browser": {
"description": "Causes links in the app to be opened using the user's default browser or Overwolf's browser. Takes 'user' and 'overwolf' (case insensitive).",
"type": "string",
"pattern": "(user|overwolf)"
},
"plugins": {
"description": "A list of file references to plugins that are provided with the web app. The references should be relative paths from the app folder.",
"type": "array",
"items": {
"type": "string"
}
},
"channel-id": {
"description": "A unique identifier (you will probably need to make sure the id is unique with Overwolf) that is used to communicate with your in-game plugin that is injected into the game",
"type": "string"
},
"game_events": {
"description": "A list of game ids for which game events are required.",
"type": "array",
"uniqueItems": true,
"items": {
"type": "integer"
}
},
"extra-objects": {
"description": "Allows the access of custom plugin dlls",
"type": "object",
"patternProperties": {
".*": {
"$ref": "#/definitions/extra_object"
}
}
},
"hotkeys": {
"description": "The map between the hotkey feature name and it's settings.",
"type": "object",
"patternProperties": {
".*": {
"$ref": "#/definitions/hotkey"
}
}
},
"content_scripts": {
"description": "A list of content scripts to be loaded for specific windows. For instance, for this json, when loading the index window, myscript.js will be loaded and when encountring https://google.com, mystyles.css and myscript2.js will be loaded",
"type": "array",
"items": {
"$ref": "#/definitions/content_script"
}
},
"launch_events": {
"description": "A list of events causing the app to launch. It is enough that one of the events will occur to launch the app.",
"type": "array",
"items": {
"$ref": "#/definitions/launch_event_settings"
}
},
"user_agent": {
"description": "A custom user agent for the app to use when creating http requests. Note that using 'navigator.userAgent' will not return the custom user agent, but the default one.",
"type": "string"
}
}
}
},
"definitions": {
"glob_pattern": {
"type": "string",
"format": "glob-pattern"
},
"icon": {
"$ref": "#/definitions/uri"
},
"match_pattern": {
"type": "string",
"format": "match-pattern",
"pattern": "^((\\*|http|https|file|ftp|chrome-extension):\\/\\/(\\*|\\*\\.[^\\/\\*]+|[^\\/\\*]+)?(\\/.*))|<all_urls>$"
},
"mime_type": {
"type": "string",
"format": "mime-type",
"pattern": "^(?:application|audio|image|message|model|multipart|text|video)\\/[-+.\\w]+$"
},
"page": {
"$ref": "#/definitions/uri"
},
"permissions": {
"type": "array",
"uniqueItems": true,
"items": {
"type": "string",
"format": "permission"
}
},
"scripts": {
"type": "array",
"minItems": 1,
"uniqueItems": true,
"items": {
"$ref": "#/definitions/uri"
}
},
"uri": {
"type": "string",
"format": "uri"
},
"version_string": {
"type": "string",
"pattern": "^(?:\\d{1,5}\\.){0,3}\\d{1,5}$"
},
"size": {
"type": "object",
"properties": {
"width": {
"description": "Defines the width in pixels.",
"type": "integer"
},
"height": {
"description": "Defines the height in pixels.",
"type": "integer"
}
}
},
"point": {
"type": "object",
"properties": {
"top": {
"description": "Defines the position in the Y axis from the top in pixels.",
"type": "integer"
},
"left": {
"description": "Defines the position in the X axis from the left in pixels.",
"type": "integer"
}
}
},
"extension_window_data": {
"type": "object",
"required": [
"file"
],
"properties": {
"file": {
"description": "Points to the file to be loaded inside the window.",
"type": "string"
},
"focus_game_takeover": {
"description": "Allows you to control the behavior of an app window while in a `mouse-less` game state",
"type": "string"
},
"background_optimization": {
"description": "Enables JS engine background optimization. Default value = true.",
"type": "boolean"
},
"focus_game_takeover_release_hotkey": {
"description": "This flag should be used with windows that have the focus_game_takeover: ReleaseOnHidden flag.",
"type": "string"
},
"native_window": {
"description": "Defines whether or not the window is a native window.",
"type": "boolean"
},
"use_os_windowing": {
"description": " Note: Should only be used with desktop_only windows. 1. This flag – when set to true, allows your window to: have a full-screen maximize when calling the overwolf.windows.maximize function allow your window to have a real (task bar) minimize when calling overwolf.windows.minimize",
"type": "boolean"
},
"show_in_taskbar": {
"description": "Define if the window is displayed in the Windows taskbar and alt-tab window selection menu.",
"type": "boolean"
},
"transparent": {
"description": "Indicates whether the window will be transparent and borderless. If set to false a standard Overwolf window will be created",
"type": "boolean"
},
"resizable": {
"description": "Indicates whether the window can be resized.",
"type": "boolean"
},
"is_background_page": {
"description": "Should be used with main hidden / background window. When set to 'true', the window will not be visible (for better performance)",
"type": "boolean"
},
"grab_focus_on_desktop": {
"description": "Indicates whether the window will grab the focus automatically when it opens, or leave the focus untouched. Default value = true. Only relevant when in the desktop – for in-game focus behavior, use grab_keyboard_focus.",
"type": "boolean"
},
"popup_blocker": {
"description": "Prevents new browser windows being opened automatically using script. Default value = false",
"type": "boolean"
},
"mute": {
"description": "Mute sounds in window",
"type": "boolean"
},
"show_minimize": {
"description": "Indicates whether to show the window minimize button. Only relevant when not in transparent mode.",
"type": "boolean"
},
"clickthrough": {
"description": "Indicates whether the window will not receive clicks in-game, instead, the clicks will be passed on to the game.",
"type": "boolean"
},
"disable_rightclick": {
"description": "When set to true, disable right clicks entirely for this window.",
"type": "boolean"
},
"forcecapture": {
"description": "Indicates whether this window should always be included in recordings, overriding any other setting.",
"type": "boolean"
},
"keep_window_location": {
"description": "Window location won't be changed when game focus is changed",
"type": "boolean"
},
"show_maximize": {
"description": "Enables window maximize button. Relevant only for the standard Overwolf window (`transparent`: false) . Default value = false",
"type": "boolean"
},
"disable_blur": {
"description": "Causes the app's window to never lose focus, so the window.onblur event is never triggered. Default value = false",
"type": "boolean"
},
"allow_local_file_access": {
"description": "Allows access to local files that are not located in your app's (extension) folder. Default value = false",
"type": "boolean"
},
"show_only_on_stream": {
"description": "Indicates whether this window is visible only in streams (not visible to the streamer), overriding any other setting.",
"type": "boolean"
},
"ignore_keyboard_events": {
"description": "Indicates whether the window will not receive keyboard events. Instead, the keyboard events will be passed on to the game.",
"type": "boolean"
},
"enable_top_isolation": {
"description": "Enable iframe isolation (should be used with Overwolf ads, please contact us before adding it to your app), Default value = true",
"type": "boolean"
},
"in_game_only": {
"description": "Indicates whether the window will be visible only in game and not on the desktop.",
"type": "boolean"
},
"desktop_only": {
"description": "Indicates whether the window will be visible only on the desktop and not while in game.",
"type": "boolean"
},
"disable_restore_animation": {
"description": "Indicates whether the window will animate on minimize/restore while in game.",
"type": "boolean"
},
"grab_keyboard_focus": {
"description": "Indicates whether the window will grab the keyboard focus automatically when it opens, or leave the keyboard focus untouched.",
"type": "boolean"
},
"size": {
"description": "Defines the size of the window in pixels.",
"$ref": "#/definitions/size"
},
"min_size": {
"description": "Defines the minimum size of the window in pixels.",
"$ref": "#/definitions/size"
},
"max_size": {
"description": "Defines the maximum size of the window in pixels.",
"$ref": "#/definitions/size"
},
"start_position": {
"description": "The default start position of the window in pixels from the top left corner.",
"$ref": "#/definitions/point"
},
"topmost": {
"description": "Indicates whether the window will be on top of other Overwolf windows. Handle with care as topmost windows can negatively impact user experience.",
"type": "boolean"
},
"block_top_window_navigation": {
"description": "Refrain from page-take-over by links",
"type": "boolean"
}
},
"additionalProperties": false
},
"extension_externally_connectable": {
"type": "object",
"properties": {
"matches": {
"description": "Array of web page URL patterns to match with an external server URL. Use star (*) in place of subdomain to allow access to all subdomains.",
"type": "array"
}
},
"additionalProperties": false
},
"hotkey": {
"type": "object",
"required": [
"title"
],
"properties": {
"title": {
"description": "Name of the hotkey as it will appear in the Hotkey tab in the settings.",
"type": "string"
},
"default": {
"description": "The default key combination.",
"type": "string"
},
"action-type": {
"description": "Defines the behavior of the hotkey.",
"type": "string",
"enum": [
"toggle",
"custom"
]
},
"passthrough": {
"description": "Defines the behavior of the hotkey.",
"type": "boolean"
}
},
"additionalProperties": false
},
"content_script": {
"type": "object",
"properties": {
"windows": {
"description": "The list of windows for which to apply this content script.",
"type": "string"
},
"matches": {
"description": "The list of urls for which to apply this content script.",
"type": "string"
},
"css": {
"description": "The list of css files to be applied in this content script..",
"type": "string"
},
"js": {
"description": "The list of js files to be applied in this content script.",
"type": "string"
}
},
"additionalProperties": false
},
"launch_event_settings": {
"type": "object",
"properties": {
"event": {
"description": "The type name of the event.",
"type": "string",
"enum": [
"GameLaunch","AllGamesLaunch"
]
},
"event_data": {
"description": "The event data.",
"$ref": "#/definitions/launch_event"
},
"start_minimized": {
"description": "\tThe app's main window will start minimized.",
"type": "boolean"
},
"include_launchers": {
"description": "The app will be launched when game launcher is detected.",
"type": "boolean"
}
},
"additionalProperties": false
},
"launch_event": {
"type": "object",
"properties": {
"game_ids": {
"description": "The list of game class IDs for which the app will launch.",
"type": "array",
"items": {
"type": "integer"
}
},
"wait_for_stable_framerate": {
"description": "The app won't start until the game's framerate will stabilize around or above the stated framerate.",
"type": "integer"
}
},
"additionalProperties": false
},
"extra_object": {
"type": "object",
"properties": {
"file": {
"type": "string"
},
"class": {
"type": "string"
}
},
"additionalProperties": false
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment