/** * This file was automatically generated by json-schema-to-typescript. * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, * and run json-schema-to-typescript to regenerate this file. */ /** * Configuration settings for SSO, SSPI, Gateway or custom authentication mechanisms. */ export type AuthController = { /** * The authentication controller type. */ authController: string; /** * Optional settings for the gateway authentication dialog. */ options?: { /** * Visual theme for the gateway login dialog. */ theme?: "black" | "white"; /** * Settings for the login window. */ window?: { /** * Optional URL of a custom login page. The page must use `glue42basicAuth.send("login", { username, password })` to submit credentials. If omitted, the built-in login page is used. * * The auth window has a privileged preload script attached, so only trusted protocols are allowed: `file:`, `https:`, and `http:` for `localhost` / `127.0.0.1` / `[::1]` only. Any other scheme (`data:`, `javascript:`, custom schemes) or non-localhost `http:` URL is rejected at startup with a fatal error. */ url?: string; /** * Width in pixels for the login window. */ width?: number; /** * Height in pixels for the login window. */ height?: number; }; }; } | { /** * The authentication controller type. */ authController: string; options?: SsoConfig; } | { /** * The authentication controller type. */ authController: string; /** * Optional settings for custom authentication. The structure depends on your custom implementation. */ options?: { [k: string]: any; }; } | { /** * The authentication controller type. */ authController: string; /** * Optional settings for SSPI authentication. */ options?: { [k: string]: any; }; }; /** * Settings for SSO authentication. */ export type AuthController1 = { /** * The authentication controller type. */ authController: string; /** * Optional settings for the gateway authentication dialog. */ options?: { /** * Visual theme for the gateway login dialog. */ theme?: "black" | "white"; /** * Settings for the login window. */ window?: { /** * Optional URL of a custom login page. The page must use `glue42basicAuth.send("login", { username, password })` to submit credentials. If omitted, the built-in login page is used. * * The auth window has a privileged preload script attached, so only trusted protocols are allowed: `file:`, `https:`, and `http:` for `localhost` / `127.0.0.1` / `[::1]` only. Any other scheme (`data:`, `javascript:`, custom schemes) or non-localhost `http:` URL is rejected at startup with a fatal error. */ url?: string; /** * Width in pixels for the login window. */ width?: number; /** * Height in pixels for the login window. */ height?: number; }; }; } | { /** * The authentication controller type. */ authController: string; options?: SsoConfig; } | { /** * The authentication controller type. */ authController: string; /** * Optional settings for custom authentication. The structure depends on your custom implementation. */ options?: { [k: string]: any; }; } | { /** * The authentication controller type. */ authController: string; /** * Optional settings for SSPI authentication. */ options?: { [k: string]: any; }; }; /** * Custom string to use for the `User-Agent` request header. */ export type UserAgentConfig = string | { /** * Type of the `User-Agent` string. If set to `"chromium"`, will use the default Chromium `User-Agent` string without the Electron token. If set to `"custom"`, you must provide a custom string via the `"value"` property. */ type: "chromium" | "custom"; /** * Custom string to use for the `User-Agent` request header. Valid only if `"type"` is set to `"custom"`. This value will replace the entire default `User-Agent` string. */ value?: string; /** * String to append to the end of the clean Chromium `User-Agent` string. Valid only if `"type"` is set to `"chromium"`. Use this to add custom tokens to the clean Chromium `User-Agent` string. */ append?: string; [k: string]: any; }; /** * Settings for app stores. */ export type AppStoreConfig = AppStorePathConfig | AppStoreGcsConfig | AppStoreRestConfig | AppStorePermissionsFileConfig | SingleAppStorePathConfig | ServerStoreConfig | InMemoryStoreConfig; /** * System configuration settings for **io.Connect Desktop**. */ export interface SystemConfig { /** * If `true`, will enable additional platform features such as support for UI integration of native apps (Java, .NET), classic groups, non-rectangular window groups, and more. The advanced mode is available only on Windows and is disabled by default. It's recommended to use this mode only if your use case absolutely requires using classic groups or visual integration of native apps (e.g., native apps participating in Workspaces or window groups), because enabling it activates heavy internal logic for processing native app windows which leads to overall performance disadvantages. */ advancedMode?: boolean; /** * Version string to be displayed in selected UI elements of **io.Connect Desktop** instead of the default product version. This version is for display purposes only and doesn't have to be a valid semantic version string. It will be used in various UI elements, including the splash screen, the tray menu, the About app, and more. The value defined here will be accessible via the `uiVersion` property of the `iodesktop` object injected in the global `window` object by the io.Connect API (i.e., `iodesktop.uiVersion`). */ uiVersion?: string; /** * **io.Connect Desktop** region. */ region: string; /** * **io.Connect Desktop** environment. */ env: string; /** * Settings for additional system configuration sources to be used by **io.Connect Desktop**. */ systemConfigurations?: { /** * Array of objects each describing a configuration source from which **io.Connect Desktop** will load system configurations. Multiple sources can be specified and will be merged based on priority. */ sources?: ConfigSource[]; }; /** * Activates the GTF setup. */ enableGTF?: boolean; /** * Deprecated. Enables the Flash plugin. */ flash?: boolean | string; server?: ServerConfig; commands?: CommandsConfig; /** * Settings for the built-in search provider of **io.Connect Desktop**. */ searchProvider?: { /** * If `true`, will enable the default search provider of **io.Connect Desktop**. */ enabled?: boolean; /** * Predefined search types for which the provider will return results. */ types?: string[]; }; /** * Configuration for the service which is used to retrieve the name of the logged in user. */ nameLookupService?: { /** * If `true`, will enable the service for retrieving the name of the logged in user. */ enabled?: boolean; /** * URL pointing to the service for retrieving the name of the logged in user. */ url?: string; /** * Path to the name values returned by the service (e.g., `{people[0].nameFirst} {people[0].nameLast}`. */ name?: string; }; /** * Authentication settings. */ auth?: boolean | string | AuthController | { /** * Username to be used for authentication. */ username: string; /** * Password to be used for authentication. */ password: string; }; ssoAuth?: AuthController1; entraSSO?: EntraSsoConfig; gw: IoConnectGatewayConfiguration; /** * Settings for the io.Connect Channels. */ channels?: { /** * If `true`, the io.Connect Channels defined here will be available as system Channels to all interop-enabled apps. */ enabled?: boolean; /** * Array of Channel definition objects describing the default system Channels. You can define as many Channels as you need. */ definitions?: ChannelConfig[]; }; /** * Settings for the io.Connect Windows. */ windows?: { /** * Minimum width in pixels for the io.Connect Windows. */ minWidth?: number; /** * Maximum width in pixels for the io.Connect Windows. */ maxWidth?: number; /** * Minimum height in pixels for the io.Connect Windows. */ minHeight?: number; /** * Maximum height in pixels for the io.Connect Windows. */ maxHeight?: number; /** * If `true`, the window will be focused when created. */ focus?: boolean; /** * If `true`, will log all window event received from all io.Connect Windows. */ enableEventLogging?: boolean; /** * Settings for the context menu of io.Connect Windows. */ contextMenu?: { /** * If `true`, will enable the context menu for io.Connect Windows. */ enabled?: boolean; /** * Mode for the context menu. Set to `"native"` to use the standard built-in context menu. Set to `"custom"` to use your own implementation for a context menu. */ mode?: "native" | "custom"; }; /** * Global security settings. */ security?: { /** * If `true`, will allow an HTTPS page to run JavaScript, CSS or plugins from HTTP URLs. */ allowRunningInsecureContent?: boolean; /** * If `true`, web security will be enabled. Set to `false` to disable the same-origin policy (e.g., for testing purposes) and to set `"allowRunningInsecureContent"` to `true`. */ webSecurity?: boolean; /** * Deprecated. Use `"nativeWindowOpen"` instead. */ popups?: boolean; /** * Deprecated. Use `"onCertificateError"` instead. */ stopLoadingOnCertificationErrors?: boolean; /** * Settings for handling web pages with invalid certificates. */ onCertificateError?: { /** * Controls the behavior for loading web pages with invalid certificates - whether to allow or deny loading the page, or to ask the user. */ action?: "allow" | "deny" | "ask"; /** * URL pointing to a page that will be shown to the user and will allow them to report the issue. Only valid if `"action"` is set to `"ask"`. */ reportURL?: string; }; /** * If `true`, dragging and dropping a file or a link onto the page will trigger navigation. */ navigateOnDragDrop?: boolean; /** * If `true`, the renderer associated with the window will be sandboxed, making it compatible with the Chromium OS-level sandbox and disabling the Node.js engine. */ sandbox?: boolean; /** * If `true`, will allow running code in preload scripts and in Electron APIs in a dedicated JavaScript context. Context isolation allows each script running in the renderer process to make changes to its JavaScript environment without conflicting with scripts in the Electron API or preload script. */ contextIsolation?: boolean; /** * If `true`, will enable Node.js integration. */ nodeIntegration?: boolean; /** * List of URI schemes allowed to be opened externally. */ allowedExternalURISchemes?: string[]; }; /** * Settings for downloading files in io.Connect Windows. */ downloadSettings?: { /** * If `true`, will auto save the file (without asking the user where to save it). If `false`, a system save dialog will appear. */ autoSave?: boolean; /** * If `true`, will open the folder that contains the downloaded file after the download is completed. */ autoOpenPath?: boolean; /** * If `true`, will open the download file after the download is completed. */ autoOpenDownload?: boolean; /** * If `true`, will enable the window to download files. */ enable?: boolean; /** * If `true`, a download bar tracking the download progress will appear at the bottom of the window. If `false`, the download process will be invisible. */ enableDownloadBar?: boolean; /** * If `true`, a "Download" button will be available at the top of the window. The "Download" button opens a download popup in the current window which displays all downloads initiated by the user and provides controls for managing them. Defaults to `true` in the default platform mode and to `false` in the advanced platform mode. */ enableDownloadButton?: boolean; /** * Location where the downloaded file will be saved. Due to security reasons, there are only two possible locations for downloads: the Windows "Temp" or "Downloads" folder. */ path?: string; /** * If `true`, empty windows opened when the user clicks on a download link with a `"target=_blank"` attribute will be closed automatically. */ closeBlankDownloadWindows?: boolean; }; /** * Settings for the handlers executed when an io.Connect Window is about to be refreshed. */ refreshHandlers?: { /** * If `true`, refresh handlers will be enabled. */ enabled?: boolean; /** * Interval in milliseconds to wait for the refresh handler to complete its operation. */ timeout?: number; }; /** * Settings for the handlers executed when an io.Connect Window is about to be closed. */ closeHandlers?: { /** * If `true`, close handlers will be enabled. */ enabled?: boolean; /** * Interval in milliseconds to wait for the close handler to complete its operation. */ timeout?: number; }; /** * If `true`, will inject the SID in the window context after successful SSO authentication. */ injectSIDtoContext?: boolean; /** * Settings for zooming in web apps. */ zoom?: { /** * If `true`, will enable zooming. */ enabled?: boolean; /** * If `true`, will enable zooming with `CTRL` + `mouse scroll`. */ mouseWheelZoom?: boolean; /** * List of zoom factors to be used when the user zooms in or out of the window. The factors must be in ascending order and may have integer or floating point values. Zooming will only work with factor values within the range of `25` to `500`. Avoid passing negative values when setting the zoom factor (via configuration or programmatically), as this will cause unexpected behavior. */ factors?: number[]; /** * Default zoom factor within the range of `25` to `500`. Avoid negative values. */ defaultFactor?: number; /** * Determines the default zoom behavior for web apps. If set to `"domain"`, changes in the zoom factor will be applied to the current window, as well as to all other windows within the same domain (default web browser behavior). If set to `"window"`, changes in the zoom factor will be applied only to the current window and won't affect other windows within the domain. */ mode?: "domain" | "window"; /** * Keyboard shortcuts for zooming actions. */ shortcuts?: { /** * Keyboard shortcuts for zooming in. */ zoomIn?: string[]; /** * Keyboard shortcuts for zooming out. */ zoomOut?: string[]; /** * Keyboard shortcuts for resetting the zoom factor to the default value. */ resetZoom?: string[]; [k: string]: any; }; }; /** * If `true`, the headers of io.Connect Window groups will be hidden. Valid only for apps of type `"window"`. */ hideGroupHeader?: boolean; /** * Settings for auto injecting and auto initializing the `@interopio/desktop` library. This allows you to access the factory function without referencing the library in your apps, and possibly skip the initialization logic in your apps. */ autoInjectAPI?: { /** * If `true`, will enable auto injecting the `@interopio/desktop` library. */ enabled: boolean; /** * Semantic version of the library to inject. It's recommended to use a specific version and avoid wildcard versions. */ version: string; /** * Setting for auto initializing the `@interopio/desktop` library. Accepts either a `boolean` value, or a `Config` object with which to initialize the library. */ autoInit?: boolean | { [k: string]: any; }; /** * List of io.Connect app names in which the `@interopio/desktop` library will be injected. */ allowed?: string[]; /** * List of io.Connect app names in which the `@interopio/desktop` library won't be injected. */ blocked?: string[]; }; /** * Settings for auto injecting the `@interopio/fdc3` library. This allows you to access the library without referencing it in your apps. */ autoInjectFdc3?: { /** * If `true`, will enable auto injecting the `@interopio/fdc3` library. */ enabled: boolean; /** * Settings for the `@interopio/fdc3` library to be injected. */ library?: { /** * URL pointing to a locally or remotely hosted `@interopio/fdc3` library, or a string specifying the version of the `@interopio/fdc3` library to be used from the locally available packages in the `%LocalAppData%/interop.io/io.Connect Desktop/Desktop/assets` folder. */ source?: string; /** * Fallback location of the `@interopio/fdc3` library in case the one specified in the `"source"` property doesn't load. Accepts a URL pointing to a locally or remotely hosted `@interopio/fdc3` library, or a string specifying the version of the `@interopio/fdc3` library to be used from the locally available packages in the `%LocalAppData%/interop.io/io.Connect Desktop/Desktop/assets` folder. */ fallback?: string; /** * Interval in milliseconds to wait for loading the `@interopio/fdc3` library. */ timeout?: number; [k: string]: any; }; /** * List of io.Connect app names in which the `@interopio/fdc3` library will be injected. */ allowed?: string[]; /** * List of io.Connect app names in which the `@interopio/fdc3` library won't be injected. */ blocked?: string[]; [k: string]: any; }; /** * If `true`, will allow users to navigate back (`CTRL + Left Arrow`) and forward (`CTRL + Right Arrow`) through the web page history. */ historyNavigationEnabled?: boolean; /** * Settings for opening new window instances of the same app in a cascade. */ cascade?: { /** * If `true`, will enable cascading windows. */ enabled?: boolean; /** * Offset in pixels for the cascaded window. */ offset?: number; }; /** * Logging level for the console. */ consoleLogLevel?: string; syncTitleWithDocumentTitle?: boolean | "preserveCustomTitle"; /** * Controls the behavior of the browser `window.open()` method. Child windows opened with the browser native `window.open()` method can be opened in the default browser, in io.Connect Windows, or can be prevented from opening altogether. */ nativeWindowOpen?: ("off" | "window" | "browser") | { /** * Must be set to `"window"`. */ mode: "window"; /** * If `true`, will prevent child windows from being closed when their parent is closed. */ outlivesOpener?: boolean; /** * Settings for grouping the newly opened child window with the parent window. The child window can be snapped on any side of the parent window, or can be added to its tab group, provided that both windows are io.Connect tab windows. */ grouping?: { /** * If `true`, will add the new child window to the tab group of the parent. Valid only when both the parent and the child are io.Connect tab windows. */ addToTabGroup?: boolean; /** * If `true`, the child window will be snapped to the parent window. To specify a relative direction for the snapped window, use the `"snappingOptions"` object. If no direction is specified, the child window will be snapped to the right side of the parent window. */ snap?: boolean; /** * Options for snapping the child window to the parent window. */ snappingOptions?: { /** * Direction (bottom, top, left or right) for positioning the child window relatively to the parent window. Considered only if `"snap"` is set to `true`. */ direction?: "bottom" | "top" | "left" | "right"; [k: string]: any; }; [k: string]: any; }; }; /** * Configuration options for windows opened as io.Connect Windows (i.e. when `"nativeWindowOpen"` is set to `"window"`) using the browser `window.open()` method. The available window options are identical to the ones used in the `io.windows.open()` method. */ nativeWindowOpenOptions?: { [k: string]: any; }; /** * If `true`, windows in a window group will contain an "Extract" that allows the user to extract them from the group. */ allowExtract?: boolean; /** * If `true`, the windows will contain a "Sticky" button that allows the user to set their stickiness. */ showStickyButton?: boolean; /** * If `true`, the windows will contain a "Feedback" button that opens the Feedback Form. */ showFeedbackButton?: boolean; /** * If `true`, the windows will contain a "Clone" button that allows the user to clone a window with its current state. */ showCloneButton?: boolean; /** * If `true` and the Channel Selector is visible (Channels are enabled), the users won't be able to click on the Channel Selector and change the current Channel. */ readOnlyChannelSelector?: boolean; /** * Settings for Performance Metrics. These metrics provide information about memory usage and statistics related to web app resources and navigation extracted from the underlying Chromium browser. */ pagePerformanceMetric?: { /** * If `true`, will enable Performance Metrics. */ enabled: boolean; /** * Interval in milliseconds at which to publish the generated metrics. */ publishInterval?: number; /** * Interval in milliseconds after which the initial data will be published. */ initialPublishTimeout?: number; }; /** * Settings for searching in web apps. */ search?: { /** * If `true`, will enable searching in web apps with `CTRL + F`. */ enabled?: boolean; }; /** * Settings for printing the window web page as a PDF file. */ printToPdfSettings?: { /** * If `true`, will enable printing to a PDF file. */ enabled?: boolean; /** * If `true`, will auto save the PDF file. If `false`, a system dialog will appear asking the user where to save the file. */ autoSave?: boolean; /** * If `true`, will open automatically the directory where the file was saved. */ autoOpenPath?: boolean; /** * If `true`, will open the downloaded file after the download is completed. */ autoOpen?: boolean; /** * The default directory where PDF files will be saved. */ fullPath?: string; /** * If `true`, will use `CTRL + P` by default to print to a PDF file. */ usePrintShortcutKey?: boolean; /** * Header and footer for the PDF. */ headerFooter?: { /** * Title to be printed in the header and the footer.. */ title?: string; /** * URL to be printed in the header and the footer. */ url?: string; }; /** * If `true`, will print to PDF in landscape mode. If `false`, will print to PDF in portrait mode. */ landscape?: boolean; /** * Specifies the type of margins to use. Use `0` for default margin, `1` for no margin, and `2` for minimum margin. */ marginsType?: number; /** * The page ranges to print. */ pageRanges?: { /** * Index of the first page to print (0-based). */ from?: number; /** * Index of the last page to print (inclusive, 0-based). */ to?: number; }[]; /** * Page size in inches or in standardized sizes such as A3, A4, Letter, Legal, etc. */ pageSize?: { /** * Width in inches. */ width?: number; /** * Height in inches. */ height?: number; } | ("A3" | "A4" | "A5" | "Legal" | "Letter" | "Tabloid"); /** * If `true`, will print the page background. */ printBackground?: boolean; /** * If `true`, will print only the currently selected section of the page. */ printSelectionOnly?: boolean; /** * The scale factor of the web page. Can range from 0 to 100. */ scaleFactor?: number; }; /** * Settings for printing a web page. */ print?: { /** * If `true`, will enable printing. */ enabled?: boolean; /** * If `true`, printed copies will be collated. */ collate?: boolean; /** * If `true`, will print the page in color. Otherwise, in grayscale. */ color?: boolean; /** * The number of copies to print. */ copies?: number; /** * Sets the printer device name to use. Must be the system-defined name and not the user-friendly name. */ deviceName?: string; /** * Printing resolution. */ dpi?: { /** * Horizontal resolution in DPI. */ horizontal?: number; /** * Vertical resolution in DPI. */ vertical?: number; }; /** * Setting for duplex printing. */ duplexMode?: "longEdge" | "shortEdge" | "simplex"; /** * String that will be printed as a footer on each page. */ footer?: string; /** * String that will be printed as a header on each page. */ header?: string; /** * If `true`, will print the page in landscape mode. If `false`, will print the page in portrait mode. */ landscape?: boolean; /** * Settings for the margins of the printed page. */ margins?: { /** * Bottom margin in pixels for the printed page. */ bottom?: number; /** * Left margin in pixels for the printed page. */ left?: number; /** * Predefined margin type. If you choose `"custom"`, you must also set `"top"`, `"bottom"`, `"left"`, and `"right"`. */ marginType?: "custom" | "default" | "none" | "printableArea"; /** * Right margin in pixels for the printed page. */ right?: number; /** * Top margin in pixels for the printed page. */ top?: number; }; /** * The page ranges to print. */ pageRanges?: { /** * Index of the first page to print (0-based). */ from?: number; /** * Index of the last page to print (inclusive, 0-based). */ to?: number; }[]; /** * Page size in inches or in standardized sizes such as A3, A4, Letter, Legal, etc. */ pageSize?: { /** * Width in inches. */ width?: number; /** * Height in inches. */ height?: number; } | ("A3" | "A4" | "A5" | "Legal" | "Letter" | "Tabloid"); /** * The number of pages to print per sheet. */ pagesPerSheet?: number; /** * If `true`, will print the page background. */ printBackground?: boolean; /** * The scale factor of the web page. Can range from 0 to 100. */ scaleFactor?: number; /** * If `true`, won't ask the user for print settings. */ silent?: boolean; }; /** * If `true`, the user won't be able to refresh windows by pressing `F5`. */ disableRefreshOnF5?: boolean; /** * Settings for preload scripts that will be executed before the actual web app is loaded and before each `